1. Introduction
数据增强是各类计算机视觉任务经常使用的trick,各式各样的数据增强策略能够使图像产生变换,使有限的数据能产生更多的价值。是指在维持样本标签不变的条件下,根据先验知识改变样本的特征,使得新产生的样本也符合或者近似符合数据的真实分布。数据增强能够起到防止过拟合的作用,增加数据集大小是解决过拟合最重要的途径,但是收集样本数据和标注往往是成本极高的,在有限的数据集上,通过数据增强技术可以增加训练的样本数量,获得一定程度上的性能提升。常见的数据增强方式包括仿射变换、透视变换、亮度变换、锐化、模糊、遮挡等,这些增强变换一般都不会改变图片目标的类别标签。
多年间计算机视觉领域提出了很多数据增强的方法,但是每个数据集对应的数据增强方法都是手动设计或者是基于经验的,每个不同的数据集应该使用怎样的数据增强策略,在此之前这方面的研究比较少。AutoAugment的核心思想就是通过强化学习算法寻找每个数据集最合适的增强策略。
2. AutoAugment原理
2.1 搜索空间
AutoAugment所使用的增强算子如下图所示,总计16个增强算子(XY不同方向算两个):
AutoAugment定义搜索策略如下:
- 搜索过程最终输出一个增强策略(policy)。
- 1个policy包含5个sub-policy。
- 1个sub-policy包含2个operation(候选总计16个operation)。
- 每个operation包含2个超参数:probability和magnitude。
搜索结果样例如下图所示:
AutoAugment搜索空间分析:
- probability, magnitude离散化:分别将概率和强度两个超参数离散化为[0-10], [1-10]的整数值,那么就可以通过离散值的搜索算法来寻找合适的policy。
- 每个sub-policy存在种可能。
- 每个policy存在种可能。
2.2 搜索算法
参考了NAS搜索,采取了强化学习作为搜索算法,每轮由RNN输出数据增强策略S,并用S在目标检测集的子集上训练子模型120个epoch得到验证集的准确率R,再利用R优化RNN,整个过程持续15000次。
注:这里梯度更新方式主要是采用Proximal policy optimization algorithms,因为这种方式训练时间非常长,后面几乎不再使用这种强化学习的方式了,所以不做过多介绍。
2.3 搜索结果的使用
搜索完成后,提取表现最佳的5个policy合并为1个policy(共25个sub-policy),在正式训练中对每个batch的数据随机选择25个sub-policy中的1个。
3. 实验效果
在cifar-10上搜索出来的最佳策略:
如下图,每个数据集搜索出来的结果都不错,分类错误率都有一定的下降:
另外,将在ImageNet搜索出来的数据增强策略应用于其他数据集上,还有一定的迁移能力:
4. AutoAugment的贡献和缺点
主要贡献:
- 数据增强策略寻优的开山之作,证明搜索数据增强策略是可行、有效的。
- 提出的搜索空间(数据增强策略定义)非常有借鉴意义,后续的论文基本沿用了它的搜索空间定义方式。
缺点:
- 算法搜索空间巨大,以增强学习算法作为搜索算法过于耗时:cifar10数据集上往往训练到80-100个epoch后期才出现数据增强的性能增益,搜索过程中每个模型需要训练120个epoch,同时需要训练15000个子模型,也就是共需要训练个epoch。
- 搜索效果相较随机搜索的提升效果不明显:对于最终搜索的25个sub-policy,共50个operation,如果将operation顺序打乱,每次随机选取operation, probability, magnitude,最终性能仅仅相差0.4个百分点。而且作者始终没有对比随机搜索策略和AutoAugment的性能差异,强化学习算法的搜索结果趋于无效性。