目标检测优化技巧(Bag of Freebies for Training Object Detection Neural Networks)

关于Mu Li关于图像分类优化技巧的文章见
图像分类优化技巧(Bag of Tricks for Image Classification with Convolutional Neural Networks)

Bag of Freebies for Training Object Detection Neural Networks,李沐大神19年2月的新作,用卷积神经网络进行目标检测的一些技巧。
论文:Bag of Freebies for Training Object Detection Neural Networks
目标检测优化技巧(Bag of Freebies for Training Object Detection Neural Networks)_第1张图片
本文主要讨论训练目标检测网络过程中的一些tricks,在不改变模型结构、不改变损失函数、不牺牲推断时间的前提下,提高目标检测mAP的一些 tricks。

1 视觉相关图像混合(Visually Coherent Image Mixup for Object Detection)

提出了一种用于训练目标检测网络的 visually coherent image mixup 方法,该方法被证明在提高模型通用能力方面非常有效。
目标检测优化技巧(Bag of Freebies for Training Object Detection Neural Networks)_第2张图片
Zhang 等人在 mixup: Beyond Empirical Risk Minimization 中引入的mixup 被证明在分类网络中减少对抗干扰方面非常成功。他们提出的混合算法中混合比例的分布来自β分布(a = 0.2, b = 0.2)。大多数的混合几乎都是这种β分布的噪声。

这里,作者从三个角度去改进mixup,使之应用于目标检测。

  1. 用了较高的混合比(mixup ratio),理由是:通过增加混合比例由此产生的帧中的目标更有活力,也更符合自然表现,类似于低 FPS 电影中常见的过渡帧
  2. 通过采用保留几何形状并对齐的方式以避免在初始步骤中扭曲图像;
  3. 选取a>=1,b>=1的beta distribution,因为这种分布视觉相干性更强。

分析:

  1. 图像分类任务中也可以使用Mixup的策略,但是混合比率的分布如图 Fig.4 中红色线所示,显然大多数时候混合比率的值接近0或者1,也即合成图片等价于添加噪声的过程。
  2. 目标检测任务中使用的Mixup策略,混合比例的分布如图 Fig.4 中黄色线所示,显然大多数时候混合比率的值接近0.5
    目标检测优化技巧(Bag of Freebies for Training Object Detection Neural Networks)_第3张图片
    PyTorch实现:
    目标检测优化技巧(Bag of Freebies for Training Object Detection Neural Networks)_第4张图片

参考资料:
1 mixup: Beyond Empirical Risk Minimization
2 如何评价mixup: BEYOND EMPIRICAL RISK MINIMIZATION?
3 从SamplePairing到mixup:神奇的正则项

2 标签平滑策略(Classification Head Label Smoothing)

检测任务有两个输出分支,包括Classification Head和 Regression Head,对于分类的分支可以采用图像分类算法中常用的标签平滑策略。
label smoothing的思想就是对真实标签q进行改造,使其不再是one-hot形式,公式如下所示,
在这里插入图片描述
其中K表示类别数,e是一个很小的常数。举个例子,假设K=5,e=0.1,那么原来q=[0,0,1,0,0],现在q’=[0.02,0.02,0.92,0.02,0.02]。这样在中,当q‘处于非真实标签时仍然有损失值(比如0.02),就使得pi不会非常接近1,这就降低了过拟合风险。

参考资料:
1 Rethinking the inception architecture for computer vision
2 label smoothing pytorch版本

3 数据预处理(Data Pre-processing)

本文将数据增强分为两类,几何形变和颜色抖动。

  1. 随机几何变换。包括随机裁剪(带约束),随机扩展,随机水平翻转和随机缩放(随机插值)。

  2. 随机颜色抖动(jittering),包括亮度,色调,饱和度和对比度。

分析:

  1. 分类任务鼓励几何形变以提升准确率,然而检测任务中需要谨慎因为检测网络对这类形变较为敏感。
  2. 多阶段方法与一阶段在数据增强方面相比较,多了大量的裁剪等空间变化操作,因此不需要太多的几何增强。而几何增强对于缺少空间形变一阶段网络尤为重要。

4 学习率变化策略(Training Scheduler Revamping)

本文比较了三种不同的学习率

  1. the step schedule
  2. cosine learning rate adjustment
  3. Warm up learning rate

发现 cosine schedule + proper warmup 的组合可以获得更好的性能。
目标检测优化技巧(Bag of Freebies for Training Object Detection Neural Networks)_第5张图片
参考资料:
1 SGDR: Stochastic Gradient Descent with Warm Restarts

5 跨卡同步 Batch Normalization(Synchronized Batch Normalization)

图像分类由于每张卡上的batch-size较大,所以影响较小,但是对于目标检测和语义分割来说,每张卡上的batch-size很小, 效果就很明显,尤其当网络很深时,更严重。
在使用单机多卡训练检测模型时,默认情况下,每个卡的样本是相互独立的,也即只对当前卡上的样本做batchnorm操作,当每个卡上的样本量很少时,会导致大的偏差,使效果反而变差。跨卡的Synchronize batchnorm可以使用全局的样本做归一化操作,模型的收敛效果更好。

参考资料:
1 Batch normalization: Accelerating deep network training by reducing internal covariate shift
2 Megdet: A large mini-batch object detector
3 跨卡同步 Batch Normalization

6 随机尺度训练(Random shapes training for single-stage object detection networks)

现实中的训练图像的尺寸通常是各不相同的,为了提高检测模型的鲁棒性,可以考虑将训练集图像分成若干个桶,例如每个桶的图像尺寸分别为320,480,512 {320, 480, 512}320,480,512。在训练的过程中,随机地从一个桶中选取batch图像,用来更新模型的参数。
作者验证了YOLOv3: An Incremental Improvement中提出的多尺度训练方法。
参考资料:
1 YOLOv3: An Incremental Improvement

你可能感兴趣的:(Paper,Reading,Deep,Learning)