数据增强之TrivialAugment

在这里插入图片描述
论文:TrivialAugment: Tuning-free Yet State-of-the-Art Data Augmentation

代码:https://github.com/automl/trivialaugment

Introduction

本文主要研究数据增强在图像分类场景的应用。图像分类中的数据增强是基于原始图像生成新的图像,增强完以后仍然属于相同的分类,相当于数据的扩充。早期的数据增强策略是纯人工设计的,直至AA等自动搜索出的数据增强策略的提出,才降低了数据增强的设计难度。

自动搜索的数据增强策略在使用时虽然是几乎for free的,但是搜索确实是一个耗时耗卡的大工程。Trivial Augment的提出,不需要特定的任务选择的数据增强策略,也不用将多种数据增强策略组合在一起,是一种简单有效的策略。

解决的问题

使用NAS方法自动搜索的数据增强的方法虽然是有效的,但局限在于需要权衡搜索效率和数据增强的性能。为了解决这个问题,论文提出了Trivial Augment数据增强策略(后文简称TA),相比于之前的数据增强策略,TA是无参数的,每张图片只使用一次数据增强方式,因此相比于AA、PBA乃至RA,它的搜索成本几乎是free的,而且取得了SOTA的效果。

使用方法

作者开源了代码,使用方法很简单,通过以下几行代码的调用就能搞定:

augment = aug_lib.TrivialAugment()
trans = transforms.Compose(
      [
           transforms.RandomResizedCrop(train_crop_size, interpolation=interpolation),
           transforms.RandomHorizontalFlip(),
           augment,
           transforms.ToTensor(),
           normalize,
       ]
)

算法描述

TA采用了和RandomAugment相同的数据增强风格,具体来说,数据增强被定义为由一个数据增强函数a和对应的强度值m(部分数据增强函数不使用强度值)组成。

工作原理

在这里插入图片描述
如上图所示,我们首先输入图像x和数据增强函数的集合A作为输入,我们简单地从A中随机采样一个数据增强函数,然后从{0,1,2….30}中均匀采样一个值作为强度m,然后对输入图像进行数据增强,并返回增强后的图像。

在这里插入图片描述
上面一张图是TA的过程可视化,对于每个图像,TA均匀采样一个数据增强函数和一个强度值,然后返回增强后的图片。此外,之前的方法往往叠加多个数据增强方式,而TA只对每个图使用单一的数据增强方式。使用这样的方式,可以将TA增强后的数据集看做是:将一张图片使用所有的数据增强方式分别增强,然后从中均匀采样。

在这里插入图片描述
具体来说,如上图所示,X和O代表两个类别,中间用虚线作为分界线,其中黑色的代表原始类别,彩色的代表扩充后的类别。可以看到,TA相当于把原始图片按照不同的数据增强方式分别做了增强,然后我们再从中随机抽样获得增强后的数据。

数据增强的可选空间

在这里插入图片描述
上述就是TA的搜索空间,由不同的PIL库函数以及其对应的数据增强的强度(部分操作没有强度项)组成。总的来说,TA的数据增强空间建立在RA搜索空间的基础上,添加了UA、 OHL的数据增强空间。

实际效果

在这里插入图片描述
论文将TA和PBA、Fast AA等数据增强策略对比,发现其在针对不同的数据集,使用不同的网络进行对比(训练5~10次取平均值),在大部分数据集和模型上训练都取得了SOTA的结果。这也表明了TA策略针对多种数据集和模型均有效果且鲁棒性较强。

在这里插入图片描述
论文对比了不同的数据增强策略的效率,它们都使用Wide-ResNet模型训练,对比达到指定的精度所耗费的GPU卡时。从平行于x轴的方向来看,达到同样的精度TA耗时最少,从平行于y轴的方向来看,使用相同的训练时长,TA的精度最高。总的来讲,在精度、计算资源两个维度下,TA的是最高效的。

猜你喜欢

转载自blog.csdn.net/weixin_42990464/article/details/122234683