概念理解
数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。
必要性解决数据不足的问题,为了获得更多的数据,我们只要对现有的数据集进行微小的改变。比如旋转(flips)、移位(translations)、旋转(rotations)等微小的改变。我们的网络会认为这是不同的图片。
数据增强可以分为,有监督的数据增强和无监督的数据增强方法。其中有监督的数据增强又可以分为单样本数据增强和多样本数据增强方法,无监督的数据增强分为生成新的数据和学习增强策略两个方向。
方法总结
有监督数据增强,即采用预设的数据变换规则,在已有数据的基础上进行数据的扩增,包含单样本数据增强和多样本数据增强,其中单样本又包括几何操作类,颜色变换类。
所谓单样本数据增强,即增强一个样本的时候,全部围绕着该样本本身进行操作,包括几何变换类,颜色变换类等。
(1) 几何变换类
几何变换类即对图像进行几何变换,包括翻转,旋转,裁剪,变形,缩放等各类操作,下面展示其中的若干个操作。
翻转操作和旋转操作,对于那些对方向不敏感的任务,比如图像分类,都是很常见的操作,在caffe等框架中翻转对应的就是mirror操作。
翻转和旋转不改变图像的大小,而裁剪会改变图像的大小。通常在训练的时候会采用随机裁剪的方法,在测试的时候选择裁剪中间部分或者不裁剪。值得注意的是,在一些竞赛中进行模型测试时,一般都是裁剪输入的多个版本然后将结果进行融合,对预测的改进效果非常明显。
以上操作都不会产生失真,而缩放变形则是失真的。
很多的时候,网络的训练输入大小是固定的,但是数据集中的图像却大小不一,此时就可以选择上面的裁剪成固定大小输入或者缩放到网络的输入大小的方案,后者就会产生失真,通常效果比前者差。
(2) 颜色变换类
上面的几何变换类操作,没有改变图像本身的内容,它可能是选择了图像的一部分或者对像素进行了重分布。如果要改变图像本身的内容,就属于颜色变换类的数据增强了,常见的包括噪声、模糊、颜色变换、擦除、填充等等。
基于噪声的数据增强就是在原来的图片的基础上,随机叠加一些噪声,最常见的做法就是高斯噪声。更复杂一点的就是在面积大小可选定、位置随机的矩形区域上丢弃像素产生黑色矩形块,从而产生一些彩色噪声,以Coarse Dropout方法为代表,甚至还可以对图片上随机选取一块区域并擦除图像信息。
颜色变换的另一个重要变换是颜色扰动,就是在某一个颜色空间通过增加或减少某些颜色分量,或者更改颜色通道的顺序
推荐用这个做几何变换和颜色变换:https://github.com/aleju/imgaug
https://blog.csdn.net/Torres_10/article/details/86681547
https://zhuanlan.zhihu.com/p/41679153
数据增强的本质是为了增强模型的泛化能力,那它与其他的一些方法比如dropout,权重衰减有什么区别?
(1) 权重衰减,dropout,stochastic depth等方法,是专门设计来限制模型的有效容量的,用于减少过拟合,这一类是显式的正则化方法。研究表明这一类方法可以提高泛化能力,但并非必要,且能力有限,而且参数高度依赖于网络结构等因素。
(2) 数据增强则没有降低网络的容量,也不增加计算复杂度和调参工程量,是隐式的规整化方法。实际应用中更有意义,所以我们常说,数据至上。
我们总是在使用有限的数据来进行模型的训练,因此数据增强操作是不可缺少的一环。从研究人员手工定义数据增强操作,到基于无监督的方法生成数据和学习增强操作的组合,这仍然是一个开放的研究领域,感兴趣的同学可以自行了解更多。