论文解读 Learning Data Augmentation Strategies for Object Detection

目录

  • Learning Data Augmentation Strategies for Object Detection
    • Motivation
    • Method
    • 实验结果
    • 结论

Learning Data Augmentation Strategies for Object Detection

今天介绍一篇来自 Google Brain 团队的工作 “Learning Data Augmentation Strategies for Object Detection”,作者是 Barret Zoph, Ekin D. Cubuk, Golnaz Ghiasi, Tsung-Yi Lin, Jonathon Shlens, Quoc V. Le。

这篇文章可以看做是之前 AutoAugment 的扩展,在检测任务上搜索一个好的数据增强方案。作者在 AmoebaNet + NAS-FPN 上用搜出来的数据增强方法能达到 50.7 的 COCO validation mAP。

Motivation

首先回顾一下 AutoAugment:对于图像分类任务通常要用到一系列的数据增强手段,比如左右翻转 Flip,对比度/饱和度增强,Resize,等等。使用哪些数据增强方法、每个方法使用几次、每个方法被使用到的概率、方法之间的顺序可以构成一个庞大的搜索空间,然后用 AutoML 的方法搜一个不错的组合,一般要比人工设计的数据增强策略要效果好。

Method

而在这篇 Paper 中,目标任务的任务从分类变成了检测,首先作者提出一个观点:在检测任务中如果直接采用分类任务的数据增强策略,带来的涨点是有限的。检测任务上有一些和框的位置有关的数据增强方法,比如旋转角度,仿射变换,是分类任务上没有的。因此有必要针对检测任务专门搜最优的数据增强方法。

作者将检测任务上的数据增强策略搜索看成了一个离散优化问题(discrete optimization problem)。

首先作者定义了22个数据增强运算,包括对颜色、几何变换、框位置的变换进行增强。官方的 TensorFlow 代码可以在这里找到。一些运算的介绍如下表所示:
论文解读 Learning Data Augmentation Strategies for Object Detection_第1张图片
有一些数据增强运算,比如 Mixup,Manifold Mixup,Dropblock 作者发现加进去会掉点,就没有采用。

有了这22个数据增强运算,怎么构成搜索空间呢?作者规定了最终的数据增强策略由 K 个子策略 (sub-policies)组成,每个子策略包含 N 个数据增强运算。每个运算又包含两个超参数:被用到的概率 P 和强度 M。P 和 M 被离散化为6份。训练的时候,每次抽一个子策略,然后把这个子策略包含的数据增强运算应用到图片上。

这样整个搜索空间的大小为:
( 22 × P × M ) K × N = ( 22 × 6 × 6 ) 5 × 2 ≈ 9.6 × 1 0 28 (22 \times P \times M)^{K \times N} = (22 \times 6 \times 6)^{5 \times 2} \approx 9.6 \times 10^{28} (22×P×M)K×N=(22×6×6)5×29.6×1028

可视化这些候选子策略如下图所示:

在这么大的一个候选空间找到候选解,Grid Search 肯定是不行的,需要用 Auto ML 的方法来搜。作者用了常见 RNN 控制器+ 强化学习的方法,proximal policy optimization (PPO) 算法。也就是 RNN 在每个 step 来预测挑选哪些子策略,把 RetinaNet 在 validation set 上的 mAP 作为反馈。

在整个 COCO 数据集上搜比较费时间,所以作者从 COCO 上抽了 5K 数据作为训练集,7392 张图片作为验证集,检测算法是 ResNet50 + RetinaNet,在 400 块 TPU 上训练了 8 小时。

最后搜出来的“丹方”如下表所示:
论文解读 Learning Data Augmentation Strategies for Object Detection_第2张图片

实验结果

观察最后搜出来的结果,作者发现这三个数据增强方法经常被用到:

  1. Rotate ,就是整张图和框一起旋转;
  2. Equalize ,直方图均衡化
  3. BBox Only TranslateY,仅对框的位置做垂直向上或向下翻转
    看来在检测任务上,这些运算比较重要。

随后作者使用不同的 backbone 网络 (ResNet50, 101, 200),分别进行了两组对照实验。一组是 baseline 方法,在 RetinaNet 上使用传统的数据增强策略(0.5的概率水平翻转,multi-scale jittering,图片先 resize 到 [512,786] 之间,再 crop 成 640x640);还有一组是在RetinaNet 上使用搜出来的数据增强策略。实验结果如下表:
论文解读 Learning Data Augmentation Strategies for Object Detection_第3张图片
可以看出,作者搜出来的策略更好,即使是大模型上也能涨 2.2。

此外,作者的 22 个数据增强运算,包括对颜色、几何变换、框位置的变换三部分,作者验证了每一部分都是必要的,如下表所示:
论文解读 Learning Data Augmentation Strategies for Object Detection_第4张图片
为了验证搜出来的策略能迁移到别的检测方法上,作者在 AmoebaNet + NAS-FPN 的方法上进行了尝试,结果仍然能涨 1.6。加上一些把图拉大、anchor 数量增加的 tricks,最终能在 COCO 验证集上取得 50.7 的 mAP。 这个单尺度训练、单模型的成绩已经超过了 17 年的 COCO 冠军。
论文解读 Learning Data Augmentation Strategies for Object Detection_第5张图片
同样是为了验证方法的普适性,作者用 Faster RCNN + Res101,在 PASCAL VOC 上进行了验证,同样能涨 2.7。

数据增强的方法一般在数据集比较少的时候比较有用。因此作者就从 COCO 中抽出来 { 5000, 9000, 14000, 23000} 张图片来训 RetinaNet,分别做两组实验:baseline,baseline + 学到的数据增强策略。结果如下:
论文解读 Learning Data Augmentation Strategies for Object Detection_第6张图片
论文解读 Learning Data Augmentation Strategies for Object Detection_第7张图片
作者得出结论,

  1. 训练集数据很小的时候,数据增强方法带来的涨点最多;
  2. 在小物体上涨的特别多

进一步分析在IoU卡 0.5, 0.75,[0.5:0.95:0.05]时候的增益,效果如下:
论文解读 Learning Data Augmentation Strategies for Object Detection_第8张图片
可以看出,在AP75的时候涨点最多,说明框回归的更准了,这也可能是在小物体上能涨点的原因。

作者还观察到加了数据增强后,如下面两张图所示,网络收敛时候的 loss 变小了,权重的 L2-norm 变小了,说明有一定正则化的作用。
论文解读 Learning Data Augmentation Strategies for Object Detection_第9张图片
论文解读 Learning Data Augmentation Strategies for Object Detection_第10张图片

结论

个人觉得这篇 paper 还是 AutoAugment 的思路,换了个检测的搜索空间。以后肯定也会有工作再换到分割、点云的搜索空间上。这一类 paper 最大的 novelty 在于如何设计一个好的搜索空间;其次才是如何设计高效的搜索方法,比如FastAutoAugment这一系列。

如果有理解不到位的地方,欢迎大家在评论区指正。

你可能感兴趣的:(AutoML,深度学习,计算机视觉,目标检测,数据增强,AutoML)