Opencv &引用;图像识别“;功能太多

Opencv &引用;图像识别“;功能太多,opencv,image-processing,machine-learning,scikit-learn,image-recognition,Opencv,Image Processing,Machine Learning,Scikit Learn,Image Recognition,我有一项与图像识别相关的任务,任务是根据为各种各样的产品拍摄的数千张照片来判断哪种产品 例如,我们为10种不同的标签产品拍摄了短片(1分钟)。然后我们使用cv2.VideoCapture将它们转换为每个产品60秒*30帧~1800帧。因此,我们有10种产品的约18K种不同的图像,所有产品都贴有完美的标签 我正在考虑将图像转化为像素,并使用标签作为结果,所有像素作为收入,使用机器学习(神经网络)将其转化为分类问题。然而,每幅图像都是1080*1920,这就给了你200万像素,更不用说颜色了(RGB

我有一项与图像识别相关的任务,任务是根据为各种各样的产品拍摄的数千张照片来判断哪种产品

例如,我们为10种不同的标签产品拍摄了短片(1分钟)。然后我们使用cv2.VideoCapture将它们转换为每个产品60秒*30帧~1800帧。因此,我们有10种产品的约18K种不同的图像,所有产品都贴有完美的标签

我正在考虑将图像转化为像素,并使用标签作为结果,所有像素作为收入,使用机器学习(神经网络)将其转化为分类问题。然而,每幅图像都是1080*1920,这就给了你200万像素,更不用说颜色了(RGB,…等等)

有什么我应该使用的标准技术吗?我可以做边缘检测,轮廓裁剪成更小的尺寸,但是所有的图片最终都会变成不同的尺寸,不是吗?如果我将其缩放为相同的大小,这难道不会改变缩放变量图像识别问题吗

我拥有这些产品,所以我可以照任意多的照片。抱歉,这更像是一个最佳实践或架构问题,而不是一个特定的编程问题

这是一张缩小到更小的图片,这样你们就可以知道我在试图解决什么问题


我强烈建议您使用来解决这10类图像分类问题,因为您可以为“产品”获取大量图像。 该管道将非常类似于使用CNN的图像分类问题,例如

对于你的问题,事实上,最好裁剪“产品”,然后将它们调整为相同的大小以训练CNN分类器。在识别(或预测)阶段,您还应该裁剪产品并将其调整到该大小,以便将其输入预先训练的分类器。此预处理过程的好处包括:

  • 大大降低了识别的难度,提高了准确率
  • 适当较小的图像大小需要较少的计算和内存消耗,而相应的分类器仍然可以具有竞争性(或相同)精度
对于“比例变化图像识别”问题,事实上,如上所述,在识别阶段,您还应该裁剪产品,并将其调整为与训练CNN相同的大小,以便比例不会发生剧烈变化。另一方面,您可以在训练CNN之前执行,以提高CNN对缩放方差的鲁棒性。下面是一个面部数据增强的示例,从左到右依次为
正常
缩小
放大
旋转
,您可以使其更精确:


希望我的表达清晰明了,能对您有所帮助。

我会尝试的第一件事是将每个图像作为一个单独的示例处理。所以你会认为自己每门课都有1000个例子。除此之外,我觉得你走的方向是对的。你说的“尺度变化图像识别问题”是什么意思?