Press "Enter" to skip to content

如何选择最合适的数据增强操作

 

本文讲述数据增强中的应用,这也是 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

 

参考文献

 

[1] Cubuk E D, Zoph B, Mane D, et al. Autoaugment: Learning augmentation policies from data[J]. arXiv preprint arXiv:1805.09501, 2018.

 

[2] Zoph B, Cubuk E D, Ghiasi G, et al. Learning Data Augmentation Strategies for Object Detection[J]. arXiv preprint arXiv:1906.11172, 2019.

 

[3] Ho D, Liang E, Stoica I, et al. Population Based Augmentation: Efficient Learning of Augmentation Policy Schedules[J]. arXiv preprint arXiv:1905.05393, 2019.

 

[4] Lim S, Kim I, Kim T, et al. Fast autoaugment[J]. arXiv preprint arXiv:1905.00397, 2019.

 

总结

 

如何做机器学习任务中做好数据增强是每一个从业人员必须认真面对的问题,如今已经发展到了使用 AutoML 技术来代替人工设计策略,请大家持续关注。

 

作者介绍

 

言有三,真名龙鹏,曾先后就职于奇虎 360AI 研究院、陌陌深度学习实验室,6 年多计算机视觉从业经验,拥有丰富的传统图像算法和深度学习图像项目经验,拥有技术公众号《有三 AI》,着有书籍《深度学习之图像识别:核心技术与案例实战》。

 

原文链接

 

https://mp.weixin.qq.com/s/YtL7GeIGYm9xtdofnabu1g

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注