1. 概述
这篇文章主要将介绍了一些在目标检测算法中的一些优化技巧,在优化过程中并不会修改网络,或者带来额外的计算量开销。文章的可以概括如下:
1)对于目标检测提出一种基于视觉相关的图像混合方法;
2)探究了详细的网络训练方法,包括损失函数、学习率、权重衰减以及多设备BN参数同步;
3)在单阶段与两阶段检测算法中检测提出技巧进行了对比。
使用文章中的方法进行优化,得到的优化见下图,至少提升了1个点。
2. 技巧
2.1 图像mix-up
原有的mix-up分布是
a
=
0.2
,
b
=
0.2
a=0.2,b=0.2
a=0.2,b=0.2的
β
\beta
β分布,这样相加相当于是增加噪声,但是在目标检测中是不适宜的,其混合的结果见下图
这里从目标检测的自然相关性角度考量
a
>
1
,
b
>
1
a\gt 1,b\gt 1
a>1,b>1,且实验中这两个参数的取值为1.5是好于取1的时候的。使用这里提出的混合方法得到的混合结果见下图:
这是使用的分布曲线图,文中使用的是橙色的曲线。
在YOLO-v3上使用mix-up得到的性能表现详细见下表:
2.2 Classification Head Label Smoothing
在一般情况下Softmax的损失函数计算形式如下:
较为理想的情况是分类的正确结果趋近于1,而错误的分类结果趋近于0,但是Softmax函数是做不到这样的,所以论文中对其进行了平滑操作:
其中,
K
K
K是分类的数目。
2.3 修改学习率曲线
文中说使用余弦学习率变化曲线会取得比step较好的效果,下面是在YOLO-v3上进行实验得到的结果:
2.4 多GPU训练中BN参数同步
论文作者指出由于数据被划分到不同的GPU设备上,这些设备上的统计分布可能是不一样的,这样就会带来一些差异,因而在检测任务同步BN的参数。
2.5 输入图像随机尺度变化
在YOLO-v3中图像的输入尺度范围是$ 320, 352, 384, 416, 448, 480, 512, 544, 576, 608$,相当于是多尺度的训练,对增加对小目标的检测效果有一定作用。
3. 实验
在文章中对涉及到YOLO-v3与Faster R-CNN方法进行实验得到如下结果:
使用文章的方法运用到COCO数据集得到每个类别性能的变化情况: