【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training

&Title

【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第1张图片

  • Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training
  • 代码

&Summary

Dynamic R-CNN是R-CNN系列算法,即两阶段目标检测算法;动态性其实体现在在训练目标检测模型过程中使用动态训练的策略。前面介绍过的Cascade RCNN也可以看作是一种动态训练方法,它在训练过程中不断调整交并比阈值的大小以提高候选框的质量。而论文在训练过程中不仅关注了交并比阈值的动态设置,也在自适应地调整回归损失的形式。实验结果为在MO COCO数据集上相比于SOTA方法的AP提高了1.7%。

论文贡献:

  • 基于目标检测的训练特征,指出基于样本分布的变化而动态调整训练的策略;
  • 提出DLA和DSL的训练方法,仅通过引入两个变量就可以实现;
  • 引入该方法在提高模型性能的同时不会降低其速度。

&Research Objective

根据训练期间提议的统计信息自动调整标签分配标准(IoU阈值)和回归损失函数的形状(SmoothL1 Loss的参数)

&Problem Statement

作者首先指出固定网络设置和动态训练过程之间的不一致问题,这会极大地影响性能。例如,固定标签分配策略和回归损失函数无法适应proposal的分布变化,因此不利于训练高质量的检测器。

为了解决这个问题,作者首先研究一个被忽略的事实,即提案的质量确实比训练过程有所提高,如下图所示。我们可以发现,即使在不同的IoU阈值下,阳性样本的数量仍然显著增加。
【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第2张图片

  • 在分类器训练中如何为提案分配正负标签并不清楚,因为它们的分离可能是模糊的。最广泛使用的策略是为提案和对应的地真值的IoU设置一个阈值。如表1所示,用一定的IoU阈值进行训练,会导致分类器在其他IoU处的性能下降。
    【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第3张图片
  • Cascade R-CNN[3]提供的解决方案是通过几个阶段逐步完善提案,这种方法有效但耗时。

&Method(s)

目标检测包含识别和定位两大任务:识别任务需要区别出图像中的前景和背景;定位任务需要精确地表征目标位置的边界框。为了得到高性能的目标检测模型,论文基于这两个分支进行改进。

包含动态正负样本分配和动态损失函数两个模块,分别用于分类和回归分支。

  • 首先,为了在分类分支获得更高质量的候选框,逐步提高筛选正样本的阈值,阈值的设置结合候选框整体的分布
  • 对于回归分支,改变回归函数的形式以自适应于样本分布的改变,确保高质量样本对模型训练的贡献。

【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第4张图片

DLA

在最初的Faster R-CNN[35]中,通过使用预定义的IoU阈值将框的最高IoU与地面真相进行比较来分配标签。
【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第5张图片
对于Faster R-CNN的第二阶段,T+和T-默认设置为0.5。所以阳性和阴性的定义基本上是手工制作的。
根据对象检测中常见的公式(1)中的标签分配做法,DLA模块可以制定如下:
【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第6张图片
其中Tnow代表当前IoU阈值。考虑到训练中的动态属性,候选框的分布是随时间变化的。我们的DLA会根据候选框的统计结果自动更新Tnow,以适应这种分布变化。

具体来说,我们首先计算候选框与其目标gt之间的IoUs I,然后从I中选择第KI大的值作为阈值Tnow。随着训练的进行,Tnow会逐渐增大,这反映了候选框质量的提高。在实际操作中,我们先计算每批中的第KI大的IoU值,然后每C次迭代使用前者的平均值更新Tnow(一次迭代会产生很多批次),以提高训练的鲁棒性。DLA的大体思路同Cascade RCNN一致,只是选取阈值的方法有所不同。
需要注意的是,IoU的计算已经由原方法完成,所以我们的方法几乎没有额外的复杂性。

DSL

【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第7张图片
作者发现,在训练过程中,回归目标的分布是变化的。如上图所示,计算了不同迭代和IoU阈值下的回归目标的统计数据。

首先,从前两列中,我们发现在相同的IoU阈值下,由于提案质量的提高,随着训练的进行,均值和方差都在下降。在相同的归一化因子下,根据SmoothL1损失函数的定义,那些高质量样本的贡献会降低,这对高质量回归者的训练是有害的。此外,随着IoU阈值的提高,阳性样本的质量会进一步提升,因此其贡献度会进一步降低,这将大大限制整体性能的提升。因此,为了实现高质量的目标检测,我们需要拟合分布变化,调整回归损失函数的形状,以补偿高质量候选框的增加。

(由于均值和方差均减小,预测的偏移也会减小即损失值减小,而此时正样本的比例是在不断变大的。即相对减小了高质量的正样本在训练过程中的贡献)
在这里插入图片描述
在rcnn中默认β为1,x代表回归误差。
【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第8张图片
上图展示了SmoothL1损失函数的不同参数设置得到的损失和梯度变化情况。随着β值的减小,梯度更快趋于饱和,从而使较小的误差对模型的训练有更大的贡献。(按这样说的话,那L1 loss岂不是直接饱和了,不更好???

黑人问号: a中的虚线的L1 loss是什么意思???β为1的时候不就是L1 loss了吗,为什么这两条线差这么多???

则回归损失函数的形式如下:
在这里插入图片描述

具体的做法是,首先候选框与其匹配的真实框的回归损失E,然后选择第Kβ小的值作为当前β值。在具体实践中,首先计算每批次样本中的第Kβ小的损失值,然后每C个迭代使用前者的中间值更新β (上面使用的是中位数)。

&Evaluation

  • 两个组件的消融实验:
    【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第9张图片

  • 三个超参数的调参实验:
    【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第10张图片
    【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第11张图片
    【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第12张图片

  • 跟Cascade rcnn比较速度(精度是比不过了,只能挑自己优势的比),其实像cascade rcnn这样的三个head,速度慢不是正常的吗???所以仅仅只有一个head的动态rcnn速度比cascade rcnn不应该是理所应当的吗??
    【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第13张图片

  • SOTA比较:话说,为啥文中说,超过了之前所有的算法????不是很明显跟Cascade RCNN没得比吗???DLA和DLS加起来在resnet50-FPN也才提点1.9个AP

    Dynamic R-CNN applies our method on FPN-based Faster R-CNN with ResNet-101 as backbone, and it can achieve 42.0% AP without bells and
    whis- tles. Dynamic R-CNN* adopts image pyramid scheme (multi-scale
    training and testing), deformable convolutions and Soft-NMS. It
    further improves the results to 50.1% AP, outperforming all the
    previous detectors.
    动态R-CNNN在基于FPN的Faster R-CNN上应用我们的方法,以ResNet-101为骨干,在没有花哨的情况下可以达到42.0%的AP。动态R-CNN采用图像金字塔方案(多尺度训练和测试)、可变形卷积和Soft-NMS。动态R-CNN采用图像金字塔方案(多尺度训练和测试)、可变形卷积和Soft-NMS,进一步提高了50.1%的AP值,超越了之前所有的检测器。

    【论文笔记】:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training_第14张图片

&Conclusion

论文以实验结果引入,得出在训练目标检测模型的过程中应随着样本的分布变化而动态设置分类器和回归器的结论。借鉴Cascade RCNN中动态训练的设置,论文提出DLA在训练过程中动态改变交并比阈值以提高获取样本的质量。接着,借鉴DLADLA的思路,通过修改SmoothL1的参数动态调整回归器的形式,得到DSL。

Personal Thinking

  • 创新性不强,用了蛮多图表分析得很有道理的感觉,但其实很多图表都不明白作用是啥,或者说不出实质性的东西来(有些能说明的东西其实在cascade rcnn中都有了)。
  • 跟cascade rcnn的精度比肯定没得比,如果要比的话,也只能是DLA和cascade rcnn比,这精度差得很多(cascade rcnn r50-fpn:40.3,DLA r50-fpn:38.2)。所以肯定挑跟弱的比啊。跟强的,比一下自己的优势的东西。不过话说,这篇的问题分析,跟cascade rcnn很像,换句话说是沿用了cascade rcnn的问题分析,提出了另一种解决方法。却没有明确的跟cascade rcnn比(只比了速度)。
  • 本文可以借鉴的思路是,在训练目标检测器时应随着数据的变化而动态地改变训练的策略,文中给出了分类器和回归器两个方面。借鉴这个思路,找一下其他的方面来做。
  • 数据的分析很重要,这篇文章的曲线图很多,表格也很多。说明问题分析(工作量)还是值得肯定的。

参考

借助了下面的这篇,理解文章的一些图表,不然还真不知所以然。

  • (二十一)论文阅读 | 目标检测之Dynamic RCNN

你可能感兴趣的:(#,分类与回归,计算机视觉)