图像增强会使性能变差

时间:2017-02-09 16:10:26

标签: tensorflow computer-vision deep-learning caffe keras

我正在开展图像分割项目,并一直在尝试采用图像增强技术来增加训练集大小。起初,我只是尝试使用水平翻转来使图像大小加倍,但我发现性能比不使用它更糟糕。是否有任何可以分享的见解。感谢。

3 个答案:

答案 0 :(得分:4)

所以基本上你需要回答一个重要的问题:翻转的图片是否是您网域中的有效图片?

  1. 如果不是 - 那么它可能会损害您的培训过程仅仅因为您为网络提供了无效输入,可能会在您的数据中了解您的网络虚假模式。翻转可能会伤害您的训练并不罕见 - 例如在徽标识别中,为了正确学习徽标,不要更改数据的方向非常重要。
  2. 如果是 - 那么可能会有很多不同的原因导致您的模型开始变得更糟。其中之一可能是它的容量太小而且无法了解数据中的所有模式。第二 - 你没有足够的例子 - 当你添加翻转的图像时,事实证明它实际上已经记住了你的训练案例。另一件事是,也许你在太短的时间内学会了它,并且将迭代次数设置为更大的值可能是一个好主意。

    有一件事是肯定的 - 由于您的翻转数据有效,您的模型并不能很好地概括。

答案 1 :(得分:0)

当您说数据扩充的性能较差时,您是否要在同一数据集中进行比较?

我只是犯了一个错误,那就是将经过训练的模型的准确性与经过增强的数据集上的数据增强进行了比较,而对经过训练的模型进行了常规数据集上的无数据增强。

我惊讶地发现数据增强的准确性更差。但是,当我比较没有扩充的数据集上的两个精度时,带有数据扩充的模型显示出比另一个更好的性能。

请务必牢记,对于模型而言,扩充数据集可能更难处理。因此,即使准确性不如以前,但在常规数据集上进行评估时,实际上可能会更高。

答案 2 :(得分:0)

图像增强是实现stretch your dataset的好方法,但是,正如您所展示的,这不是魔术。图像增强在一定程度上通过改变与模型的基础映射功能无关的图像特征(即图像亮度不应该与狗的存在相关)来工作,同时仍然使图像中的对象仍然可识别。

我认为,最简单的改进就是更改增强技术。尝试将图像缩放,裁剪,旋转,拉伸,调整亮度,对比度,添加噪点等,而不仅仅是水平翻转图像。这不仅会改变一种原始模式,还会改变原始图像。我为工作写的This blog经历了不同类型的增强及其作用,this library是我们更喜欢实现图像增强的方式。

不同的增强示例: 剪力 Shear Augmentation 噪声: Noise Augmentation 色彩空间: Color Space Augmentation

您总是会冒着过多地依靠扩充来增加模型大小的风险,无法适应训练数据集的模型,但是改变扩充技术将帮助您避免过度拟合。如果您有足够的资源,则没有什么能像新鲜的新数据那样工作了;如果您想获得超级幻想,可以研究生成性对抗网络,在该网络中,您基本上可以从头开始创建新数据。