【AutoML】如何选择最合适的数据增强操作
大家好,欢迎来到专栏《AutoML》。在这个专栏中,我们会讲述AutoML技术在深度学习中的应用。这一期讲述在数据增强中的应用,这也是AutoML技术最早期的应用之一。
作者&编辑 | 言有三
1 数据增强的重要性
大家都知道数据增强很重要,是深度学习必备良药,写论文刷比赛提指标的大杀器。
论文中的数据我们就不多说了,如果大家想验证一下数据增强的强大,可以去我们的GitHub项目中找到一个二分类的图像任务,它的数据集大小只有1000张图。
https://github.com/longpeng2008/yousan.ai
https://github.com/longpeng2008/Caffe_Long
如果不使用任何数据增强操作,测试集无法达到90%以上的精度。如果使用了裁剪+颜色变换等数据增强操作,测试集精度可以达到96%以上。
以下是不使用数据增强,固定裁剪,自由裁剪,裁剪+对比度扰动,裁剪+对比度扰动+颜色扰动的结果,由于使用的模型和数据集非常小,使用CPU都可以快速完成验证。
如果不会使用Caffe可以阅读公众号的教程。
传统的数据增强方法以各类通过参数控制的预设几何变换和颜色变换为主,可以阅读往期综述文章如下。
这便是大家熟知的数据增强操作,它成就了深度学习里程碑模型AlexNet,与深度学习一直同在,技术也在不断演进。
2 自动学习数据增强策略
如果让模型针对具体的任务自动学习数据增强,理论上会更加智能,这便是我们这要说的基于AutoML的数据增强技术,它主要是用于自动学习数据增强策略。还有一类方法如GAN等生成式模型可以直接伪造新的数据,这不在本文阐述的范围内。
2.1 AutoAugment[1]
AutoAugment是Google提出的自动选择最优数据增强方案的研究,也是最早的使用AutoML技术来搜索数据增强策略的研究。
它的基本思路是使用增强学习从数据本身寻找最佳图像变换策略,对于不同的任务学习不同的增强方法,流程如下:
(1) 准备16个常用的数据增强操作。
(2) 从16个中选择5个操作,随机产生使用该操作的概率和相应的幅度,将其称为一个sub-policy,一共产生5个sub-polices。
(3) 对训练过程中每一个batch的图片,随机采用5个sub-polices操作中的一种。
(4) 通过模型在验证集上的泛化能力来反馈,使用的优化方法是增强学习方法。
(5) 经过80~100个epoch后网络开始学习到有效的sub-policies。
(6) 之后串接这5个sub-policies,然后再进行最后的训练。
总的来说,就是学习已有数据增强的组合策略,比如对于门牌数字识别等任务,研究表明剪切和平移等几何变换能够获得最佳效果,
官方开源实现如下:
https://github.com/DeepVoltaire/AutoAugment
随着在图像分类任务中AutoAugment取得成功后,该论文的作者们又将该技术应用于目标检测任务[2]。
核心方法没有太大的改变,搜索空间中共包含22种操作,分别为:
(1) 颜色操作:颜色扰动类,如调节亮度,对比度等。
(2) 几何操作:旋转、剪切等。
(3) 边界框操作:对框内的目标进行颜色和几何类操作。
之后的搜索策略和训练方法与AutoAugment一致,在COCO数据集上的mAP提升超过2个点,并且可以直接迁移到其他目标检测数据集上。
下图展示了在不同样本数量时的提升,样本越少提升越明显。
2.2 Population Based Augmentation
AutoAugment计算成本非常高昂,伯克利AI研究院提出的Population Based Augmentation[3]方法成本要低很多(三个数量级),它也可以学习到数据增强策略。
与AutoAugment不同之处在于,Population Based Augmentation学习的是策略的使用顺序而不是一组最优策略,当然所使用的15个策略都来自于AutoAugment。
这个方法的核心思想是:
(1) 并行训练多个小模型,这些小模型组成了种群。
(2) 种群中每一个小模型都会学习到不同的候选超参数,周期性地将性能最佳的一些模型的参数迁移到性能较差的一些模型上(文中是25%),同时再加上随机扰动操作。
最终得到的是一系列按照时间排序的增强操作,取得了与AutoAugment性能相当但是训练代价小很多的效果,开源代码如下:
https://github.com/arcelien/pba
目前还有一些其他研究也在致力于加快搜索速度,比如Fast autoaugment[4]等,我们会在知识星球中做连续更新,感兴趣的可以持续关注。