前言:
在计算机视觉方向,数据增强的本质是人为地引入人视觉上的先验知识,可以很好地提升模型的性能,目前基本成为模型的标配。最近几年逐渐出了很多新的数据增强方法,在本文将对数据增强做一个总结。
本文介绍了数据增强的作用,数据增强的分类,数据增强的常用方法,一些特殊的方法,如Cutout,Random Erasing,Mixup,Hide-and-Seek,CutMix,GridMask,FenceMask和KeepAugment等方法,还介绍了一些基于多样本的增强方法,如SMOTE, mosaic和SamplePairing。
值得一提的是,在这些论文中,几乎每一篇都使用CNN可视化方法来证明其增强方法的有效性,在某种程度上来说也是为了增加工作量和字数。对CNN可视化方法感兴趣的读者可在CV技术指南中阅读这系列总结文章。
《CNN可视化技术总结》
1. 避免过拟合。当数据集具有某种明显的特征,例如数据集中图片基本在同一个场景中拍摄,使用Cutout方法和风格迁移变化等相关方法可避免模型学到跟目标无关的信息。
2. 提升模型鲁棒性,降低模型对图像的敏感度。当训练数据都属于比较理想的状态,碰到一些特殊情况,如遮挡,亮度,模糊等情况容易识别错误,对训练数据加上噪声,掩码等方法可提升模型鲁棒性。
3. 增加训练数据,提高模型泛化能力。
4. 避免样本不均衡。在工业缺陷检测方面,医疗疾病识别方面,容易出现正负样本极度不平衡的情况,通过对少样本进行一些数据增强方法,降低样本不均衡比例。
根据数据增强方式,可分为两类:在线增强和离线增强。这两者的区别在于离线增强是在训练前对数据集进行处理,往往能得到多倍的数据集,在线增强是在训练时对加载数据进行预处理,不改变训练数据的数量。
离线增强一般用于小型数据集,在训练数据不足时使用,在线增强一般用于大型数据集。
比较常用的几何变换方法主要有:翻转,旋转,裁剪,缩放,平移,抖动。值得注意的是,在某些具体的任务中,当使用这些方法时需要主要标签数据的变化,如目标检测中若使用翻转,则需要将gt框进行相应的调整。
比较常用的像素变换方法有:加椒盐噪声,高斯噪声,进行高斯模糊,调整HSV对比度,调节亮度,饱和度,直方图均衡化,调整白平衡等。
这些常用方法都比较简单,这里不多赘述。
该方法来源于论文《Improved Regularization of Convolutional Neural Networks with Cutout》
在一些人体姿态估计,人脸识别,目标跟踪,行人重识别等任务中常常会出现遮挡的情况,为了提高模型的鲁棒性,提出了使用Cutout数据增强方法。该方法的依据是Cutout能够让CNN更好地利用图像的全局信息,而不是依赖于一小部分特定的视觉特征。
做法:对一张图像随机选取一个小正方形区域,在这个区域的像素值设置为0或其它统一的值。注:存在50%的概率不对图像使用Cutout。
效果图如下:
官方代码:
https://github.com/uoguelph-mlrg/Cutout
该方法来源于论文《Random Erasing Data Augmentation》
这个方法有点类似于Cutout,这两者同一年发表的。与Cutout不同的是,Random Erasing掩码区域的长宽,以及区域中像素值的替代值都是随机的,Cutout是固定使用正方形,替代值都使用同一个。
具体算法如下:
其效果图如下:
官方代码:
https://github.com/zhunzhong07/Random-Erasing
该方法来源于论文《mixup: BEYOND EMPIRICAL RISK MINIMIZATION》
主要思想是将在数据集中随机选择两张图片按照一定比例融合,包括标签值。在论文中给出了代码,看一眼代码即可很好的理解。
效果图如下:
一张海上帆船与熊猫的融合。
官方代码:
https://github.com/facebookresearch/mixup-cifar10
该方法来自论文《Hide-and-Seek: A Data Augmentation Technique for Weakly-Supervised Localization and Beyond》
其主要思想就是将图片划分为S x S的网格,每个网格按一定的概率(0.5)进行掩码。其中不可避免地会完全掩码掉一个完整的小目标。当这种思想用于行为识别时,做法是将视频帧分成多个小节,每一小节按一定的概率进行掩码。
注:论文提到掩码所使用的替代值会对识别有一定的影响,经过一些理论计算,采用整个图像的像素值的均值的影响最小。
在CNN可视化技术总结中,我们提