NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 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


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-09-27 19:202205

评论

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

【JavaScript】数值转换为数值

恒山其若陋兮

5月月更

druid 源码阅读(七)Druid Filter 介绍

爱晒太阳的大白

5月月更

源码分析 Flutter 的 setState 过程

岛上码农

flutter ios 前端 跨平台开发 5月月更

你中奖了吗?低代码开发师(高级)认证中奖名单揭晓啦!

一只大光圈

钉钉宜搭

零基础学Java第一节(语法格式、数据类型)

编程攻略

java 5月月更

ABBYY2022全新版PDF文字识别功能

茶色酒

飞书将于5月25日举行春季发布会 同步推出全新项目管理产品

陈泽涛

飞书 飞书项目

大家都在用哪些OKR管理工具?

PingCode

Go Web 编程入门:Go pongo2 模板引擎

宇宙之一粟

Go web Go 语言 模板 5月月更

数据库连接池 -Druid 源码学习(六)

wjchenge

Druid 数据库连接池

FinClip小程序+Rust(一):夹心饼架构

Speedoooo

rust 前端框架 小程序容器

FinClip小程序+Rust(二):环境搭建

Speedoooo

rust 前端框架 小程序容器

HDD·耀星领航出海峰会:华为游戏中心联运服务加速游戏出海获量增长

最新动态

HIVE3 深度剖析 (下篇)

明哥的IT随笔

大数据 hive

柏拉图会成为元宇宙风险标吗?PlatoFarm的机会很大

小哈区块

三种常见的 Mac 安装 git 工具的方法

liuzhen007

git git 学习 5月月更

OpenMLDB v0.5.0 发布 | 性能、成本、灵活性再攀高峰!

第四范式开发者社区

人工智能 机器学习 数据库 数据 特征平台

AIrserver2022手机软件无线投屏电脑屏幕

茶色酒

AirServer

李俊刚:我是如何在OpenHarmony完成ap6275s WiFi驱动的HDF适配工作的?

OpenHarmony开发者

OpenHarmony WiFi驱动

企业架构如何促进创新?

涛哥 数字产品和业务架构

企业架构

设计模式之装饰器模式

乌龟哥哥

5月月更

FinClip小程序+Rust(三):一个加密钱包

Speedoooo

rust 前端框架 小程序容器

Redis「5」事件处理模型与键过期策略

Samson

学习笔记 Redis 核心技术与实战 5月月更

JavaWeb 数据库操作

Emperor_LawD

sql javaWeb 5月月更

宠物类自媒体运营心得:如何才能拍得更有创意

石头IT视角

druid 源码阅读 6——如何实现断链重连的?

张大彪

OpenHarmony浏览器上新,在Dayu200开发板上终于能优雅地浏览网页

离北况归

浏览器 OpenHarmony Openharmony啃论文俱乐部 PIMF OpenHarmony应用安装

服务网格接口 SMI 规范解读

Flomesh

云原生 服务网格 SMI OpenServiceMesh

先进数据中心背后,“东数西算”的三重意志

脑极体

学生管理系统(5)

5月月更

String基础整合

工程师日月

java 5月月更

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