我有一个与图像识别相关的任务,任务是根据拍摄的各种产品的数千张照片来判断哪个产品。
例如,我们为10种不同的标签产品拍摄了短片(1分钟)。然后我们使用cv2.VideoCapture将它们转换为每个产品60s * 30fps~1,800帧。所以我们有大约18K不同的图像,10个产品都完美标记。
我正在考虑将图像转换为像素,并使用标签作为结果,所有像素作为收入使用机器学习(神经网络)将其转化为分类问题。但是,每张图像都是1080 * 1920,它为您提供200万像素,让您了解颜色(RGB,...等)。
我应该使用哪种标准技术?我可以做边缘检测,轮廓将它们裁剪成更小的尺寸但是然后所有的图片都会以不同的尺寸结束,不是吗?如果我将它全部缩放到相同的大小,那么这些都不会改变缩放变量图像识别问题吗?
我拥有这些产品,所以我可以拍摄尽可能多的照片。对不起,这更像是一个最佳实践或架构问题,而不是特定的编程问题。
这张照片缩小为较小,以便您可以了解我想要解决的问题。
答案 0 :(得分:3)
我强烈建议您使用Convolutional Neural Network(CNN)来解决这个10级图像分类问题,因为您可以为"产品"获取更多图像。 该管道将与使用CNN的图像分类问题非常类似,例如handwritten digit recognition。
对于你的问题,事实上,最好是裁剪"产品"然后将它们调整为相同的大小以训练CNN分类器。在识别(或预测)阶段,您还应该裁剪产品并将其调整到该大小,以将其提供给预先训练的分类器。此预处理程序的好处包括:
对于"比例变量图像识别"问题,事实上,如上所述,在识别阶段,您还应裁剪产品并将其调整到与培训CNN相同的大小,因此规模不会剧烈变化。另一方面,您可以在训练CNN之前执行data augmentation和more augmentation methods,以提高CNN对比例差异的稳健性。以下是面部数据扩充的示例,从左到右分别为normal
,zoom out
,zoom in
,rotate
,您可以将其设为更多:
希望我的表达清楚,并会帮助你。