改变训练图像以训练神经网络
Posted
技术标签:
【中文标题】改变训练图像以训练神经网络【英文标题】:Altering trained images to train neural network 【发布时间】:2017-05-28 06:33:13 【问题描述】:我目前正在尝试制作一个程序,仅根据外观来区分腐烂的橙子和可食用的橙子。为此,我计划使用卷积神经网络对烂橙子和正常橙子进行训练。经过一番搜索,我只能找到一个大约的数据库。黑色背景上的 150 个烂橙子和 150 个普通橙子 (http://www.cofilab.com/downloads/)。显然,机器学习模型至少需要几千个橙子才能达到 90% 以上的准确度。但是,我可以以某种方式更改这 150 个橙子以生成更多橙子照片吗?通过改变,我的意思是在柑橘类水果上添加不同深浅的橙色来制作“不同的橙色”。这会是训练神经网络的有效方法吗?
【问题讨论】:
【参考方案1】:这是增加约会次数的好方法。您将做什么取决于您的数据。例如,如果您正在对从传感器获得的数据进行训练,您可能希望在训练数据中添加一些噪声,以便增加数据集。毕竟,您可以预料到稍后传感器会发出一些噪音。
假设您将在图像上对其进行训练,这里有一个非常好的 github 存储库,它提供了使用这些技术的方法。这个 Python 库可帮助您为机器学习项目增加图像。它将一组输入图像转换为一组新的、更大的、稍微改变的图像。 链接:https://github.com/aleju/imgaug
特点:
大多数可用的标准增强技术。
技术可以应用于图像和关键点/地标 图片。在开始时定义一次增强序列 实验,然后多次应用。
为每个增强定义灵活的随机范围,例如“旋转 每个图像由 -45 到 45 度之间的值”或“旋转每个图像 图像由从正态分布 N(0, 5.0) 中采样的值"。
轻松将所有随机范围转换为确定性值 以完全相同的方式增加不同批次的图像 (例如图像及其热图)。
【讨论】:
【参考方案2】:数据增强正是您所寻找的。在你的情况下,你可以做不同的事情:
应用滤镜以获得略有不同的图像,正如前面所说,您可以使用高斯模糊。
剪下橘子,放在不同的背景中。
用不同的比例因子缩放橙子。
旋转图像。
制作合成的烂橙子。
混合前面提到的所有不同组合。通过这种增强,您可以轻松创建数千种不同的橙子。
我用 12000 张图像的数据集做了类似的事情,我可以创建 630000 个样本
【讨论】:
【参考方案3】:这确实是增加数据集的好方法。例如,您可以对图像应用高斯模糊。它们会变得模糊,但与原来的不同。您也可以反转图像。或者,在最后一种情况下,寻找新图像并应用所引用的技术。
【讨论】:
【参考方案4】:数据增强确实是提升训练集的好方法,但仍然不足以单独训练深度网络,因为它可能会过度拟合。您应该查看域适应,在其中采用预训练模型(例如在 imagenet 数据集上训练的 inception)并针对您的问题对其进行微调。由于您只需学习对用例进行分类所需的参数,因此可以使用相对较少的可用训练数据来实现良好的准确性。我已经使用这种技术here 主持了一个分类演示。用你的数据集试试看它是否有帮助。该演示负责预训练模型以及您将上传的数据集的数据增强。
【讨论】:
以上是关于改变训练图像以训练神经网络的主要内容,如果未能解决你的问题,请参考以下文章