共计 5809 个字符,预计需要花费 15 分钟才能阅读完成。
深度学习利用篇 - 计算机视觉 - 图像增广[1]:数据增广、图像混叠、图像剪裁类变动类等详解
一、数据增广
在图像分类工作中,图像数据的增广是一种罕用的正则化办法,次要用于减少训练数据集,让数据集尽可能的多样化,使得训练的模型具备更强的泛化能力,罕用于数据量有余或者模型参数较多的场景。除了 ImageNet 分类工作规范数据增广办法外,还有 8 种数据增广形式十分罕用,这里对其进行简略的介绍和比照,大家也能够将这些增广办法利用到本人的工作中,以取得模型精度的晋升。这 8 种数据增广形式在 ImageNet 上的精度指标如 图 1 所示。
图 1 8 种数据增广办法
二、罕用数据增广办法
注:如果没有非凡阐明,本章节中所有示例为 ImageNet 分类,并且假如最终输出网络的数据维为:[batch-size, 3, 224, 224]
在 ImageNet 分类工作中,训练阶段的规范数据增广办法为以下几步:
- 图像解码:简写为
ImageDecode
- 随机裁剪到长宽均为 224 的图像:简写为
RandCrop
- 程度方向随机翻转:简写为
RandFlip
- 图像数据的归一化:简写为
Normalize
- 图像数据的重排,
[224, 224, 3]
变为[3, 224, 224]
:简写为Transpose
- 多幅图像数据组成 batch 数据,如
batch-size
个[3, 224, 224]
的图像数据拼组成[batch-size, 3, 224, 224]
:简写为Batch
相比于上述规范的图像增广办法,研究者也提出了很多改良的图像增广策略,这些策略均是在规范增广办法的不同阶段插入肯定的操作,基于这些策略操作所处的不同阶段,咱们将其分为了三类:
- 对
RandCrop
(上述的阶段 2)后的 224 的图像进行一些变换: AutoAugment,RandAugment - 对
Transpose
(上述的阶段 5) 后的 224 的图像进行一些裁剪: CutOut,RandErasing,HideAndSeek,GridMask - 对
Batch
(上述的阶段 6) 后的数据进行混合: Mixup,Cutmix
增广后的可视化成果如 图 2 所示。
图 2 数据增广后可视化
下文将介绍这些策略的原理与应用办法,其中,每种数据增广策略的参考论文与参考开源代码均在上面的介绍中列出。
以 图 3 为测试图像,第三节将基于测试图像进行变换,并将变换后的成果进行可视化。
因为
RandCrop
是随机裁剪,变换前后的图像内容可能会有肯定的差异,无奈直观地对比变换前后的图像。因而,本节将RandCrop
替换为Resize
。
图 3 测试图像
三、图像变换类
图像变换类指的是对 RandCrop
后的 224 的图像进行一些变换,次要包含:
- AutoAugment[1]
- RandAugment[2]
3.1 AutoAugment
论文地址:https://arxiv.org/abs/1805.09501v1
开源代码 github 地址:https://github.com/DeepVoltaire/AutoAugment
不同于惯例的人工设计图像增广形式,AutoAugment 是在一系列图像增广子策略的搜寻空间中通过搜索算法找到的适宜特定数据集的图像增广计划。针对 ImageNet 数据集,最终搜寻进去的数据增广计划蕴含 25 个子策略组合,每个子策略中都蕴含两种变换,针对每幅图像都随机的筛选一个子策略组合,而后以肯定的概率来决定是否执行子策略中的每种变换。
后果如 图 4 所示。
图 4 AutoAugment 后图像可视化
3.2 RandAugment
论文地址:https://arxiv.org/pdf/1909.13719.pdf
开源代码 github 地址:https://github.com/heartInsert/randaugment
AutoAugment
的搜寻办法比拟暴力,间接在数据集上搜寻针对该数据集的最优策略,其计算量很大。在 RandAugment
文章中作者发现,一方面,针对越大的模型,越大的数据集,应用 AutoAugment
形式搜寻到的增广形式产生的收益也就越小;另一方面,这种搜寻出的最优策略是针对该数据集的,其迁徙能力较差,并不太适宜迁徙到其余数据集上。
在 RandAugment
中,作者提出了一种随机增广的形式,不再像 AutoAugment
中那样应用特定的概率确定是否应用某种子策略,而是所有的子策略都会以同样的概率被抉择到,论文中的试验也表明这种数据增广形式即便在大模型的训练中也具备很好的成果。
后果如 图 5 所示。
图 5 RandAugment 后图像可视化
四、图像裁剪类
图像裁剪类次要是对Transpose
后的 224 的图像进行一些裁剪,并将裁剪区域的像素值置为特定的常数(默认为 0),次要包含:
- CutOut[3]
- RandErasing[4]
- HideAndSeek[5]
- GridMask[6]
图像裁剪的这些增广并非肯定要放在归一化之后,也有不少实现是放在归一化之前的,也就是间接对 uint8 的图像进行操作,两种形式的差异是:如果间接对 uint8 的图像进行操作,那么再通过归一化之后被裁剪的区域将不再是纯黑或纯白(减均值除方差之后像素值不为 0)。而对归一后之后的数据进行操作,裁剪的区域会是纯黑或纯白。
上述的裁剪变换思路是雷同的,都是为了解决训练出的模型在有遮挡数据上泛化能力较差的问题,不同的是他们的裁剪形式、区域不太一样。
4.1 Cutout
论文地址:https://arxiv.org/abs/1708.04552
开源代码 github 地址:https://github.com/uoguelph-mlrg/Cutout
Cutout 能够了解为 Dropout 的一种扩大操作,不同的是 Dropout 是对图像通过网络后生成的特色进行遮挡,而 Cutout 是间接对输出的图像进行遮挡,绝对于 Dropout,Cutout 对噪声的鲁棒性更好。作者在论文中也进行了阐明,这样做法有以下两点劣势:(1) 通过 Cutout 能够模仿实在场景中主体被局部遮挡时的分类场景;(2) 能够促成模型充分利用图像中更多的内容来进行分类,防止网络只关注显著性的图像区域,从而产生过拟合。
后果如 图 6 所示。
图 6 Cutout 后图像可视化
4.2 RandomErasing
论文地址:https://arxiv.org/pdf/1708.04896.pdf
开源代码 github 地址:https://github.com/zhunzhong07/Random-Erasing
RandomErasing
与 Cutout
办法相似,同样是为了解决训练出的模型在有遮挡数据上泛化能力较差的问题,作者在论文中也指出,随机裁剪的形式与随机程度翻转具备肯定的互补性。作者也在行人再辨认(REID)上验证了该办法的有效性。与 Cutout
不同的是,在 RandomErasing
中,图片以肯定的概率承受该种预处理办法,生成掩码的尺寸大小与长宽比也是依据预设的超参数随机生成。
后果如 图 7 所示。
图 7 RandomErasing 后图像可视化
4.3 HideAndSeek
论文地址:https://arxiv.org/pdf/1811.02545.pdf
开源代码 github 地址:https://github.com/kkanshul/Hide-and-Seek
HideAndSeek
论文将图像分为若干块区域 (patch),对于每块区域,都以肯定的概率生成掩码,不同区域的掩码含意如 图 8 所示。
图 8 HideAndSeek 分块掩码图
后果如 图 9 所示。
图 9 HideAndSeek 后图像可视化
4.4 GridMask
论文地址:https://arxiv.org/abs/2001.04086
开源代码 github 地址:https://github.com/akuxcw/GridMask
作者在论文中指出,此前存在的基于对图像 crop 的办法存在两个问题,如 图 10 所示:
- 适度删除区域可能造成指标主体大部分甚至全副被删除,或者导致上下文信息的失落,导致增广后的数据成为噪声数据;
- 保留过多的区域,对指标主体及上下文根本产生不了什么影响,失去增广的意义。
图 10 增广后的噪声数据
因而如果防止适度删除或适度保留成为须要解决的外围问题。
GridMask
是通过生成一个与原图分辨率雷同的掩码,并将掩码进行随机翻转,与原图相乘,从而失去增广后的图像,通过超参数管制生成的掩码网格的大小。
在训练过程中,有两种以下应用办法:
- 设置一个概率 p,从训练开始就对图片以概率 p 应用
GridMask
进行增广。 - 一开始设置增广概率为 0,随着迭代轮数减少,对训练图片进行
GridMask
增广的概率逐步增大,最初变为 p。
论文中验证上述第二种办法的训练成果更好一些。
后果如 图 11 所示。
图 11 GridMask 后图像可视化
五、图像混叠
图像混叠次要对 Batch
后的数据进行混合,包含:
- Mixup[7]
- Cutmix[8]
前文所述的图像变换与图像裁剪都是针对单幅图像进行的操作,而图像混叠是对两幅图像进行交融,生成一幅图像,两种办法的次要区别为混叠的形式不太一样。
5.1 Mixup
论文地址:https://arxiv.org/pdf/1710.09412.pdf
开源代码 github 地址:https://github.com/facebookresearch/mixup-cifar10
Mixup 是最先提出的图像混叠增广计划,其原理简略、不便实现,不仅在图像分类上,在指标检测上也获得了不错的成果。为了便于实现,通常只对一个 batch 内的数据进行混叠,在 Cutmix
中也是如此。
如下是 imaug
中的实现,须要指出的是,下述实现会呈现对同一幅进行相加的状况,也就是最终失去的图和原图一样,随着 batch-size
的减少这种状况呈现的概率也会逐步减小。
后果如 图 12 所示。
图 12 Mixup 后图像可视化
5.2 Cutmix
论文地址:https://arxiv.org/pdf/1905.04899v2.pdf
开源代码 github 地址:https://github.com/clovaai/CutMix-PyTorch
与 Mixup
间接对两幅图进行相加不一样,Cutmix
是从一幅图中随机裁剪出一个 ROI
,而后笼罩以后图像中对应的区域。
后果如 图 13 所示。
图 13 Cutmix 后图像可视化
六、试验
基于 PaddleClas 套件,应用上述几种数据增广办法在 ImageNet1k 数据集上进行了试验测试,每个办法的分类精度如下。
模型 | 初始学习率策略 | l2 decay | batch size | epoch | 数据变动策略 | Top1 Acc | 论文中论断 |
---|---|---|---|---|---|---|---|
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | 规范变换 | 0.7731 | – |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | AutoAugment | 0.7795 | 0.7763 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | mixup | 0.7828 | 0.7790 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | cutmix | 0.7839 | 0.7860 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | cutout | 0.7801 | – |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | gridmask | 0.7785 | 0.7790 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | random-augment | 0.7770 | 0.7760 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | random erasing | 0.7791 | – |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | hide and seek | 0.7743 | 0.7720 |
留神:
- 在试验中,为了便于比照,将 l2 decay 固定设置为 1e-4,在理论应用中,举荐尝试应用更小的 l2 decay。联合数据增广,发现将 l2 decay 由 1e- 4 减小为 7e- 5 均能带来至多 0.3~0.5% 的精度晋升。
- 在应用数据增广后,因为训练数据更难,所以训练损失函数可能较大,训练集的准确率绝对较低,但其领有更好的泛化能力,所以验证集的准确率绝对较高。
- 在应用数据增广后,模型可能会趋于欠拟合状态,倡议能够适当的调小
l2_decay
的值来取得更高的验证集准确率。
七、测试加强
在网络训练过程中,数据加强是晋升模型能力的无效形式,目前在图像宰割、分类和检测场景中都获得了不错的模型训练成果。
数据加强同样也能够利用于测试阶段,将原始的图像进行各种模式的变换失去多张图片,比方图像翻转,图像旋转,图像拉伸等操作,而后对这些图片别离进行推理,再对这多个后果进行综合剖析以确定最终后果,这便是 测试时加强(Test-Time-Augmentation,TTA)。
7.1. 测试时加强的起因
如果只对图像做一种加强时,采纳的变换有可能会使图像的要害信息失落,从而导致后续工作得不到正确的后果。
7.2. 测试时加强的作用
通过剖析多项数据加强的图像,而后综合剖析,有可能会平滑掉某一种变换导致的要害信息失落景象带来的损失,从而晋升预测的准确率。
更多文章请关注公重号:汀丶人工智能
参考文献
[1] Autoaugment: Learning augmentation strategies from data
[2] Randaugment: Practical automated data augmentation with a reduced search space
[3] Improved regularization of convolutional neural networks with cutout
[4] Random erasing data augmentation
[5] Hide-and-seek: Forcing a network to be meticulous for weakly-supervised object and action localization
[6] GridMask Data Augmentation
[7] mixup: Beyond empirical risk minimization
[8] Cutmix: Regularization strategy to train strong classifiers with localizable features)