《深度学习之图像识别:核心技术与案例实战》 ——3.3 数据增强
3.3 数据增强
由于我们获取的数据,往往不是最终需要的数据格式,并且数据本身常需要做预处理操作。在很多实际的项目中,难以有充足的数据来完成任务,而要保证完美地完成任务,有以下两件事情需要做好:
* 寻找更多的数据;
* 充分利用已有的数据进行数据增强。
什么是数据增强?数据增强也叫数据扩增,意思是在不实质性地增加数据的情况下,让有限的数据产生等价于更多数据的价值。
举个实际的例子,如图3.3和图3.4分别是原图和数据增强后的图。
图3.3中的猫是笔者家的猫,名叫言养墨,本节将会使用图3.3作为测试图,感谢它。
图3.3 原图 图3.4 数据增强示意图
图3.4是对图3.3做了一些随机的裁剪、旋转操作得来的,每张图对于网络来说都是不同的输入,加上原图这样就将数据扩充到了10倍。
假如我们输入网络的图片分辨率大小是256×256,若采用随机裁剪成224×224的方式,那么一张图最多可以产生32×32张不同的图,数据量扩充将近1000倍。虽然许多的图相似度太高,实际的效果并不等价,但仅仅是这样简单的一个操作,效果已经不同了。如果再辅助其他的数据增强方法,将获得更好的多样性,这就是数据增强的本质。数据增强可以分为有监督的数据增强和无监督的数据增强,其中,有监督的数据增强又可以分为单样本数据增强和多样本数据增强。
3.3.1 有监督数据增强
有监督数据增强,即采用固定的预设规则进行数据的扩增,包含单样本数据增强和多样本数据增强,其中,单样本又包括几何操作类和颜色变换类。
1.单样本数据增强
所谓单样本数据增强,即增强一个样本的时候全部围绕着该样本本身进行操作,包括几何变换类和颜色变换类等。
(1)几何变换类
最常见的莫过于翻转与旋转,翻转包括水平翻转和垂直翻转,旋转则是将图像顺时针或逆时针旋转一定角度,如图3.5和图3.6所示。
图3.5 水平翻转和垂直翻转图 图3.6 随机旋转图
翻转操作和旋转操作对于那些对方向不敏感的任务,如图像分类,都是很常见的操作,在Caffe等框架中翻转对应的就是mirror操作。
翻转和旋转不改变图像的大小,而裁剪也是很常见的数据增强操作,同时会改变图像的大小,在Caffe中就是crop操作。通常在训练的时候会采用随机裁剪的方法,在测试的时候选择裁剪中间部分或者不裁剪。如图3.7所示为随机裁剪4次的效果图。
值得注意的是,在一些竞赛的测试中,一般都是裁剪输入多个版本然后将结果进行融合,对预测的改进效果非常明显。
以上操作都不会产生失真,而缩放变形也是另一种几何变换的数据增强操作,但却是失真的。如图3.8所示就是随机取图像的一部分,然后将其缩放到原图像尺度大小。
图3.7 随机裁剪图 图3.8 竖直方向与水平方向缩放变形图
很多时候,网络的训练输入大小是固定的,但是数据集中的图像却大小不一,此时就可以选择裁剪或者缩放到网络输入大小的方案,后者就会产生失真,通常效果比前者差。
如果将上面的操作融合起来,同时对图片做裁剪、旋转等多重操作,就是对图像应用了仿射变换。
(2)颜色变换类
前面的几何变换类操作没有改变图像本身的内容,而是选择了图像的一部分或者对像素进行了重分布。如果要改变图像本身的内容,就属于颜色变换类的数据增强了,常见的包括噪声、模糊、颜色变换和擦除等。
基于噪声的数据增强就是在原图片的基础上,随机叠加一些噪声,最常见的做法就是高斯噪声,如图3.9所示。
更复杂一点的就是在面积大小可选定、位置随机的矩形区域上丢弃像素产生黑色矩形块,从而产生一些彩色噪声,如图3.10所示为采用了Coarse Dropout方法。
甚至还可以在图片上随机选取一块区域并擦除图像信息,如图3.11所示。
对图像进行平滑或者锐化,也是一种可用的数据增强方法,常见的方法有高斯模糊,如图3.12所示。
颜色变换的另一个重要变换就是在不同的颜色空间中进行调整。如图3.13就是将图片从RGB颜色空间转换到HSV空间,增加或减少颜色分量后返回RGB颜色空间,这样的操作被称为颜色扰动。
图3.9 原图与添加随机高斯噪声图 图3.10 Coarse Dropout添加噪声图
图3.11 随机擦除法添加噪声图 图3.12 不同程度的高斯模糊图 图3.13 颜色扰动图
除此之外还可以对亮度做一些对比度增强,此处不再增加实验。相比于几何变换类,颜色增强类的方法对图像的改动大,因为在实际使用过程中可能有更好的多样性,但是也有可能适得其反。两者都是对单张图片进行操作,而未考虑多个样本之间的关系。
2.多样本数据增强
不同于单样本数据增强,多样本数据增强方法利用多个样本来产生新的样本,下面介绍几种方法。
(1)SMOTE方法
SMOTE即Synthetic Minority Over-sampling Technique方法,是通过人工合成新样本来处理样本不平衡的问题,从而提升分类器性能。
类不平衡现象是很常见的,它指的是数据集中各类别数量不近似相等。如果样本类别之间相差很大,会影响分类器的分类效果。假设小样本数据数量极少,如仅占总体的1%,则即使小样本被错误地全部识别为大样本,在经验风险最小化策略下的分类器识别准确率仍能达到99%,但由于没有学习到小样本的特征,实际分类效果就会很差。
SMOTE方法是基于插值的方法,它可以为小样本类合成新的样本,主要流程为:
① 定义好特征空间,将每个样本对应到特征空间中的某一点,根据样本不平衡比例确定好一个采样倍率N。
② 对每一个小样本类样本(x,y),按欧氏距离找出K个最近邻样本,从中随机选取一个样本点,假设选择的近邻点为(xn,yn)。在特征空间中样本点与最近邻样本点的连线段上随机选取一点作为新样本点,满足以下公式:
(xnew,ynew)=(x,y)+rand(0-1)·((xn-x),(yn-y)) (3.1)
③ 重复以上的步骤,直到大、小样本数量平衡。
(2)SamplePairing方法
SamplePairing方法的原理非常简单,从训练集中随机抽取两张图片分别经过基础数据增强操作(如随机翻转等)处理后,经像素以取平均值的形式叠加合成一个新的样本,标签为原样本标签中的一种。这两张图片甚至不限制为同一类别,这种方法对于医学图像比较有效。
经SamplePairing方法处理后可使训练集的规模从N扩增到N×N。实验结果表明,因SamplePairing数据增强操作可能引入不同标签的训练样本,导致在各数据集上使用SamplePairing方法训练的误差明显增加,而在验证集上误差则有较大幅度降低。
尽管SamplePairing方法的思路简单,性能上提升效果可观,符合奥卡姆剃刀原理,但遗憾的是可解释性不强。
(3)mixup方法
mixup是Facebook人工智能研究院和MIT在Beyond Empirical Risk Minimization中提出的基于邻域风险最小化原则的数据增强方法,它使用线性插值得到新样本数据。
令(xn,yn)是插值生成的新数据,(xi,yi)和(xj,yj)是训练集随机选取的两个数据,则数据生成方式如下:
(xn,yn)=λ(xi,yi)+(1-λ)(xj,yj) (3.2)
λ的取值范围介于0~1。提出mixup方法的研究者们做了个丰富的实验,实验结果表明可以改进深度学习模型在ImageNet数据集、CIFAR数据集、语音数据集和表格数据集中的泛化误差,降低模型对已损坏标签的记忆,增强模型对对抗样本的鲁棒性,以及训练生成的对抗网络的稳定性。
SMOTE、SamplePairing和mixup三者在思路上有相同之处,都是试图将离散样本点连续化来拟合真实样本分布,不过所增加的样本点在特征空间中仍位于已知小样本点所围成的区域内。如果能够在给定范围之外适当插值,也许能实现更好的数据增强效果。
- 点赞
- 收藏
- 关注作者
评论(0)