0
点赞
收藏
分享

微信扫一扫

目标检测优化技巧(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)_train


本文主要讨论训练目标检测网络过程中的一些tricks,在不改变模型结构、不改变损失函数、不牺牲推断时间的前提下,提高目标检测mAP的一些 tricks。

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

提出了一种用于训练目标检测网络的 visually coherent image mixup 方法,该方法被证明在提高模型通用能力方面非常有效。

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


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
  3. 目标检测优化技巧(Bag of Freebies for Training Object Detection Neural Networks)_CNN_03

  4. PyTorch实现:
  5. 目标检测优化技巧(Bag of Freebies for Training Object Detection Neural Networks)_tircks_04

参考资料:
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形式,公式如下所示,

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


其中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)_CNN_06


参考资料:

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​​


举报

相关推荐

0 条评论