修改训练图像以训练神经网络。

34

我目前正在尝试制作一个程序,仅基于外观来区分烂橙和可食用的橙子。为此,我计划使用卷积神经网络来训练烂橙和正常橙子的数据。在一些搜索后,我只能找到一个黑色背景下约150个烂橙和150个正常橙子的数据库(http://www.cofilab.com/downloads/)。显然,机器学习模型需要至少几千个橙子才能实现90%以上的准确度。然而,我是否可以通过某种方式改变这些150个橙子,以生成更多的橙子照片?通过改变橘子上不同颜色的阴影来制作“不同的橙子”会是一种有效的神经网络训练方法吗?

4个回答

10

这是一种非常好的增加数据集数量的方法。具体做法取决于你的数据。例如,如果你正在训练来自传感器的数据,你可能想要向训练数据添加一些噪声,以便增加数据集。毕竟,你可以期望传感器后面会产生一些噪声。

假设你将在图像上进行训练,下面是一个非常好的Github存储库,提供了使用这些技术的方法。该Python库可以帮助您增强机器学习项目中的图像。它将一组输入图像转换为一组新的、稍微改变过的图像。 链接:https://github.com/aleju/imgaug

功能:

  • 提供大多数标准的增强技术。

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

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

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

输入图像描述


3

数据增强是你所需要的。在你的情况下,你可以做以下不同操作:

  1. 应用过滤器以获得略微不同的图像,如已经提到的,可以使用高斯模糊。

  2. 切割橙子并将其放在不同的背景中。

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

  4. 旋转图像。

  5. 创建合成垃圾橙子。

  6. 混合之前提到的所有不同组合。通过这种增强方式,您可以轻松创建成千上万个不同的橙子。

我曾经使用一组12000个图像进行类似的操作,最终可以创建出630000个样本。


2

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


0

数据增强是提高训练集的好方法,但仍然不足以单独训练深度网络,因为可能会过拟合。您应该考虑领域自适应,其中您可以采用预训练模型(如在imagenet数据集上训练的inception),并对其进行微调以解决您的问题。由于您只需要学习分类您的用例所需的参数,因此即使可用的训练数据相对较少,也有可能实现良好的准确性。我已经在这里链接展示了使用这种技术进行分类的演示。尝试使用您的数据集并查看它是否有所帮助。演示将处理预训练模型以及您上传的数据集的数据增强。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接