计算机视觉的数据增强方法总结

CV技术指南 2021-07-01

计算机视觉alt标签人工智能

2649 字丨阅读本文需 19 分钟

前言:

在计算机视觉方向,数据增强的本质是人为地引入人视觉上的先验知识,可以很好地提升模型的性能,目前基本成为模型的标配。最近几年逐渐出了很多新的数据增强方法,在本文将对数据增强做一个总结。

本文介绍了数据增强的作用,数据增强的分类,数据增强的常用方法,一些特殊的方法,如Cutout,Random Erasing,Mixup,Hide-and-Seek,CutMix,GridMask,FenceMask和KeepAugment等方法,还介绍了一些基于多样本的增强方法,如SMOTE, mosaic和SamplePairing。

值得一提的是,在这些论文中,几乎每一篇都使用CNN可视化方法来证明其增强方法的有效性,在某种程度上来说也是为了增加工作量和字数。对CNN可视化方法感兴趣的读者可在CV技术指南中阅读这系列总结文章。

《CNN可视化技术总结》

本文来源于公众号CV技术指南的技术总结系列。

更多内容请关注公众号CV技术指南,专注于计算机视觉的技术总结,最新技术跟踪。


数据增强的作用

1. 避免过拟合。当数据集具有某种明显的特征,例如数据集中图片基本在同一个场景中拍摄,使用Cutout方法和风格迁移变化等相关方法可避免模型学到跟目标无关的信息。

2. 提升模型鲁棒性,降低模型对图像的敏感度。当训练数据都属于比较理想的状态,碰到一些特殊情况,如遮挡,亮度,模糊等情况容易识别错误,对训练数据加上噪声,掩码等方法可提升模型鲁棒性。

3. 增加训练数据,提高模型泛化能力。

4. 避免样本不均衡。在工业缺陷检测方面,医疗疾病识别方面,容易出现正负样本极度不平衡的情况,通过对少样本进行一些数据增强方法,降低样本不均衡比例。


数据增强的分类

根据数据增强方式,可分为两类:在线增强和离线增强。这两者的区别在于离线增强是在训练前对数据集进行处理,往往能得到多倍的数据集,在线增强是在训练时对加载数据进行预处理,不改变训练数据的数量。

离线增强一般用于小型数据集,在训练数据不足时使用,在线增强一般用于大型数据集。


常用方法

比较常用的几何变换方法主要有:翻转,旋转,裁剪,缩放,平移,抖动。值得注意的是,在某些具体的任务中,当使用这些方法时需要主要标签数据的变化,如目标检测中若使用翻转,则需要将gt框进行相应的调整。

比较常用的像素变换方法有:加椒盐噪声,高斯噪声,进行高斯模糊,调整HSV对比度,调节亮度,饱和度,直方图均衡化,调整白平衡等。

这些常用方法都比较简单,这里不多赘述。


Cutout(2017)

该方法来源于论文《Improved Regularization of Convolutional Neural Networks with Cutout》

在一些人体姿态估计,人脸识别,目标跟踪,行人重识别等任务中常常会出现遮挡的情况,为了提高模型的鲁棒性,提出了使用Cutout数据增强方法。该方法的依据是Cutout能够让CNN更好地利用图像的全局信息,而不是依赖于一小部分特定的视觉特征。

做法:对一张图像随机选取一个小正方形区域,在这个区域的像素值设置为0或其它统一的值。注:存在50%的概率不对图像使用Cutout。

效果图如下:

官方代码:


Random Erasing(2017)

该方法来源于论文《Random Erasing Data Augmentation》

这个方法有点类似于Cutout,这两者同一年发表的。与Cutout不同的是,Random Erasing掩码区域的长宽,以及区域中像素值的替代值都是随机的,Cutout是固定使用正方形,替代值都使用同一个。

具体算法如下:

其效果图如下:

官方代码:


Mixup(2018)

该方法来源于论文《mixup: BEYOND EMPIRICAL RISK MINIMIZATION》

主要思想是将在数据集中随机选择两张图片按照一定比例融合,包括标签值。在论文中给出了代码,看一眼代码即可很好的理解。

效果图如下:

一张海上帆船与熊猫的融合。

官方代码:


Hide-and-Seek(2018)

该方法来自论文《Hide-and-Seek: A Data Augmentation Technique for Weakly-Supervised Localization and Beyond》

其主要思想就是将图片划分为S x S的网格,每个网格按一定的概率(0.5)进行掩码。其中不可避免地会完全掩码掉一个完整的小目标。当这种思想用于行为识别时,做法是将视频帧分成多个小节,每一小节按一定的概率进行掩码。

注:论文提到掩码所使用的替代值会对识别有一定的影响,经过一些理论计算,采用整个图像的像素值的均值的影响最小。

在CNN可视化技术总结中,我们提到CNN可视化具有提高方法可信度,增加工作量,增加字数的作用,这点在这篇论文中得到了很好的体现,论文使用了CAM和卷积核可视化等可视化方法来分析该算法的合理性。

《CNN可视化技术总结--卷积核可视化》

《CNN可视化技术总结--类可视化》

效果:

官方代码:


CutMix(2019)

该方法来源于《CutMix: Regularization Strategy to Train Strong Classififiers with Localizable Features》

该方法结合了Cutout、Random erasing和Mixup三者的思想,做了一些中间调和的改变,同样是选择一个小区域,进行掩码,但掩码的方式却是将另一张图片的该区域覆盖到这里。看图更能理解这种方法。

在理解上面这个图后,实现方式比较简单,公式如下:

关于这个掩码区域大小的设置,使用如下公式确定:

其中宽和高的大小始终满足后面这个等式。

效果如下:

官方代码:


GridMask(2020)

该方法来源于《GridMask Data Augmentation》

主要思想是对前几种方法的改进,由于前几种对于掩码区域的选择都是随机的,因此容易出现对重要部位全掩盖的情况。而GridMask则最多出现部分掩盖,且几乎一定会出现部分掩盖。使用的方式是排列的正方形区域来进行掩码。

具体实现是通过设定每个小正方形的边长,两个掩码之间的距离d来确定掩码,从而控制掩码细粒度。

效果如下:

官方代码:


FenceMask(2020)

该方法来源于《FenceMask: A Data Augmentation Approach for Pre-extracted Image Features》

该方法是对前面GridMask的改进,认为使用正方形的掩码会对小目标有很大的影响。因此提出了更好的形状,FenceMask具有更好的细粒度。

效果对比如下:


KeepAugment(2020)

该方法来源于《KeepAugment: A Simple Information-Preserving Data Augmentation Approach》

主要思想是对前几种方法中随机选择掩码区域的改进,通过得出Saliency map,分析出最不重要的区域,选择这个区域进行Cutout,或者分析出最重要区域进行CutMix。

saliency map区域的计算方式与类可视化的方法一致,通过计算回传梯度,获得每个像素值的梯度,从而确定每个像素值对类别的影响程度。而最重要区域和最不重要区域的划分是通过这个区域的所有梯度值之和大于或小于某个相应的阈值来确定。

具体如何计算saliency map请阅读《CNN可视化技术总结--类可视化》。

算法如下:(其中Selcetive-cut是使用Cutout, Selective-paste是使用CutMix)

效果如下:


其它的数据增强方法

RandAugment,FastAugment,AutoAugment这几种方式都是属于构造一个数据增强方式的集合,采用强化学习的方式搜索适合指定数据集的数据增强方法。这些方法的最大特点是成本大,需要的时间很长很长,因此这里不多介绍。

注:前面提到的那些方法,基本都是接近零成本,更具有普遍使用的特性,这里几种只适合贵族。

此外还有通过GAN来实现风格迁移等数据增强方式。


多样本数据增强方法

前面提到的方法除了CutMix和Mixup外,基本都属于单样本增强,此外还有多样本增强方法,主要原理是利用多个样本来产生新的样本。


SMOTE--该方法来自遥远的2002年。主要应用在小型数据集上来获得新的样本,实现方式是随机选择一个样本,计算它与其它样本的距离,得到K近邻,从K近邻中随机选择多个样本构建出新样本。之所以不提论文中的构建方式,是因为该方法并不是用于图像,但读者可自主设计出图像的构建方式。


Mosaic--该方法来源于YOLO_v4,原理是使用四张图片拼接成一张图片。这样做的好处是图片的背景不再是单一的场景,而是在四种不同的场景下,且当使用BN时,相当于每一层同时在四张图片上进行归一化,可大大减少batch-size。


SamplePairing--该方法的原理是从训练集中随机选择两张图片,经过几何变化的增强方法后,逐像素取平均值的方式合成新的样本。具体如下图所示:

总结

本文介绍了常用的数据增强方法,几种特殊的增强方法,几种多样本增强方法。

理论上来说,数据增强方法还应该包括对一些用于解决正负样本不均衡的方法,如hard negative example mining,focal loss等。

此外在网络中使用DropOut , DropConnect 和 DropBlock,也应该算是数据增强方法,因为它们与Cutout,Hide-and-Seek和GridMask等方法类似,同样是选择性丢弃一些数据。


更多内容请关注公众号CV技术指南,专注于计算机视觉的技术总结,最新技术跟踪。

注:在CV技术指南中回复“数据增强”可获取数据增强相关13篇论文。

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:CV技术指南
0

参与评论

登录后参与讨论 0/1000

为你推荐

加载中...