改变训练的图像训练neural network

我目前正试图制定一个计划,根据其外观区分腐烂的橙子和食用橙子。 为了做到这一点,我正计划使用卷积neural network来训练腐烂的橙子和普通的橙子。 经过一番search,我只能find约一个数据库。 黑色背景上的150个橙子和150个普通橙子( http://www.cofilab.com/downloads/ )。 显然,一个机器学习模式将需要至less几千个桔子才能达到90%左右的精度。 但是,我可以通过某种方式改变这150个橙子来制作更多的橘子照片吗? 通过改变,我的意思是在柑橘类水果上添加不同的橙色色调,以形成“不同的橙色”。 这是否是训练neural network的有效方法?

这是一个很好的方法来增加你的date数量。 你会做什么取决于你的数据。 例如,如果您正在训练从传感器获取的数据,则可能需要向训练数据添加一些噪音,以便增加数据集。 毕竟,以后可能会有一些噪音来自传感器。

假设你将在图像上进行训练,这是一个非常好的github存储库,提供了使用这些技术的手段。 这个python库可以帮助你增加机器学习项目的图像。 它将一组input图像转换成新的,更大的一组稍微变化的图像。 链接: https : //github.com/aleju/imgaug

特征:

  • 大多数标准的增强技术可用。

  • 可以将技术应用于图像上的图像和关键点/地标。 在实验开始时定义一次扩增序列,然后应用多次。

  • 为每个增强定义灵活的随机范围,例如,“将每个图像旋转-45到45度之间的值”或“通过从正态分布N(0,5.0)采样的值旋转每个图像”。

  • 轻松地将所有随机范围转换为确定性值,以完全相同的方式(例如图像及其热图)增加不同批次的图像。

在这里输入图像说明

数据增强是你在找什么。 在你的情况下,你可以做不同的事情:

  1. 应用filter来获得稍微不同的图像,如前所述,您可以使用高斯模糊。

  2. 切橙色,把它放在不同的背景。

  3. 用不同比例因子来缩放橙子。

  4. 旋转图像。

  5. 创造合成腐烂的橙子。

  6. 混合前面提到的所有不同的组合。 借助这种增强function,您可以轻松创build数千种不同的桔子。

我做了一个像12.000图像的数据集,我可以创build630.000个样本

这确实是增加数据集的好方法。 例如,您可以将高斯模糊应用于图像。 他们会变得模糊,但不同于原来的。 您也可以反转图像。 或者,在最后的情况下,寻找新的图像,并应用引用的技术。

数据增强是提高训练集的好方法,但仍然不足以训练一个深层的networking,因为它有可能会过度训练。 你应该考虑一下域适应,在这里你需要一个像imagenet数据集一样训练的预训练模型,并对你的问题进行微调。 由于您只需要学习用于分类用例的参数,就可以用相对较less的培训数据获得较高的准确度。 我已经在这里主持了这个技术的分类演示。 试试看你的数据集,看看是否有帮助。 演示会照顾预训练模型以及您将上传的数据集的数据增强。