Bag of Freebies for Training Object Detection Neural Networks
论文链接: https://arxiv.org/abs/1902.04103
一、 Problem Statement
提出一些tricks来提升目标检测性能。
二、 Direction
- Coherent Image Mixup
- Classification Head Label Smoothing
- Data Preprocessing: Random geometry transformation and Random color jittering
- Training Schedle Revamping
- Synchronized Batch Normalization
- Random shapes training for single-stage object detection network
三、 Method
1. Coherent Image Mixup
通常分类的blending ratio是01:0.9。作者发现,增加image mixup中使用的blending ratio,得到的帧中的对象与自然呈现更具活力和连贯性,类似于我们观看低FPS电影或监控视频时通常观察到的过渡帧,会提升目标检测的性能。
作者也使用beta distribution, α , β \alpha, \beta α,β 都至少是1。
对于相互对象遮挡很常见的目标检测,鼓励网络观察不寻常的crowded pathes,无论是自然呈现的还是由对抗性技术创建的,都能够提升目标检测的性能。在一些目标没出现过的场景,模型的检测会更加的鲁棒性。 Mixup model在训练过程中会遇到更多的挑战,因此在处理前所未有的场景和非常拥挤的对象组方面,它明显优于普通模型。
Mixup 可以使用在目标检测网络的两个阶段:
- pre-training classification network backbone with tradition mixup
- training detection networks using proposed mixup
作者发现,两个都使用了,性能最佳。
2. Classification Head Label Smoothing
多分类任务中,神经网络会输出一个当前数据对应于各个类别的置信度分数,将这些分数通过softmax进行归一化处理,最终会得到当前数据属于每个类别的概率。
p i = e z i ∑ j e z j p_i=\frac{e^{z_i}}{\sum_j e^{z_j}} pi=∑jezjezi
对于训练过程中的目标检测,我们仅通过使用交叉熵比较输出分布
p
p
p和ground-truth分布
q
q
q来修改分类损失:
L
=
−
∑
i
q
i
log
p
i
,
p
i
=
1
if i=y
,
else
0
L = -\sum_i q_i \text{log}p_i, \quad p_i =1 \quad \text{if i=y}, \quad \text{else} \quad 0
L=−i∑qilogpi,pi=1if i=y,else0
而标签平滑,是一种正则化的形式。作者使用了下面的ground-truth分布:
q
i
{
1
−
ϵ
,
i
f
i
=
y
ϵ
/
(
K
−
1
)
o
t
h
e
r
w
i
s
e
q_i \biggl\{ \begin{aligned} &1 - \epsilon, \qquad if \quad i=y \\ &\epsilon/(K-1) \qquad otherwise \end{aligned}
qi{1−ϵ,ifi=yϵ/(K−1)otherwise
其中 K K K是类别的数量, ϵ \epsilon ϵ是一个很小的常量。主要是通过soft one-hot来加入噪声,减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。
3. Data Preprocessing
randomly flip, rotate, crop images都是来提升精度和避免过拟合。作者尝试了两个数据预处理的方法:
- Random geometry transformation
- Random color jettering
由于基于sampling-based的检测方法在特征图上执行大量裁剪操作,它替代了随机裁剪输入图像的操作,因此这些网络不需要在训练阶段应用大量的geometry transformation。 而对于one-stage的检测器来说,这个geometry transformation是很重要的。 而基于sampling-based的方案可以有效地取代one-stage目标检测训练pipeline中大量使用的随机裁剪。
4. Training Schedule Revamping
作者认为,简单的使用step schedule来衰减学习率并不是有效的策略。 step-schedule急剧地改变learning rate,这可能导致优化器在接下来的几次迭代中重新稳定学习动量。 cosin schedule 根据
0
0
0到
π
\pi
π的余弦函数值缩放learning rate。它从缓慢降低较大的学习率开始,然后将学习率快速降低一半,最后以微小的斜率降低小学习率,直到达到0。
由上图可以看到,由于学习率调整的频率较高,它也较少受到阶跃衰减的平台现象的影响,即验证性能将停滞一段时间,直到学习率降低。
Warmup schedule也是一个有效避免梯度爆炸的学习策略,且能获得较好的精度。
5. Synchronized Batch Normalization
在多个GPU下使用Batch Normalization, 它不可避免地减少了批量大小,并在计算过程中导致统计数据略有不同,这可能会降低性能。 所以synchronized batch normalization也是提升性能的一个trick。
6. Random shapes training
为了减少过度拟合的风险并提高网络预测的泛化能力,采用了Random shapes training的方法。对于一个mini-batch N N N,作者把图片reshape成, N × 3 × H × W N \times 3 \times H \times W N×3×H×W, 其中 H = W ∈ { 320 , 352 , 384 , 416 , 448 , 480 , 512 , 544 , 576 , 608 } H=W \in \{320, 352,384, 416,448,480,512,544,576,608\} H=W∈{320,352,384,416,448,480,512,544,576,608}
四、 Conclusion
提出了提升目标检测性能的tricks。