加入极市专业CV交流群,与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度 等名校名企视觉开发者互动交流!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~
在图像分类任务中,数据增广是一种常用的正则化方法,同时已成为提升模型性能所必不可少的步骤。从引领AI热潮的AlexNet到最近EfficientNet都可以看到数据增广的身影。数据增广的方法也由传统的裁剪、旋转、镜像等方式逐渐过渡到当前火热的AutoAug、RandAug等基于NAS搜索的数据增广方法。
以pytorch官方ImageNet训练中代码为例,如下所示。它基本上包含了CV中数据增广的几个比较关键的操作与节点:数据解析、数据尺寸变换、镜像变换、颜色空间变换、ToTensor、归一化等等。
train_dataset = datasets.ImageFolder(
traindir,
transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ColorJitter(brightness=0.4, contrast=0.4, saturation=0.4),
transforms.ToTensor(),
normalize,
transforms.RandomErasing()
]))
为更好的对数据增广方法进行介绍说明,我们可以将数据增广方法按照其作用位置、作用方式进行简单的分类如下:
本文介绍主要以ImageNet分类为例进行介绍,并假设最终输入到网络的数据维度为 。ImageNet的训练阶段,数据增广方式可以分为下面几个步骤:
在前述标准数据增广基础上,研究者又提出了诸多改进的增广策略,这些策略主要是插入到上述不同操作后,基于所处阶段,我们可以简单的将其划分为例三类:
为更好的说明与对比上述方法,以下图为例,对变换后的效果进行可视化对比(注:图片来源网络,如侵权可联系删除)。
在这里,图像变换特指针对RandCrop
后的图像进行的一些变换,主要包含:AutoAugment、Fast AutoAugment、RandAugment。当然还有其他方法,比如Faster AutoAugmeng、PBA等。但限于篇幅,这里仅对最知名的两种(AutoAugment与RandAugment)进行一些简单介绍与效果可视化。
paper:https://arxiv.org/abs/1805.09501v1
code:https://github.com/DeepVoltaire/AutoAugment
在AutoAugment之前,无论是图像分类还是目标检测,抑或图像复原、语义分割所采用的数据增广方式均为人工设计,主要以传统方式为主。而AutoAugment则首个采用搜索技术进行数据增广的方法。
AutoAugment 是在一系列图像增广子策略的搜索空间中通过搜索算法找到的适合特定数据集的图像增广方案。针对 ImageNet 数据集,最终搜索出来的数据增广方案包含 25 个子策略组合,每个子策略中都包含两种变换:针对每幅图像都随机的挑选一个子策略组合,然后以一定的概率来决定是否执行子策略中的每种变换。AutoAugment处理后的效果如下所示。
paper: https://arxiv.org/pdf/1909.13719.pdf
code: https://github.com/heartInsert/randaugment
由于AutoAugment
的搜索方法比较暴力,直接在数据集上搜索针对该数据集的最优策略,这就导致了它的计算量很大。RandAugment
一文作者认为AutoAugment有以下两个缺陷:
在 RandAugment
中,作者提出了一种随机增广的方式,不再像 AutoAugment
中那样使用特定的概率确定是否使用某种子策略,而是所有的子策略都会以同样的概率被选择到,论文中的实验也表明这种数据增广方式即使在大模型的训练中也具有很好的效果。RandAugment处理后的效果如下所示。
注:除了上述所提到的两种基于搜索的到的数据增广方法外,还有其他基于NAS的数据增广方式,比如:
图像裁剪类主要是对Transpose
后的 224 的图像进行一些裁剪,并将裁剪区域的像素值置为特定的常数(默认为0),主要包括:
Paper: https://arxiv.org/abs/1708.04552
Code: https://github.com/uoguelph-mlrg/Cutout
从某种程度上来讲,Cutout 可以理解为 Dropout 的一种扩展操作,不同的是 Dropout 是对图像经过网络后生成的特征进行遮挡,而 Cutout 是直接对输入的图像进行遮挡。经Cutout处理后的效果如下所示。
Paper: https://arxiv.org/pdf/1708.04896.pdf
Code: https://github.com/zhunzhong07/Random-Erasing
RandomErasing
与 Cutout
方法类似,同样是为了解决训练出的模型在有遮挡数据上泛化能力较差的问题,作者在论文中也指出,随机裁剪的方式与随机水平翻转具有一定的互补性。与Cutout
不同的是,在RandomErasing
中,图片以一定的概率接受该种预处理方法,生成掩码的尺寸大小与长宽比也是根据预设的超参数随机生成。注:笔者印象中,RandErasing还会添加噪声,一定程度上提升了模型的鲁棒性。
Paper: https://arxiv.org/pdf/1811.02545.pdf
Code: https://github.com/kkanshul/Hide-and-Seek
HideAndSeek
论文将图像分为若干块区域(patch),对于每块区域,都以一定的概率生成掩码。经HideAndSeek处理后的效果如下所示。
Paper: https://arxiv.org/abs/2001.04086
Code: https://github.com/akuxcw/GridMask
该文是香港中文贾佳亚老师团队在数据增广方面的成果,作者认为之前Cutout方式可能(1)过渡删除主体目标信息,导致信息过多丢失;(2)较少删除主体目标信息,有失增广意义。基于上述考虑,作者提出了GridMask方法。GridMask
是通过生成一个与原图分辨率相同的掩码,并将掩码进行随机翻转,与原图相乘,从而得到增广后的图像,通过超参数控制生成的掩码网格的大小。注:GridMask中的掩码有规律的分布,并且不会过度删除主体目标。经GridMask处理后的效果如下。
图像混叠主要对 Batch
后的数据进行混合,需要注意的是:这类数据增广方式不仅对输入进行调整,同时还进行lable的调整以及损失函数的调整。这类方法主要包括以下两种:
前文所述的图像变换与图像裁剪都是针对单幅图像进行的操作,而图像混叠是对两幅图像进行融合,生成一幅图像。两种方法的主要区别为混叠的方式不太一样。
Paper: https://arxiv.org/pdf/1710.09412.pdf
Code: https://github.com/facebookresearch/mixup-cifar10
Mixup是最早提出的一种图像混叠增广方案,它是对两幅不同的图像通过blending方式进行混叠,同时label也需要进行混叠。它有两种实现方式:(1) 同一batch内后混叠;(2)不同batch混叠。下图为同一batch内混叠效果图。
Paper: https://arxiv.org/pdf/1905.04899v2.pdf
Code: https://github.com/clovaai/CutMix-PyTorch
与 Mixup
直接对两幅图进行相加不一样,Cutmix
是从一幅图中随机裁剪出一个 ROI
,然后覆盖当前图像中对应的区域.
注:除了所提到的Mixup与Cutmix外,还有不少其他相关的方法,比如Fmix,见链接:https://github.com/ecs-vlc/FMix,
该文以CV领域的数据增广为出发点,对几种比较经典的数据增广方法进行了介绍。除了上述介绍的数据增广方法外,还有其他数据增强方法,比如下面几种:
除了上述所提到的数据增广方法外,这里还给各位CVers分享几个比较不错的数据增广库,相关连接如下:
以上是本人今天关于数据增广的一点总结,并由此查找到一些数据增广相关方法与代码库,该搜索肯定是不完善的,如有其他优秀的数据增广方法,可以留言进行补充完善。
码字不易,给个在看可否?
Reference paper
1.Cubuk E D, Zoph B, Mane D, et al. Autoaugment: Learning augmentation strategies from data[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2019: 113-123.
2.Cubuk E D, Zoph B, Shlens J, et al. Randaugment: Practical automated data augmentation with a reduced search space[J]. arXiv preprint arXiv:1909.13719, 2019.
3.DeVries T, Taylor G W. Improved regularization of convolutional neural networks with cutout[J]. arXiv preprint arXiv:1708.04552, 2017.
4.Zhong Z, Zheng L, Kang G, et al. Random erasing data augmentation[J]. arXiv preprint arXiv:1708.04896, 2017.
5.Singh K K, Lee Y J. Hide-and-seek: Forcing a network to be meticulous for weakly-supervised object and action localization[C]//2017 IEEE international conference on computer vision (ICCV). IEEE, 2017: 3544-3553.
6.Chen P. GridMask Data Augmentation[J]. arXiv preprint arXiv:2001.04086, 2020.
7.Zhang H, Cisse M, Dauphin Y N, et al. mixup: Beyond empirical risk minimization[J]. arXiv preprint arXiv:1710.09412, 2017.
8.Yun S, Han D, Oh S J, et al. Cutmix: Regularization strategy to train strong classifiers with localizable features[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 6023-6032
推荐阅读:
添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:AI移动应用-小极-北大-深圳),即可申请加入AI移动应用极市技术交流群,更有每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、行业技术交流,一起来让思想之光照的更远吧~
△长按添加极市小助手
△长按关注极市平台,获取最新CV干货
觉得有用麻烦给个在看啦~