发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

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

  • 2019-09-27
  • 本文字数:2035 字

    阅读完需:约 7 分钟

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


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


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2019-09-27 19:202179

评论

发布
暂无评论
发现更多内容

Block的底层实现

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

Jerry Wang

JavaScript SAP SAP UI5 ui5 7月月更

Linux下使用QT+OpenCV实现人脸实时检测(从摄像头获取数据进行检测)

DS小龙哥

7月月更

LeetCode-110. 平衡二叉树(java)

bug菌

Leet Code 7月月更

问题来了!拔掉网线几秒,再插回去,原本的 TCP 连接还存在吗?

冉然学Java

Java TCP

想通讯?谈钱多俗,谈ProtoBuf

怀瑾握瑜的嘉与嘉

protobuf 7月月更

数据湖基本架构

五分钟学大数据

数据湖 7月月更

Qt | 控件之QCheckBox

YOLO.

qt 7月月更

户外LED显示屏应对炎热高温天气有妙招

Dylan

LED显示屏 led显示屏厂家

String 实现模糊查询

小肉球

qt 7月月更

关于TCP/IP协议漏洞的安全措施

郑州埃文科技

IP地址 TCP/IP漏洞修复 TCP/IP协议漏洞

java零基础入门-递归

喵手

Java 7月月更

干货 | 作为前端开发者如何迈向独立开发者

南城FE

独立开发者 前端 7月月更

自建个性化自动报价系统,应对多变报价模式

明道云

C# 程序调试和异常处理(try catch)

IC00

C# 7月月更

JAVA编程规范之并发处理

源字节1号

软件开发 后端开发

【CODETOOL】文件比较Beyond Compare使用介绍

柒号华仔

开发工具 7月月更

彻底了解C++异步从理论到实践

C++后台开发

网络编程 异步 C++后台开发 C++开发 C++编程

mysql进阶(四)聊聊mysql中的事务锁机制

No Silver Bullet

MySQL 7月月更

Ceph分布式存储性能调优(六)

Lansonli

云原生 云存储 7月月更

Flink1.7从安装到体验

程序员欣宸

Java flink 7月月更

C 语言入门(七)

逝缘~

7月月更

TCP拥塞控制详解 | 6. 主动队列管理

俞凡

算法 网络 TCP拥塞控制

数据类型的转换

7月月更

Android/Unity大乱斗-集成遇到的问题

芝麻粒儿

android Unity 7月月更

冲刺金九银十!这份Java性能调优实战宝典,学明白轻松涨薪20k

了不起的程序猿

Java java程序员 java面试 后端技术

MFC|框架下按钮的自绘

中国好公民st

c++ 7月月更

解决问题的最佳实践路径

老张

解决问题 思考实践

因果学习将开启下一代AI浪潮?九章云极DataCanvas正式发布YLearn因果学习开源项目

九章云极DataCanvas

人工智能 GitHub 开源项目 因果学习 YLearn

纯css实现炫酷的视频文本蒙版效果

南极一块修炼千年的大冰块

7月月更

欢迎来到 GrafanaFans 兴趣小组

Grafana 爱好者

云原生 可观测性 Grafana

如何选择最合适的数据增强操作_AI&大模型_言有三_InfoQ精选文章