CV图像数据增强的常用方法(学习笔记)
在查找了多篇数据增强方法研究综述文献和CSDN博客,将几种常用的数据增强方法总结如下
[1]朱晓慧,钱丽萍,傅伟.图像数据增强技术研究综述[J].软件导刊,2021,20(05):230-236.
[2]李永盛,何佳洲,刘义海,赵国清.基于图像检测识别的数据增强技术[J].舰船电子对抗,2021,44(01):66-70.
目录
1.引言
数据增强:
通过多年研究表明,样本数量的多少直接影响着模型识别效果。当数据集较少时,训练得到模型容易出现过拟合现象,导致测试性能降低。然而大量的数据样本有时是无法获取的,目前众多领域现有数据集大都存在规模较小、分布不均衡且采集、标注困难等突出问题,可以说数据的匮乏或昂贵往往是阻碍人工智能发展的直接原因。另外针对目前公开的一些大型数据集,比如ImageNet、MNIST、COCO 等,如果直接拿来用在实际的某个专业领域的图像应用中,其效果并不是特别理想。因此针对小样本数据集,如何通过有效的数据增强技术将原本数据集扩大几倍甚至几十倍,非常具有现实意义。
数据增强的意义:
- 1.丰富数据集本身,抑制过拟合问题:很好地解决了目前数据集存在的规模小、质量差、不均衡且难以获取等问题,从数量和性能方面丰富了数据集本身,这是数据增强对数据集起到的最直接最主要的作用。
- 2.提升模型的鲁棒性和泛化能力:通过数据增强获得大量结构合理、种类多样的数据,很好地满足了深度学习模型对数据集数量和质量的高要求,提高了模型的鲁棒性和泛化能力,促进相应分类器、检测器等准确率的提升。
- 3.拓展衍生价值:数据增强技术不断发展,现已广泛应用于众多领域。在数据至上的时代,从数据角度推动多个行业发展,这是数据增强的拓展延伸价值。
2.数据增强方法分类
对于在线增强和离线增强。这两者的区别在于离线增强是在训练前对数据集进行处理,往往能得到多倍的数据集,在线增强是在训练时对加载数据进行预处理,不改变训练数据的数量。离线增强一般用于小型数据集,在训练数据不足时使用,在线增强一般用于大型数据集。
常用分类方式是根据数据增强不同方式分为有监督数据增强和无监督数据增强,下面以这种分类方式展开分析。
2.1有监督的数据增强
2.1.1几何变换类
(1)翻转(Flip):包括水平翻转和垂直翻转,将图像的左右(或上下)部分以图像垂直(或水平)中轴线为中心进行镜像对换。
(2)旋转(Rotation):旋转操作是对翻转的进一步提升,一般以图像中心为旋转中心进行随机旋转(有正负角 度约束),以此获得更多形态的图像数据。
(3)裁剪(Crop):随机定义感兴趣区域,截取该区域图像并调整为原始图像尺寸。该操作相当于增加随机扰动, 可获取大批量的新数据。随机裁剪几乎是所有深度学习框架训练都会采用的数据增强方法。
(4)缩放变形(Zoom):按照设定的比例缩小或放大图像数据,但该操作会改变图像大小,存在失真问题。
上述方法都属于几何变换类数据增强方法,以此扩增数据最为简单、常用。但过多地使用这些变换方法会导致扩增的数据样本较为单一,且会产生大量无实际应用价值的数据样本。
2.1.2颜色变换类
若通过改变图像本身的内容实现增强,则属于颜色变换类数据增强,常见操作包括噪声、 模糊、颜色变换、随机擦除以及超像素法等。
(1)噪声:基于噪声的数据增强是指在原始图片基础上随机叠加一些噪声,主要包括高斯噪声、CoarseDropout、 SimplexNoiseAlpha 以及 FrequencyNoiseAlpha 等。
(2)像素变换方法:加椒盐噪声、高斯噪声,进行高斯模糊,调整HSV对比度,调节亮度,饱和度,直方图均衡化,调整白平衡等。
(3)随机擦除:顾名思义,该方法就是对图片上随机选取的一块区域进行图像信息擦除操作。
(4)随机颜色:对图像进行颜色抖动(color jittering),对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声。
下图是不同数据增强方法对精度的贡献情况,可以看出旋转和裁剪对精度的贡献更大些。分类任务鼓励几何形变以提升准确率,然而检测任务中需要谨慎因为检测网络对这类形变较为敏感。
2.1.3其他高效方法
(1)随机擦除(Random erasing):该方法被证明在多个CNN架构和不同领域中可以提升模型的性能和应对遮挡的鲁棒性,并且与随机裁剪、随机水平翻转(还有正则化方法)具有一定的互补性,综合应用他们,可以取得更好的模型表现,尤其是对噪声和遮挡具有更好的鲁棒性。
其具体算法细节是:对于数据集中的一张图片I,对它进行进行随机擦除的概率为P,则不进行擦除的概率为1-P。在进行随机擦除时,先在图片中随机选择一块区域 I e I~e I e,用随机值代替其像素值。假设一张图片大小为 W × H W×H W×H,其面积为 S = W × H S=W×H S=W×H,我们将擦除矩形区域的区域随机初始化为 S e S~e S e,限制 S e / S S~e/S S e/S在[ S l S~l S l, S h S~h S h]范围区间,将矩形框 I e I~e I e的长宽比( H e / W e H~e/W~e H e/W e)设置为 r e r~e r e,限制 r e r~e r e在[ r 1 r~1 r 1, r 2 r~2 r 2]范围间,由此可得出 H e H~e H e= S e × r e \sqrt{S~e×~re} S e× re, W e = S e / r e W~e=\sqrt{S~e/r~e} W e=S e/r e,在图像 I I I中任意选择一点 P = ( x e , y e ) P=(x~e,y~e) P=(x e,y e),如果 X e + W e < = W X~e+W~e<=W X e+W e<=Wand y e + H e < = H y~e+H~e<=H y e+H e<=H, 就令 I e = ( x e , y e , x e + W e , y e + H e ) I~e=(x~e,y~e,x~e+W~e,y~e+H~e) I e=(x e,y e,x e+W e,y e+H e),即得出区域 I e I~e I e,否则另选一点 P P P,直到选到 I e I~e I e,然后令 I e I~e I e里的每一个像素值替换成[0,255]的随机值。这样就完成了随机擦除。
以目标检测为例,随机擦除数据增强,分三种情况:
IRE:不区分目标框和背景区域,在整个图像来做擦除处理
ORE:区分目标框和背景区域,来做擦除处理,只在目标框内做擦除处理
I+ORE:区分目标框和背景区域,分别在目标框和整个图像来做擦除处理
实验表明综合两种方法的表现更好。
随机擦除和随机裁剪的区别:
另外随机擦除是与随机裁剪和随机水平翻转具有同样的竞争力,并具有一定的互补性。
(2)Cutout:常用于分类任务中,Cutout的出发点和随机擦除一样,也是模拟遮挡,目的是提高泛化能力,实现上比Random Erasing简单,随机选择一个固定大小的正方形区域,然后采用全0填充。
作者发现cutout区域的大小比形状重要,所以cutout只要是正方形就行,非常简单。具体操作是利用固定大小的矩形对图像进行遮挡,在矩形范围内,所有的值都被设置为0,或者其他纯色值。而且擦除矩形区域存在一定概率不完全在原图像中的(文中设置为50%)可延伸到图像外。
(3)Mixup:从训练样本中随机抽取两个样本进行简单的随机加权求和,同时样本的标签也对应加权求和,然后预测结果与加权求和之后的标签求损失,在反向求导更新参数。即使用线性插值的方法得到新的扩展数据,构建新的训练样本。
(xi , yi) and (xj , yj )是随机从训练数据集中抽取的两个样本and λ ∈ [0, 1]。
Pytorch下的python版本代码如下:
在目标检测任务中也可以使用Mixup进行数据增强,且效果较好。特别适用于异常的图片场景,比如“房间中的大象”,也有很好的检测效果。
(4)CoutMix:不只是简单地去除像素,而是用来自另一幅图像的块替换去除的区域,真实标签和填充块按像素数成比例混合。该方法结合了Cutout、Random erasing和Mixup三者的思想,做了一些中间调和的改变,同样是选择一个小区域,进行掩码,但掩码的方式却是将另一张图片的该区域覆盖到这里。
由上图可以看到对于分类任务三种方法对精度都有所提高,而对于回归任务CutMix的效果会更好一些。
综上所述介绍了一些数据增强的方法,但是对于数据增强的方法还有很多,比如GridMask、FenceMask、KeepAugment等等,感兴趣的朋友可以去查阅相关文献。
2.2无监督的数据增强
传统数据增强方法大多是有监督形式,但这类方法完全由使用者定义,不是所有任务都适合。故为了获得更好的训练模型,无监督方式引起了人们关注,目前主要从生成新数据和学习增强策略两个方向进行探究。
(1)生成数据:生成对抗网络(GAN)在数据增强领域已得到广泛应用。通过GAN能够生成高质量的数据样本,实现训练集样本规模的扩增,相比传统方法提高了识别的准确度。
(2)学习增强策略:学习增强策略不需要人工干预,而是通过模型自主学习出适合当前任务的数据增强方法,其中以近年来提出的 AutoAugment 和 PBA(Population Based Augmentation)方法最具代表性与创新性。