数据增强

1 什么是数据增强?

来自 <https://www.infoq.cn/article/kyXx3sRKNsdFgqapv2Gw?utm_source=rss&utm_medium=article>

数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。

 

比如上图,第1列是原图,后面3列是对第1列作一些随机的裁剪、旋转操作得来。

 每张图对于网络来说都是不同的输入,加上原图就将数据扩充到原来的10倍。假如我们输入网络的图片的

分辨率大小是256×256,若采用随机裁剪成224×224的方式,那么一张图最多可以产生32×32张不同的图,

数据量扩充将近1000倍。虽然许多的图相似度太高,实际的效果并不等价,但仅仅是这样简单的一个操作,效果已经非凡了。

 如果再辅助其他的数据增强方法,将获得更好的多样性,这就是数据增强的本质。

 数据增强可以分为,有监督的数据增强和无监督的数据增强方法。其中有监督的数据增强又可以分为单样本数据增强

和多样本数据增强方法,无监督的数据增强分为生成新的数据和学习增强策略两个方向。

2 有监督的数据增强

有监督数据增强,即采用预设的数据变换规则,在已有数据的基础上进行数据的扩增,包含单样本数据增强和多样本

数据增强,其中单样本又包括几何操作类,颜色变换类。

 2.1. 单样本数据增强

 所谓单样本数据增强,即增强一个样本的时候,全部围绕着该样本本身进行操作,包括几何变换类,颜色变换类等。

 (1) 几何变换类

 几何变换类即对图像进行几何变换,包括翻转,旋转,裁剪,变形,缩放等各类操作,下面展示其中的若干个操作。

  

 

 变形缩放:

 翻转操作和旋转操作,对于那些对方向不敏感的任务,比如图像分类,都是很常见的操作,在 caffe 等框架中翻转对应的就是 mirror 操作

 翻转和旋转不改变图像的大小,而裁剪会改变图像的大小。通常在训练的时候会采用随机裁剪的方法,在测试的时候选择裁剪中间部分

或者不裁剪。值得注意的是,在一些竞赛中进行模型测试时,一般都是裁剪输入的多个版本然后将结果进行融合,对预测的改进效果非常明显。

 以上操作都不会产生失真,而缩放变形则是失真的。

很多的时候,网络的训练输入大小是固定的,但是数据集中的图像却大小不一,此时就可以选择上面的裁剪成固定大小输入或者缩放到网络

的输入大小的方案,后者就会产生失真,通常效果比前者差。

(2) 颜色变换类

上面的几何变换类操作,没有改变图像本身的内容,它可能是选择了图像的一部分或者对像素进行了重分布。如果要改变图像本身

的内容,就属于颜色变换类的数据增强了,常见的包括噪声、模糊、颜色变换、擦除、填充等等。

基于噪声的数据增强就是在原来的图片的基础上,随机叠加一些噪声,最常见的做法就是高斯噪声。更复杂一点的就是在面积大小

可选定、位置随机的矩形区域上丢弃像素产生黑色矩形块,从而产生一些彩色噪声,以 Coarse Dropout 方法为代表,甚至还可以对

图片上随机选取一块区域并擦除图像信息。

 

                       添加 Coarse Dropout 噪声

颜色变换的另一个重要变换是颜色扰动,就是在某一个颜色空间通过增加或减少某些颜色分量,或者更改颜色通道的顺序。

 

 几何变换类,颜色变换类的数据增强方法细致数还有非常多,推荐给大家一个 git 项目:

https://github.com/aleju/imgaug

预览一下它能完成的数据增强操作吧。

 

 

4 思考

数据增强的本质是为了增强模型的泛化能力,那它与其他的一些方法比如 dropout,权重衰减有什么区别?

(1) 权重衰减,dropout,stochastic depth 等方法,是专门设计来限制模型的有效容量的,用于减少过拟合,

这一类是显式的正则化方法。研究表明这一类方法可以提高泛化能力,但并非必要,且能力有限,而且参数高度依赖于网络结构等因素。

(2) 数据增强则没有降低网络的容量,也不增加计算复杂度和调参工程量,是隐式的规整化方法。实际应用中更有意义,所以我们常说,数据至上。

posted @ 2019-11-27 16:39  小雨点1206  Views(2124)  Comments(0Edit  收藏  举报