【AutoAugment】2019-CVPR-AutoAugment: Learning Augmentation Strategies from Data-论文阅读

时间:2021-08-09
本文章向大家介绍【AutoAugment】2019-CVPR-AutoAugment: Learning Augmentation Strategies from Data-论文阅读,主要包括【AutoAugment】2019-CVPR-AutoAugment: Learning Augmentation Strategies from Data-论文阅读使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

AutoAugment: Learning Augmentation Strategies from Data

2019-CVPR-AutoAugment: Learning Augmentation Strategies from Data

来源:ChenBong 博客园

Introduction

AutoML除了网络结构的自动搜索, 有一个分支做的是数据增强的自动搜索.

深度学习/CV领域大部分的工作都是在设计更好的网络结构, 很少有工作关注在数据增强的改进上, 例如ImageNet数据集上广泛使用还是2012年ImageNet比赛中提出的数据增强方法.

数据增强包含不同的操作, 每个操作执行的先后顺序, 执行概率, 执行的强度, 都是需要手工设计的, 不同的数据集对不同的数据增强组合有不同的需求(例如水平翻转在MNIST 手写数字数据集上是不适用的), 自动数据增强就是针对不同的数据集, 搜索适合该数据集的数据增强pipeline (顺序, 概率, 强度等)

本文的数据增强op的搜索空间包含16个操作, 每个操作都有概率范围[0-1], 等距离散化为11个值; 有的操作还包含强度范围, 等距离散化为10个值 (例如, Invert 反色: 像素值v=>255-v 不包含强度范围);

本文的数据增强pipeline由5个policy组成, 每个policy又由5个sub-policy组成, 每个sub-policy包含2个op, 但搜索目标是针对该数据集的最佳policy, 因此搜索空间大致为 \((16×10×11)^{10}≈2.9×10^{32}\) , 最终的pipeline由最佳的5个policy连接起来, 组成最终的pipeline (长度为50个op)

Contribution

Method

作者使用强化学习作为搜索算法, 控制器是一个RNN, 每次控制器RNN从搜索空间中选择1个policy(10个op), 在一个固定的网络上训练到收敛, 网络的准确率作为控制器RNN的奖励, 更新控制器RNN, 以产生更好的policy

(其实可以看做接近穷举的搜索, 作者也说了, 除了使用强化学习, 也可以使用其他的超参优化算法例如EA等)

Experiments

CIFAR-10, reduced CIFAR-10, CIFAR-100

为了减少搜索开销, 作者不是在完整的训练集(50000 个样本)上进行训练-搜索最佳策略, 而是在一个训练集的子集(4000 个样本)上训练-搜索最佳策略, 该数据集称为 "Reduce CIFAR-10"; 这么做的动机是, 作者发现, 对于固定的训练时间, 在子数据集上训练更多的epoch的效果比在完整数据集上训练较少的epoch效果更好.

然后再将在reduce CIFAR-10上找到的最佳策略应用到 CIFAR-10, reduce CIFAR-10, CIFAR-100 数据集上, 这里的模型用的是Wide-ResNet-28-10, 训练120个epoch

在 Reduce CIFAR-10上找到的最佳策略, 最终的pipeline:

在CIFAR-10上,AutoAugment主要挑选基于颜色的转换。例如,在CIFAR-10上最常挑选的变换是Equalize、AutoContrast、Color和Brightness. 像ShearX和ShearY这样的几何变换很少出现在好的policy中。此外,在一个成功的policy中几乎从未应用过反转这一变换。

以下的最佳策略都是在 Reduce CIFAR-10上找到的:

本文的方法是第1个在CIFAR-10数据集上突破<2%错误率的方法;

同样也打破了CIFAR-100上错误率 12.2 的最佳纪录

半监督实验: 在reduce CIFAR-10数据集(4000个样本)上训练, 在完整的CIFAR-10上验证, 提升的效果更为显著(18.8=>14.1, 17.1=>10.0)

SVHN, reduced SVHN

SVHN(街景门牌号)数据集, 10个类别对应数字0-9, 73257个训练图像, 531131个additional 训练图像, 26032个测试图像.

同样是构建一个 reduce SVHN (1000个训练样本) 来搜索最佳策略, 最终的pipeline:

在reduced SVHN上搜索到最常用的op是 Invert, Equalize, ShearX/Y, and Rotate;

与CIFAR-10不同的是, CIFAR-10几乎不选择 Invert, ShearX/Y这样的几何变换和Rotate

在SVHN上选择几何变换/旋转是有道理的, 因为数据集中的的样本天然地就是倾斜/不同角度的

以下是其中1个policy的可视化:

SVHN上的实验结果:

半监督实验: 在Reduced SVHN上训练, 在SVHN上测试, 接近SOTA的半监督方法(5.42%-3.86%)

在半监督实验中, Cutout的数据增强不但没有提点的作用, 反而对性能有损害

ImageNet, reduced ImageNet

reduced ImageNet: 120个类, 6000个样本

Wide-ResNet 40-2, 200 epoch

在reduced ImageNet上搜索到的1个policy的可视化:

和CIFAR-10类似, 主要是基于颜色的变换, 一个区别是, ImageNet中会使用几何变换(旋转)

最终的pipeline同样是将最好的5个policy连接起来, 一共有25个sub-policy(50个op):

最后的实验是在ResNet-50和ResNet-200上训练270个epoch:

可以看出, 搜索到的AutoAugment对不同的结构都有提点的效果, 考虑到这只是在5000张 (&&6000张?) 图片上搜索的结果, 如果用更多的图片进行搜索效果应该会更好

We expect the results to be even better when more compute is available so that AutoAugment can use more images to discover even better augmentation policies.

AutoAugment Transfer

直接在感兴趣的目标数据集上进行数据增强的策略搜索是资源密集的, 作者想了解是否可以将搜索到的策略从1个数据集迁移到另一个数据集 (将搜索到的数据增强策略直接应用到新的数据集上), 有2个目的:

  1. 可以克服AutoAugment "资源密集" 的缺点
  2. 可以验证AutoAugment并不是对目标数据集的过拟合, 而是找到了对于不同数据集的通用pipeline

将在ImageNet上搜索到的策略, 应用到5个新数据集上:

使用Inception v4, 训练1000个epoch

可以发现, 在ImageNet上搜索到的增强策略, 对5个不同数据集都有提点的作用, 且在Standford Cars数据集上取得了新的SOTA (之前的SOTA是5.9%)

Ablation

Randomizing the probabilities and magnitudes in the augmentation policy

在CIFAR-10上, 使用AutoAugment搜索到的policy序列(50个op), 但op的概率和强度随机化, 结果比AutoAugment差0.4%

Performance of random policies

在CIFAR-10上, 对policy也随机化, 即随机抽样相同长度的policy, 结果比AutoAugment差0.5%

以上2组消融实验说明, AutoAugment找到的policy序列中op的概率和强度更重要

Conclusion

AutoAugment有价值的部分应该是跨模型, 跨数据集的可迁移性, 例如: 在Wide-ResNet-40-2 on Reduced CIFAR-10上搜索的结果, 可以直接应用到完整CIFAR-10/100及不同的模型结构上; 在Wide-ResNet-40-2 on Reduced ImageNet上搜索的结果, 可以直接应用在完整的ImageNet以及其他5个数据集上, 甚至可以达到新数据集的SOTA; 无论是全量数据集还是半监督都有一致的提点的作用(Cutout 在SVHN上的半监督实验不但没有提点还会掉点)

Summary

  • 数据增强与半监督
  • 开创了自动化的数据增强这一新的方向, 类似Google的NAS with RL开创了NAS这一方向, 利用大算力验证一个方向的价值

数据增强与半监督

CutOut

MixUp

2019-CVPR-AutoAugment

2019-ICML-PBA population based augmentation

2019-NIPS-Fast AutoAugment

2019-ICLR-Adversarial AutoAugment

2020-NIPS-RandAugment

和AutoAugment同一批作者团队, 与AutoAugment的主要区别是大大减小了搜索空间, 只保留2个参数:

  • N: 要用几个op
  • M: 每个op的统一强度是多少

Reference

样本增广自动化-AutoAugment论文解读 - 知乎 (zhihu.com)

AutoAugment: Learning Augmentation Strategies from Data | Cugtyt

【强化学习 108】AutoAugment - 知乎 (zhihu.com)

深度学习数据增广技术一览 - 知乎 (zhihu.com)

街景门牌号码(SVHN)数据集 - Heywhale.com

伪标签还能这样用?半监督力作UPS(ICLR 2021)大揭秘! - AMiner

原文地址:https://www.cnblogs.com/chenbong/p/15119582.html