谷歌大脑提出RandAugment:自动数据增广新方法 | NeurIPS 2020

2020 年 11 月 14 日 CVer

点击上方“CVer”,选择加"星标"置顶

重磅干货,第一时间送达

本文转载自:Deep Learning Engine


论文导读


 为解决自动数据增强所带来的大量计算成本,Google提出了一种减少了数据增强搜索空间的RandAugmentation,具有很强的工程实用性。


论文:https://arxiv.org/abs/1909.13719

代码链接:

https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet


  自动数据增强
RandAugmentation


摘   要


Abstract



本期分享Google发表在NeurIPS 2020的关于数据增强的一篇文章《RandAugment: Practical automated data augmentation with a reduced search space》。大量的工作论证了使用数据增强(Data Augmentation)能够提升模型的鲁棒性和泛化能力。近期发表的使用自动增强策略进行训练的模型均能优于未使用该方法的baseline。在图像分类,目标检测等方向达到SOTA。但大规模使用自动数据增强其过程采用的是独立的搜索方式。这种独立的搜索方式增加了训练的复杂度和计算成本(obstacle①)。并且其无法根据模型和数据集的大小进行自动的调整(obstacle②)。自动数据增强的策略往往是先在较小的数据集 上训练较小的模型,然后在应用在大的模型上。基于上述两个Obstacles,作者提出:在训练目标任务时,显著减少搜索空间而无需采用独立的额外代理任务;根据模型和数据集的大小定制化不同的超参数已进行不同程度(regularization strength)的数据增强。从Table1的结果易知,本文提出的RandAugment(RA),在的搜索空间下,能够达到和超越更大搜索空间()下进行数据增强的方法。





01


Introduction

       


数据增强毋庸置疑,在机器学习中如图像分类,目标检测,实例分割,语音识别等领域均对模型有不错的性能提升。但如何人为的去选择数据增强的方式,需要设计者在该领域有一定的先验知识(换句话说,不是随便用什么数据增强的方式都可以)。并且,这种这种方式也很难扩展到其他领域的应用(在A任务上使用的数据增强方式,也许在B任务上就行不通)。那么,自然而然的就诞生出Learning plicies,即通过学习的方式去选择合适的数据增强的方式。其具有潜在的可能性以解决传统数据增强方法的缺点。这种自动的数据增强方式不像网络结构(修改网络结构,增加其复杂度),不会增加inference时的耗时。

但自动学习的数据增强方式和神经网络结构搜索类似,具有非常高的复杂度和计算花销。研究者们后续也在朝着更高效,更简单的方向发展,但其结果大多依旧。

回顾原始的自动数据增强方式,先在一个单独的小数据集代理任务(可以理解成小/子数据集,子任务 )上进行,然后再迁移到更大数据的目标任务中去。这是基于一个很强的假设:小的代理任务的性能与在大更大的目标任务上的性能相似。直白的理解就是现在小数据上进行一些子任务的测试,然后类推到大数据集目标任务。这种迁移的假设就是两个任务,两种不同大小的数据集,其性能趋势是一致的。但作者经过试验证明,其核心假设不是最优的。数据增强的力度(可以理解为数据增强的方式的多样性以及随机增强的概率)与数据集合模型的大小强相关。这个试验的结论就指明了一个方向:能否删除掉单独的小代理任务,即不进行小数据集上的子任务搜索验证

基于上述结论,作者提出了一种实用的自动数据增强算法RandAugment。该方法无需在子任务上进行搜索验证。但为了减少数据增强的参数搜索空间,作者设计了一种简单的格点搜索(simple grid search)方法以学习/获取一种数据增强的策略。通过实验证明,该方法优于目前所有的采用单独的子任务搜索方法进行自动学习的数据增强方法。


       



02


Proposed Method


       


先附赠代码:
import numpy as np
transforms = ['Identity', 'AutoContrast', 'Equalize', 'Rotate', 'Solarize', 'Color', 'Posterize', 'Contrast', 'Brightness', 'Sharpness', 'ShearX', 'ShearY', 'TranslateX', 'TranslateY']
def randaugment(N, M): ''' Generate a set of distortions. Args: N: Number of augmentation transformations to apply sequentially. M: Magnitude for all the transformations. ''' sampled_ops = np.random.choice(transforms, N) return [(op, M) for op in sampled_ops]if __name__ == '__main__'


在仍保持图像数据的多样性的同时,为减少参数空间,作者用一个无参话的操作替换了需要进行学习的策略,即均匀选取1/K概率的图像增强变换。


直白理解:直接枚举出常见的K=14种数据增强的方法,根据数据集和模型的大小,随机选择N种进行模型的训练。那么潜在的训练策略就包含
种。每个增强的方式包含一个distortion magnitudes参数M(即每个图像形变的程度)。这种简单粗暴的naive grid search实验证明非常有效!

  • identity

  • autoContrast

  • equalize

  • rotate

  • solarize

  • color

  • posterize

  • contrast

  • brightness

  • sharpness 

  • shear-x

  • shear-y

  • translate-x

  • translate-y

          



03


Results



       


作者分别在CIFAR-10, CIFAR-100,SVHN, ImageNet 以及COCO数据集上进行了分类和目标检测等实验验证。


A. 多种数据增强方式的对比



B. 模型和数据集大小与形变程度的关系




C. ImageNet数据集实验结果



D. 目标检测任务实验结果



E. 增加数据增强方式对性能的提升


F. 不同增强方式对性能的影响

G. 数据集大小对数据增强性能的影响



H. 不同数据增强强度方式对准确率的影响


I. 不同Magntitude对准确率的影响





       

04


Conclusion


       

作者的实验目标:展示设计的方法相对于以前的数据增强方法的收益。
1、首先证明通过在小数据集上训练代理任务(子任务)模型,然后在迁移到目标任务上的策略不是最优的。网络模型和数据集越大,需要进行更大的数据扭曲增强。2、学习型的数据增强方法可以学习更适合的代理任务(子任务)增强的强度,而不是更大的目标任务。3、通过设置两个超参N(选择数据增强方式的类别个数)和M(每种数据增强方式进行图像扭曲变形的强度),与其他增强方法进行对比分析。通过实验对比发现,在不同的任务上RandAugment均达到SOTA。这些实验也表明了RandAugment对数据类别极不敏感。为进一步研究其数据敏感性,作者在CIFAR-10训练WideResNet-28-2,并在14种数据增强的方法中随机删除了flips, pad-and-crop,or cutout等。实验发现数据增强方式的增多,将有助于进一步提升模型的准确率。即使用两种数据增强方式,模型的准确率也提升了1%。为进一步验证,作者分别对每种数据增强方式进行单独的评估,发现旋转的提升是最大的,色调分离似乎有副作用。4、实验中,选择每种数据增强的方式的概率是相等的。那就存在一个开放的问题,每种数据增强方式被选择的概率是否对模型性能的提升有影响?作者通过设计的实验发现其有略微的影响。但这种方式的成本较高,也给大家留下一个开放的研究问题。

           

05


结语


       

Google大佬们从数据增强存在的问题开始,挖掘出导致该问题的原因,提出行之有效的方法,进行完备的实验设计和验证,并在最后引出新的,值得进一步挖掘的研究方向。从文章结构的角度来看,非常值得大家学习。大佬不愧为大佬!


从工程实践的角度分析,只需要简单的从14种数据增强方式中随机选择N种数据增强的方法,进行M类不同强度的图像扭曲形变,就能在平衡计算成本和性能提升上能达到SOTA。真乃大道至简!膜拜了!

论文和代码下载

后台回复:RandAugment,即可下载上述论文和代码


下载:CVPR /  ECCV 2020开源代码


在CVer公众号后台回复:CVPR2020,即可下载CVPR 2020代码开源的论文合集

在CVer公众号后台回复:ECCV2020,即可下载ECCV 2020代码开源的论文合集


重磅!CVer-论文写作与投稿交流群成立


扫码添加CVer助手,可申请加入CVer-论文写作与投稿 微信交流群,目前已满2400+人,旨在交流顶会(CVPR/ICCV/ECCV/NIPS/ICML/ICLR/AAAI等)、顶刊(IJCV/TPAMI/TIP等)、SCI、EI、中文核心等写作与投稿事宜。


同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。


一定要备注:研究方向+地点+学校/公司+昵称(如论文写作+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群


▲长按加微信群


▲长按关注CVer公众号

整理不易,请给CVer点赞和在看

登录查看更多
1

相关内容

数据增强在机器学习领域多指采用一些方法(比如数据蒸馏,正负样本均衡等)来提高模型数据集的质量,增强数据。
专知会员服务
29+阅读 · 2020年10月24日
【NeurIPS 2020 】神经网络结构生成优化
专知会员服务
21+阅读 · 2020年10月24日
【NeurIPS 2020】对比学习全局和局部医学图像分割特征
专知会员服务
44+阅读 · 2020年10月20日
【NeurIPS 2020】大规模分布式鲁棒优化方法
专知会员服务
26+阅读 · 2020年10月13日
专知会员服务
51+阅读 · 2020年7月16日
谷歌推出新型数据增强算法:AutoAugment
论智
20+阅读 · 2018年6月6日
谷歌放大招!数据增强实现自动化
新智元
8+阅读 · 2018年6月4日
Arxiv
38+阅读 · 2020年12月2日
Arxiv
31+阅读 · 2020年9月21日
Fast AutoAugment
Arxiv
5+阅读 · 2019年5月1日
VIP会员
相关VIP内容
专知会员服务
29+阅读 · 2020年10月24日
【NeurIPS 2020 】神经网络结构生成优化
专知会员服务
21+阅读 · 2020年10月24日
【NeurIPS 2020】对比学习全局和局部医学图像分割特征
专知会员服务
44+阅读 · 2020年10月20日
【NeurIPS 2020】大规模分布式鲁棒优化方法
专知会员服务
26+阅读 · 2020年10月13日
专知会员服务
51+阅读 · 2020年7月16日
Top
微信扫码咨询专知VIP会员