神经网络的思想是它们不需要太多预处理,因为繁重的工作是由负责学习特征的算法完成的。
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之间的随机数(对数均匀)
- 翻转:是或否(bernoulli)
- 剪切:随机,角度在-20°和20°之间(均匀)
- 拉伸:拉伸因子在1 / 1.3到1.3之间的随机数(对数均匀)
您可以在“数据科学”碗图像上查看结果。
预处理图像
相同图像的增强版本
-其他技术
这些将处理其他图像属性(例如照明),并且已经与主要算法相关,更像是简单的预处理步骤。查看以下内容的完整列表:UFLDL教程