论文:Bag of Freebies for Training Object Detection Neural Networks
发表日期:2019.2.11
github:GluonCV,模型的预训练权重可在GluonCV工具包中获得。

本文介绍一篇很棒的目标检测训练技巧论文。该论文是由Amazon Web Services 提出,其中作者团队中就有李沐等大神。之前Amazon还提出图像分类的Tricks论文,详见 亚马逊:用CNN进行图像分类的Tricks

Abstract

目标检测训练与图像分类模型的研究相比,相对缺少普遍性。由于网络结构和优化目标明显更加复杂,因此针对某些检测算法而不是其他检测算法专门设计了各种训练策略和 pipelines。在这项工作中,我们探索了有助于将最先进的目标检测模型的性能提升到一个新水平而不牺牲推理(inference)速度的通用调整。我们的实验表明,这些训练秘籍(freebies)可以在精度上增加5%,因此每个人都应该考虑在一定程度上将这些训练秘籍应用于目标检测训练中。

1. Introduction

目前,不管是one-stage还是two-stage,最先进的目标检测的骨干网络都是基于图像分类。

由于模型容量和训练复杂度相对较高,目标检测受到的关注较少,从最近的训练调整研究中获益较少。更糟糕的是,不同的检测网络都是在没有明确初始化、数据预处理和优化分析的情况下,对自己的训练pipielines进行选择性的挑选,导致在采用提升图像分类的最新技术时出现了大量的问题。

本文的工作,重点探讨可以提升常用目标检测网络的性能,而不引入额外的计算成本。第一,探索mixup技术。我们认识到多目标检测任务支持空间保留变换的特殊属性,并因此提出visually coherent image mixup方法。第二,我们探讨了详细的训练流程,包括学习速率调度、权重衰减和同步batchnorm。第三,通过逐步叠加training tweaks训练single stage和multiple stage目标检测网络,来研究training tweaks的有效性。

本文的主要贡献:
1)我们是第一个系统地评估各种目标检测 pipelines 中应用的各种训练启发式方法,为未来的研究提供了有价值的实践指导。
2)我们提出了一种用于训练目标检测网络的visually coherent image mixup方法,该方法被证明在提高模型通用能力方面非常有效。
3)在不改变网络结构和损失函数的情况下,基于现有模型,我们 achieved up to 5% out of 30% absolute average precision。
4)我们扩展了目标检测数据增广领域的研究深度,显著增强了模型泛化能力,有助于减少过度拟合问题。实验还揭示了可以在不同网络结构中一致地提高目标检测性能的良好技术。

2. Related Work

2.1. Scattering tricks from Image Classification

图像分类是所有计算机视觉任务的基础。与常用的目标检测和语义分割模型相比,分类模型成本低,因此吸引了大量的研究人员进行研究。在本节中,我们将简要介绍之前对图像分类有重要意义的工作。[1]引入学习率预热启发式方法,克服了大量minibatch带来的负面影响。尽管经典目标检测算法在训练中使用的minibatch量级与图像分类中的比例相差甚远(10k或30k),但大量的anchor(相当于30k)有效的影响了batch的量级。

在我们的实验中,对于YOLOv3[16]来说,逐渐预热启发是至关重要的。有一系列的方法试图解决深层神经网络的脆弱性。标签平滑技术可以修正交叉熵损失下的ground truth,mixup能够缓解对抗性扰动。相比传统的阶跃step策略,提出了一种基于余弦的学习速率衰减策略。bag of tricks在训练准确性方面取得了显著的提高。在本文中,我们深入探讨了在目标检测背景下,图像分类引入的启发式技术。

2.2. Deep Object Detection Pipelines

one-stage目标检测模型通过一个全卷积网络进行结果预测,因此能够保持空间对齐(除了YOLO最后采用的是全连接层)。然而,在two-stage目标检测模型中,例如Fast RCNN和Faster RCNN,最终的预测结果是用一个specific region of interests(RoIs)采样池化之后的特征生成的。目前RoIs都是通过神经网络或确定性算法(如Selective Search)来获取的,这一重大差异导致了数据处理和网络优化方面的显著差异。比如,由于one-stage算法缺少空间变化,空间数据增强对提升模型性能是非常重要的(已被SSD证明)。由于缺少探究,one-stage系列算法的训练细节都是独有的,不能统一。本文将系统的研究能够帮助提升one-stage和two-stage算法的方法。

3. Technique Details

在这部分,本文针对目标检测算法提出visual coherent image mixup方法,并引入数据处理和设计训练方法以改善检测器的模型性能。

3.1. Visually Coherent Image Mixup for Object Detection

[2]引入的mixup被证明能够有效缓解分类网络中的对抗性扰动。[2]提出的mix-up算法中混合比的分布由beta分布得出,其中(a = 0.2, b = 0.2)。大多数mix-ups都是beta分布的噪声。在[3]启发式实验的启发下,本文重点研究了在目标检测中发挥重要作用的自然共现对象表示。本文引入了自然图像中常见的遮挡和空间信号扰动,以获取更复杂的空间变换特征。

我们的实验证明,继续增加mixup的混合比,会使得到的每帧图像中的对象更加突出,自然呈现更加连贯,类似于低帧电影中常见的过渡画面。图2和图3分别给出了图像分类和这种高混合比的可视化比较。特别地,我们对图像mixup进行几何保持对齐,以避免出现失真图像。我们设定了一个有更直观连贯比的beta分布,其中a >= 1和b >= 1,而不是采用在图像分类中相同的做法,如图4。


在我们的实验中,采用YOLOv3网络取混合比的经验值在Pascal VOC数据集上进行了测试。表1显示了采用检测mixups的实际改进情况。Alpha和Beta都取1.5的beta分布略优于都取1.0(相当于均匀分布)的情况,也比固定值甚至mixup好。


为了验证visually coherent mixup方法的有效性,我们沿用了[Elephant in the room]的实验,即移动一个大象图像经过一个室内房间图像。我们在COCO 2017数据集上训练了两个YOLOv3模型,其中配置相同,只不过沿用了我们的mixup方法。如图5

3.2. Classification Head Label Smoothing

3.3. Data Preprocessing

与图像分类域不同,分类网络对图像的几何变换具有极大的容忍度。事实上是鼓励这样做,以提高泛化的准确性。然而,由于目标检测网络对图像几何变换更加敏感,对图像的预处理需要十分谨慎。

我们实验回顾了以下几种数据增强方法:

  • 随机几何变换。包括随机裁剪(带约束),随机扩展,随机水平翻转和随机缩放(随机插值)。
  • 随机颜色抖动(jittering),包括亮度,色调,饱和度和对比度。

就检测网络类型而言,目前分为两类:第一,one-stage算法,由特征图上的每个像素点预测最终输出;第二,two-satge算法,生成大量的ROI候选框,并进行固定数量的采样,检测结果由对应候选框大小的特征图区域生成,且预测结果的数量与固定采样数量成正比。

由于基于采样的方法在特征图上重复了大量的裁剪操作,因此它代替了随机裁剪输入图像的操作,因此这些网络不需要在训练阶段进行大量的几何增强

3.4. Training Scheduler Revamping

训练过程中,学习率逐渐由大变小。例如,step阶跃方法是使用最广泛的学习率方法。使用此方法时,当达到预定义的训练轮数或迭代次数时,学习率会乘以一个小于1的常数。比如,Faster-RCNN默认阶跃学习率是在60k次迭代之后将学习率衰减10倍。相似的,YOLOv3在40k次迭代和50k次迭代之后将学习率分别衰减10倍。阶跃机制具有快速的学习率转换特性,以便优化器在接下来的几个迭代中重新稳定学习动量。相比之下,有人提出了一种更平滑的余弦学习速率调整机制。余弦机制根据cosine函数在0到pi上的值来调整学习率。它从缓慢降低大的学习速度开始,然后在中途快速降低学习速度,最后以微小的斜率降低小的学习速度直至达到0。

warm-up学习率是另一种常见的策略,以避免在初始训练迭代时发生梯度爆炸。warm-up学习率机制对几种目标检测算法非常重要。比如YOLO v3,warm-up在最开始的迭代时有一个主导的负样本梯度,其中在大多数预测中sigmoid分类分数被初始化约为0.5,偏置约为0。

使用余弦学习率机制和适当的warm-up机制,会得到更好的验证集准确率,具体如图6,在训练过程中,使用余弦机制的验证集mAP始终比使用阶跃机制的要好。由于频繁调整学习率,也较少出现阶跃衰减的平台现象,即验证集性能会停止增长一段时间,直至学习率降低。

3.5. Synchronized Batch Normalization

近年来,大量的计算需求迫使训练环境必须装备多个设备(通常是gpu)来加速训练。尽管在训练过程中处理不同的超参数以响应更大的batch size,但是Batch Normalization由于其实现细节引起了多GPU用户的注意。尽管Batch Normalization在多GPU上的经典实现很快(没有通信开销),但它不可避免地会减少batch size大小,并在计算期间导致统计数据略有不同,这可能会降低性能。

在一些标准的视觉任务中,例如ImageNet分类,这不是一个重要的问题(因为每个设备的batch size大小通常足够大,可以获得良好的统计数据)。然而,在某些任务中,batch size大小通常非常小(例如,每个GPU 1个),这会影响性能。最近,同步批处理规范化synchronized batch normalization已被证明在目标检测中是非常重要的。在这项工作中,我们用YOLOv3回顾了与同步批处理规范化的重要性,以评估相对较小的batch size大小对每个GPU的影响,因为训练图像形状的batch size明显大于图像分类任务。

3.6. Random shapes training for single-stage object detection networks

自然图片的尺寸往往是不同的,为了适应内存限制和简单的批处理,许多one-stage目标检测网络采用固定尺寸训练。为了减少过拟合的风险和改善网络的泛化能力,我们采用随机尺寸的图片作为训练集来训练。具体的,mini-batch为N的训练图片会被resize成N x 3 x H x W,例如在YOLOv3的训练中

4. Experiments

本文分别采用YOLOv3和Faster-RCNN作为one-stage和two-stage实验的代表。为了适应大规模的训练任务,我们使用Pascal VOC数据集进行微调评估,COCO数据集用于验证整体性能增益和泛化能力。

Pascal VOC. Fast-RCNN和SSD沿用了常规设置,我们使用Pascal VOC 2007 trainval和2012 trainval作为训练集,2017 test作为验证集,结果用平均准确率mAP来衡量。对于YOLOv3模型,我们在416 x 416像素上用mAP作为衡量标准。如果训练集为随机尺寸,YOLOv3的输入将为320 x 320到608 x 608,增量为32,否则将一直以固定大小416 x 416进行训练。Faster-RCNN可以任意尺寸作为输入,为了减少内存消耗,短边被调整为600像素,同时保证长边小于1000像素。Faster-rcnn模型的训练和验证遵循相同的预处理步骤,另外训练集图片有50%的几率水平翻转作为数据增强。YOLOv3和Faster-RCNN采用我们的秘籍(BoF)的实验分别如表2和表3。结果表明,通过叠加这些技巧,YOLOv3模型可以获得高达3.5%的性能增益,而faster-rcnn模型的效果提升相对较少,但获得了类似的性能提升。实验表明数据增强对two-stage模型的影响很小,如Faster RCNN,但由于缺少空间变换,数据增强对像YOLOv3这样的one-stage模型有重大的影响。


MS COCO. 相对Pascal VOC数据集来说,COCO 2017数据集是它的10倍大,并包含小目标。我们采用MS COCO来验证我们秘籍的泛化性能。我们采用类似Pascal VOC的训练和验证设置,另外Faster-RCNN被调整到800 x 1300来响应小目标对象。结果如表4。相比目前基于ResNet50和ResNet101的最好的模型,我们的秘籍在Faster-RCNN模型上分别提升了1.1%和1.7%的mAP。相比现有的YOLOv3模型,我们提出的秘籍能将性能提升4.0%。所有这些结果都是通过在完全兼容的推理模型中生成更好的权值得到的,即,所有这些成就都是推理过程中的免费午餐。

Impact of mixup on different phases of training detection
network
. Mixup方法可以应用在目标检测的两个阶段:1)在预训练分类网络的backbone网络使用mixup;2)利用提出的visually coherent image mixu方法训练目标检测模型的检测网络。我们对比基于Darknet 53-layer的YOLOv3和基于ResNet101的Faster-RCNN的结果,分别如表5和表6。虽然结果证明在这两个阶段的任何一个阶段采用mixup方法都能获得持续的改善,但是两个阶段都采用mixup方法会取得1+1>2的效果。

5. Conclusion

本文提出了训练增强秘籍,在inference环境下引入零开销,显著提高模型性能。YOLOv3和Faster-RCNN在Pascal VOC数据集上的实验证明,我们的方法能够改善目标检测模型。通过叠加所有这些调整,我们没有观察到任何级别的性能下降迹象,并建议在未来的对象检测训练不管是one-stage还是two-stage中更广泛地采用。

更多推荐

Bag of Freebies for Training Object Detection Neural Networks学习笔记