神经网络的想法是它们几乎不需要预处理,因为繁重的工作是由负责学习特征的算法完成的。
2015 年数据科学碗的获胜者对他们的方法有很好的描述,所以这个答案的大部分内容来自:
用深度神经网络分类浮游生物。我建议你阅读它,特别是关于预处理和数据增强的部分。
- 调整图像大小
至于不同的尺寸、分辨率或距离,您可以执行以下操作。您可以简单地将每个图像的最大边重新缩放为固定长度。
另一种选择是使用 openCV 或 scipy。这将调整图像的大小,使其具有 100 列(宽度)和 50 行(高度):
resized_image = cv2.resize(image, (100, 50))
另一种选择是使用 scipy 模块,方法是:
small = scipy.misc.imresize(image, 0.5)
- 数据增强
尽管数量取决于数据集,但数据增强始终可以提高性能。如果您想增强数据以人为地增加数据集的大小,您可以在适用的情况下执行以下操作(例如,如果是房屋或人的图像,如果将它们旋转 180 度,它们将丢失所有信息,则不适用但如果你像镜子一样翻转它们,则不会):
- 旋转:随机,角度在 0° 到 360° 之间(均匀)
- 翻译:随机,在 -10 和 10 像素之间移动(均匀)
- 重新缩放:随机,比例因子在 1/1.6 和 1.6 之间(对数均匀)
- 翻转:是或否(伯努利)
- 剪切:随机,角度在 -20° 和 20° 之间(均匀)
- 拉伸:随机,拉伸因子在 1/1.3 和 1.3 之间(对数均匀)
您可以在数据科学碗图像上查看结果。
预处理图像
相同图像的增强版本
-其他技术
这些将处理其他图像属性,如照明,并且已经与主算法相关,更像是一个简单的预处理步骤。查看完整列表:UFLDL 教程