目标检测动态训练算法 Dynamic R-CNN | Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training
动态设定label阈值和动态smooth L1 loss
Github:https://github.com/hkzhang95/DynamicRCNN
Abstract:
尽管近年来两阶段目标检测器一直在不断提高其最先进的性能,但训练过程本身离crystal还很远。在这项工作中,我们首先指出固定网络设置与动态训练过程之间的不一致问题,这会极大地影响性能。例如,固定的标签分配策略和回归损失函数不能适应proposals的分布变化,因此不利于训练高质量的检测器。因此,我们提出Dynamic R-CNN根据训练期间proposals的统计信息自动调整标签分配标准(IoU阈值)和回归损失函数的shape(SmoothL1 Loss的参数)。这种动态设计更好地利用了训练样本,并推动了检测器以适应更多高质量的样本。特别是,我们的方法在MS COCO数据集上以1.9%的AP和5.5%的AP90改进了ResNet-50-FPN基线,而没有额外的开销。
Introduction:
目标检测中,尚不清楚如何在分类训练中为proposals分配正负样本的标签,因为它们之间的分隔可能不明确,这也就是label asignment问题。现有算法最广泛使用的策略是为proposals与对应的gt的IOU设定阈值。如表1所示,使用特定IoU阈值进行训练将导致分类器降低其他IoU的性能。但是,由于缺乏正样本,我们不能从训练开始就直接设置高IoU。 Cascade R-CNN 提供的解决方案是分几个阶段逐步完善proposals,这种方式既有效又耗时。至于回归器,问题是相似的。在训练过程中,proposals的质量得到了提高,但是固定了SmoothL1损失中的参数。因此,这导致对高质量proposals的训练不足(cascade rcnn中的阈值设置是固定,无法根据proposals的质量而进行动态调整,因此存在缺陷).
为了解决这个问题,本文首先验证了一个事实,即proposals的质量确实在训练过程中得到了改善,如图1所示。可以发现,即使在不同的IoU阈值下,正样本的数量仍然显着增加。受此启发,本文提出了Dynamic R-CNN,是一种简单有效的方法,可以更好地利用动态质量的目标检测proposals。 它由两个部分组成:动态标签分配和动态SmoothL1损失,分别用于分类和回归分支。
Dynamic R-CNN:
如图3所示,为了更好地利用训练过程的动态特性,本文提出了Dynamic R-CNN。主要创新是调整了第二阶段分类器和回归器以调整proposals的分布变化。 主要包含Dynamic Label Assignment与Dynamic SmoothL1 Loss两个部分。具体来说,训练过程中,首先逐步动态调整Label Assignment的阈值,然后动态调整SmoothL1 Loss的beta参数来适应proposals分布的变化.。
A.Dynamic Label Assignment
动态标签分配(DLA)过程如图3(a)所示,其公式可以表示为:
式中,Tnow代表当前的IoU阈值。 考虑到训练的动态特性,proposals的分布随时间而变化。 DLA会根据proposals的统计信息自动更新Tnow,以适应分布的变化。 具体来说,
1)首先计算proposals及其目标gt之间的IoU集合I,然后从I中选择第KI大的值作为阈值Tnow(第一次直接使用第KI大的Iou值作为阈值)。
2) 随着训练的进行,Tnow将逐渐增加,这反映了proposals质量的提高。 在实践中,首先计算每个批次中的KI个最大值,然后每C次迭代使用以上数值的平均值来更新Tnow以增强训练的鲁棒性。(后续迭代使用KI大的Iou数值的平均值作为阈值)。
应该注意的是,IoU的计算已经通过原始方法完成,因此本文方法几乎没有额外复杂性。 训练中使用的合成IoU阈值如图3(a)所示。
B.Dynamic SmoothL1 Loss
检测中常用的Smooth L1 Loss公式表示为:
式中,x代表回归误差。 beta是一个超参数,用于控制在哪个范围内应使用更软的损耗函数(如l1损失)而不是原始的l2损耗。 考虑到训练的鲁棒性,默认设置为1.0,以防止由于早期训练网络不良而导致的爆炸损失。 接下来详细解释一下 beta对于训练梯度的影响。
如图4所示,其中beta变化导致损耗和梯度的曲线不同。 很容易发现,较小的值beta实际上会加速梯度幅度的饱和。图4(b)显示了,较小beta曲线下,回归误差较小值梯度值更大。因此,较小回归误差的样本,即高质量proposals对网络训练的贡献更大。
由于需要对proposals的分布变化进行调整并调整回归损失函数,以补偿高质量的样本。 因此,提了用Dynamic SmoothL1 Loss(DSL)来更改损失函数的shape,以逐渐关注高质量样本,如下所示:
类似于DLA,DSL将根据回归误差的统计信息来更改beta_now的值,该统计信息可反映定位精度。 具体地说:
1)首先获取proposals及其目标gt之间的回归误差E,然后从E中选择第K个最小值,以更新等式(5)中的值。
2)每C次迭代使用每批中K个最小误差的中位数来更新。 本文选择中位数代替分类中的均值,因为在回归误差中我们发现了更多异常值。 】
通过这种动态方式,现在将自动采用如图3(b)所示的适当方法,这将更好地利用训练样本并生成高质量的回归变量。
Experiments:
1.coco上相较于Faster R-CNN,稳定提升1.8个点左右
2.Ablation Experiments