数据增强也叫做数据扩增,就是在不实质上增加原始数据量的情况下,通过裁剪、旋转、缩放、对称等操作,在原有数据上产生更多的等价数据量作为深度学习的数据集。比如裁剪:对于一张256*256的图,裁剪成224*224的图片,可以产生32*32张不同的图片,数据量近似扩充了1000倍(实际情况可能因为图片相似度过高,打些折扣),如果再辅以其他手段,就会有更好的多样性。
数据增强可以分为:有监督的数据增强(又分为单样本和多样本的数据增强方法)和无监督的数据增强(分为生成新的数据和学习增强策略两个方向)。
一、有监督的数据增强
(1)有监督的数据增强,即需要有特定的数据变换规则,对于单样本,可以进行:几何变换类,如翻转(水平、垂直)、旋转(随机)、裁剪(随机)、变形、缩放等操作;颜色变换类,如噪声、模糊、颜色扰动、擦除、填充等。
需要注意的是:1)对于翻转和旋转操作,经常用于对方向不敏感的任务,比如图像分类。裁剪会改变图片的大小,缩放变形会使图片失真。2)通常情况下,网络的训练要求输入的大小固定,当数据集中的图像大小不一时,可以选择裁剪或缩放至网络要求的固定大小的方式,后者因为有失真,效果通常会比前者差。
基于噪声的数据增强就是在原来的图片基础上,随机叠加一些噪声,常用的如高斯噪声,也可以在面积大小选定、位置随机的矩形区域上去除像素产生黑色矩形框,从而产生一些彩色噪声,以Coarse Dropout方法为代表,也可以对图片上随机选定的一块区域擦除图像信息。
颜色变换就是在某一个颜色通道上,通过增加或减少 某些颜色分量,或者改变颜色通道的顺序。
颜色变换的git项目https://github.com/aleju/imgaug
2.多样本数据增强:就是利用多个样本来产生新的样本
(1)SMOTE是通过人工合成新样本来处理样本不平衡问题,从而提升分类器性能。
样本不平衡现象是指数据集中各类别的数据量不近似相等,样本类别之间相差较大时,会影响分类器的分类效果。假设小样本数据数量极小,分类器没有很好学习到小样本的特征,会导致分类效果很差。
SMOTE方法是基于插值的方法,为小样本类合成新的样本,主要流程是:1)定义一个特征空间,将每个样本对应到特征空间的某一点,根据样本不平衡比例确定一个采样倍率N;2)对每个小样本类中的样本(x,y),按欧式距离找出k个最近邻样本,在K个中随机选取一个样本点(xn,yn),在特征空间中样本点与最近邻点之间的连线段上随机选取一点作为新样本点,公式可表达为:
;3)重复前两个步骤,直到大小样本数量平衡。算法原理示意如下图:(python中,SMOTE算法已经封装到了imbalanced-learn库中)
(2)SamplePairing方法的做法是,从训练集中随机抽取两张图片,分别经过基础数据增强操作(如随机翻转等)处理后,经像素取平均值的形式叠加合成一个新的样本,标签为原样本标签中的一种,两张图片不限制为同一类别,对医学图像比较有效。示意如下:
经SamplePairing之后,可以训练集规模从N扩增到N*N,另外,这种抽样配对的方法可能引入不同标签的训练样本,导致在各数据集上使用该方法训练的误差比较明显,而在验证集上误差降低。思路简单、性能上提升效果好,但可解释性不强。
具体参考论文:Inoue H. Data Augmentation by Pairing Samples for Images Classification[J]. 2018
(3)mixup是基于邻域风险最小化原则的数据增强方法,它使用线性插值得到新样本数据。(xn,yn)是插值生成的新数据,(xi,yi)和(xj,yj)是训练集随机选取的两个数据,新数据的生成方式如下式,λ值介于0~1:
。该方法可以改进深度学习模型在ImageNet数据集、CIFAR数据集、语音数据集中的泛化误差,降低模型对已损坏标签的记忆,增强模型对抗样本的鲁棒性和训练生成对抗网络的稳定性。
上述三种多样本增强方式都是将离散样本点连续化来拟合真实数据的分布,所生成的样本点均位于特征空间中仍位于已知小样本点所围成的区域内,如果能够在给定范围之外适当插值,也许能够实现更好的数据增强效果。
二、无监督的数据增强
分为以下两类:
1、通过模型学习数据的分布,随机生成与训练数据集分布一致的图片,比如GAN生成对抗网络模型。
论文:Generative Adversarial Networks[J]. Advances in Neural Information Processing Systems, 2014, 3:2672-2680.
GAN(generative adversarial networks),包含生成网络G和判别网络D两个网络。基本原理是:G是一个生成图片的网络,接收随机的噪声z,通过噪声生成图片;D是一个判别网络,判别一张图片是不是“real”,还是G生成的图片。
2、通过模型,学习适合当前任务的数据增强方法,如AutoAugment。
论文:AutoAugment: Learning Augmentation Policies from Data.[J]. arXiv: Computer Vision and Pattern Recognition, 2018
AutoAugment的基本思路是使用增强学习从数据本身去寻找最佳的图像生成策略,先组合各种数据增强操作,测试效果,获得最佳效果的方式,对于不同的任务有不同的增强方法。
常用的翻转flipping、平移translations、加噪noise等操作可以使用python numpy、pyplot 、PIL等模块在图片像素矩阵上完成操作。
参考博客:https://blog.csdn.net/xjp_xujiping/article/details/102497316
https://blog.csdn.net/weixin_33924220/article/details/89618955