论文阅读|训练过程中动态改变训练方案的Dynamic R-CNN

论文相关信息

1.论文题目:Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training

2.发表时间:2020.04

3.文献地址:https://arxiv.org/abs/2004.06002

4.论文源码:https://github.com/hkzhang95/DynamicRCNN

论文贡献:

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

Abstract。

作者指出two-stage detectors固定的网络设置和动态的训练过程存在不一致问题,使得网络性能下降,例如固定标签分配策略回归损失函数就无法拟合动态变化的proposal分布,进而不利于训练一个高质量的检测器。因此,作者提出Dynamic R-CNN,能够基于训练中的proposals的统计数据来自动地调整标签分配标准(IoU阈值)和回归损失函数的形式(Smooth L1 Loss的参数)。这种动态的设计能够更好的利用训练样本,促使检测器能够拟合更多高质量的样本。该方法使得基于ResNet-90-FPN在MS COCO数据集上AP提高 1.9%,AP90提高 5.5%。

这里的高质量检测器指的是检测结果是在高IoU下的。

1 Introduction

无论是one-stage还是two-stage 的检测器,其pipeline都可以看作是训练一个classifier和一个regressor。对于classifier的训练,主要问题是如何判断proposals是正样本还是负样本,之前传统的方法是通过proposals和gt之间的IoU阈值来判断。但是正如Cascade R-CNN中所述,以一个固定的IoU阈值训练得到的检测器在应用其它的IoU阈值时表现会下降。然而也不能开始训练时就设置很大的IoU阈值,否则会导致正样本过少,Cascade R-CNN中的方法是通过IoU阈值逐渐增大的几个阶段来组件的精炼proposals,这种方法虽然有效,但是time-consuming。对于regressor来说,问题是相似的,虽然在训练的过程中proposals的质量不断提高,但是Smooth L1 Loss的参数却是固定不变的,训练得到的检测器离高质量检测器仍有距离。

首先作者观察到一个被忽略的事实,即在训练的过程中proposals的质量是在提高的。如图1所示,即使在不同的IoU阈值下,随着训练过程的进行,正样本的数量都在显著提高。
在这里插入图片描述

图1.a和b图都证实了训练过程中proposals的质量得到提高。

受此观察的启发,作者提出Dynamic R-CNN,其由两部分组成:Dynamic Label AssignmentDynamic Smooth L1 Loss,分别对应分类回归分支。

对于classifier,基于训练时proposals分布逐渐调整IoU阈值来得到一个能够区分高IoU建议框的分类器。将阈值设置为让proposals 的IoU保持一定的比例,这样能够反映总体分布的质量。

对于regressor来说,改变回归损失函数的形状,来适应性地拟合回归目标的分布变化,确保高质量样本对训练的贡献。因为β控制着小误差梯度的大小,所以这里会基于回归目标的分布来调整Smooth L1中的β。

通过这套动态方案,不仅能够缓解训练开始时缺少数据的问题,同时还能够享受高IoU训练的好处。这两个模块对于检测器的不同部分,因此能够合作工作来得到一个高质量的目标检测器。该模型简单高效,能够泛化到其它任务上,推断时不会引入额外的代价。

2 Related Work

这部分简单介绍R-CNN系列检测器,指出目标检测中常用到的分类方法以及边界框回归方法。

Region-based object detectors.基于区域的目标检测器一般将目标检测器任务分为边框分类和回归问题。其中为代表的检测器是R-CNN,Fast R-CNN,Faster R-CNN等,他们首先生成大量的候选建议框,然后从这些候选框中按照一定的正负样本比例随机采样一个batch送入第二阶段同时进行分类和回归。之后出现了采用全卷积来提高速度的R-FCN,使用top-down连接结合多尺度特征的FPN。此外,近年来还有其它的改进。

Classification in object detection.近期研究者聚焦于从各个方面来改进目标分类器,检测器的分类得分不只是决定了每个proposal的语义类别,同样也隐含了位置的精确度,因为NMS开始使用的是分类得分来排序的,然后根据得分排序抑制低置信度的边框。然而正如IoU-Net中提到的,分类得分和位置精度间存在较小的关联,这使得排序时存在一些噪音,并且性能受限。因此IoU-Net采用了一个额外的分支来预测IoU 得分和精炼分类置信度。Soft NMS则是设计了一个KL loss来直接建模边框回归的变化,将loss加入NMS排序的考虑因子。另一种提高分类的方向是通过提高IoU阈值来训练得到高质量的分类器,但是这种方式的会导致正义不数量减少从而难以训练,正如Cascade R-CNN中提到一样,后面Cascasde R-CNN采用了多阶段不同IoU阈值的方式解决该问题,但是这种方式较慢。

**Bounding box regression。**模型的性能取决于多任务学习中不同loss 的相对权重。Cascade R-CNN也采用不同的回归归一化因子在不同阶段调整回归项的适应性。此外还有Libra R-CNN和SABL等。但是他们都主要聚焦于一个固定的方案,忽略了训练时学习对象的动态分布。

Dynamic training。当前的动态训练方案中尚无解决目标检测核心问题的。

3 Dynamic Quality in the Training Procedure

目标检测任务包含两个子任务:识别和定位,本节将从这两个子任务出发探索他们的训练过程来得到一个高质量的目标检测器。

3.1 Proposal Classification

对于目标检测中的分类器来说,如何分配标签是一个关键的问题。通常会基于IoU进行标签分类,而这种方法可以总结为以下的公式:

在这里插入图片描述

其中b指代一个边框,G指真实框的集合, T + , T − T_+,T_- T+,T分别指代正负样本的IoU阈值。1,0,-1分别指代正样本、负样本和被忽略的样本。本质上来说,正负样本的定义是人为的,如Faster R-CNN中 T + , T − T_+,T_- T+,T默认设置为0.5.因为分类器的目标是区分正样本和负样本,以不同的IoU阈值训练则会得到相应的质量。因此,为了得到高质量的目标检测器,我们需要以高的IoU阈值来训练分类器,然和人Cascade R-CNN中已经提到这样的缺点,至于其级联的多阶段解决方案虽然有效,但是time-consuming。
前面提到训练过程中,建议框的质量实际上是不断的提高的,所以可以采用一种逐步的训练方法。初始时高质量的proposals不够,则可以在第二个阶段使用一个低IoU阈值来适应低质量的proposals,随着训练进行,proposals质量逐步提高,就能得到足够的高质量proposals。最后就能增加IoU阈值来更好的利用他们来训练一个高质量的检测器。具体的过程在下一节介绍。

3.2 Bounding Box Regression

边框回归的任务是将正候选边框b回归到目标真实框g,该过程通过回归损失函数 L r e g L_{reg} Lreg监督来学习。为了促进回归目标对尺度和位置的不变性, L r e g L_{reg} Lreg基于偏移 Δ = ( σ x , σ y , σ w , σ h ) \Delta=(\sigma_x,\sigma_y,\sigma_w,\sigma_h) Δ=(σx,σy,σw,σh)计算,其中偏移定义如下:

在这里插入图片描述

由于边框回归基于偏移计算, σ x , σ y , σ w , σ h \sigma_x,\sigma_y,\sigma_w,\sigma_h σx,σy,σw,σh的绝对值可能非常小,为了平衡多任务学习中的不同项,许多工作中广泛的使用预定义的均值和标准方差来归一化 Δ \Delta Δ
然而我们发现训练过程中回归目标的分布在转移,如图2 所示,相同的IoU阈值下,均值和方差随着训练进行proposals质量改善而减小,相同的归一化因子下,在SmoothL1 Loss函数的定义下,这些高质量样本的贡献将减小(由于均值和方差均减小,预测的偏移也会减小即损失值减小,而此时正样本的比例是在不断变大的。即相对减小了高质量的正样本在训练过程中的贡献),这不利于训练高质量的回归器。此外,在更高的IoU阈值下,正样本的质量进一步提高,所以他们的贡献也被进一步减小,极大的限制了全局的性能。因此,为了训练出高质量的目标检测器,我们应该拟合proposals的分布变化,调整回归损失函数的形式来抵消高质量proposals的增加。

在这里插入图片描述

图2.不同的迭代次数和IoU阈值下的Δ分布,第1,2列对比可知随着训练进行,回归目标分布更加集中,第2,3列对比课之相同迭代次数下增加IoU阈值会显著改变分布。

4 Dynamic R-CNN

为了更好的探索训练过程的动态属性,提出了Dynamic R-CNN,如图3所示。我们的关键点是调整了第二阶段分类器和回归器来拟合proposals的分布变化。这两部分会在下文详述。

4.1 Dynamic Label Assignment

Dynamic Label Assignment(DLA)过程由图3(a)所示。基于前面的正负样本标签分配的等式,动态标签分配(DLA)模块可以被归纳为如下式子:

在这里插入图片描述

其中 T n o w T_{now} Tnow 表示当前的IoU阈值。考虑到训练时propsals的分布会时刻变化,我们的DLA基于proposals的统计数据自动地更新来拟合这个分布变化。
具体而言,我们首先计算proposals和他们的目标真实框之间的IoUs得到集合I,然后选择I中第K个最大的值 K I − t h K_I-th KIth作为 T n o w T_{now} Tnow。随着训练的进行, T n o w T_{now} Tnow会逐渐地增加,这儿反映了proposals质量的改进。实践中,我们首先计算每个batch的I中的 K I − t h K_I-th KIth,然后每C个iteration使用这C个iteration的 K I − t h K_I-th KIth的均值来更新 T n o w T_{now} Tnow,这样能增加网络的鲁棒性。最终训练时使用的IoU阈值如图3(a)所示。

在这里插入图片描述

图3.Dynamic R-CNN的整体工作流。根据其训练时的动态性,Dynamic R-CNN主要可分为两部分:(a)Dynamic Label Assignment(DLA)过程和(b)Dynamic SmoothL1 Loss(DSL)。图片的左部分(a)中我们可以发现,随着训练进行会有更多高质量的proposals。随着proposals质量的提高,DLA会基于proposal分布来自动地增加IoU阈值。与此同时,为了拟合部分的变化以及补偿高质量proposals的增加,回归损失函数的形式也要相应的变化,如图中(b)所示。

4.2 Dynamic SmoothL1 Loss

目标检测的定位任务由通常使用的SmoothL1 Loss监督,其定义如下:

在这里插入图片描述

这里,x指代的是回归对象,β是个超参数,控制着在哪个范围内应该使用softer loss函数,如 l 1 l_1 l1 loss而不是原来的 l 2 l_2 l2 loss。为了训练鲁棒性,β默认设置为1.0来防止初始阶段未训练好的网络出现爆炸性的损失。β的影响如图4所示,其中改变β会得到一个不同的损失曲线和梯度,实际上更小的β能够更快的达到梯度大小的饱和,使得好的样本对网络的训练有更大的贡献。

在这里插入图片描述

图4.不同的β下SmoothL1 Loss的(a)loss曲线和(b)梯度曲线。在R-CNN部分β默认设置为1.0。

如3.2节分析一样,我们需要拟合分布变化并调整回归损失函数来补偿高质量样本。所以提出了Dynamic SmoothL1 Loss(DSL)来改变损失函数的形式来逐渐聚焦于高质量样本,如下所示:

在这里插入图片描述

和DLA相似,DSL会根据反映定位准确度的回归对象统计数据来改变 β n o w \beta_{now} βnow。具体来说,我们首先获得proposals和它们的目标真实框之间的回归对象E,然后在E中选择第 K β − t h K_\beta -th Kβth小的值来更新等式4中的 β n o w \beta_{now} βnow。相似的,我们也每C个周期,用每个batch的第 K β − t h K_\beta -th Kβth小的值的中位数来更新 β n o w \beta_{now} βnow,这里使用中位数而不是分类器中的mean是因为我们在回归标签中发现了更多的异常值。通过这种动态的方式,将会采用适当的 β n o w \beta_{now} βnow,正如图3(b)所示。这样能够更好的探索训练样本并且实现一个高质量的回归器。
概括整个方法的话,可以用如下的算法1来描述Dynamic R-CNN。除了proposals P和真实框G,Dynamic R-CNN还有3个参数:前k大的IoU 阈值 K I K_I KI,前K小的β K β K_\beta Kβ以及更新的iteration数C。和baseline检测器相比我们只多引入了一个超参数,而且实际上结果对这些超参数有很强的鲁棒性。
在这里插入图片描述

5 Experiments

5.1 Dataset and Evaluation Metrics

MSCOCO2017数据集,训练时在COCO train split上(~118k图片),消融实验在val split上(~5k图片)。将主要结果上传到评估服务器上在test-dev split上测试最终的结果。评估标准采用的是COCO格式的AP,即0.5到0.95,间隔0.05的IoU阈值。

5.2 Implementation Details

PyTorch实现的,使用maskrcnn-benchmark和SimpleDet框架。采用基于FPN的,使用ImageNet上预训练的ResNet-50做骨干网的Faster R-CNN作为baseline。所以模型在COCO2017 train上训练,在val上测试,不做说明则图片最短边800像素。由于缺少正样本,所有实验中的RPN的NMS阈值有0。7改为0.85。

5.3 Main Results

在这里插入图片描述

实验证明Dynamic R-CNN可以和不同的骨干网结合,并且兼容其它的训练和测试技巧,如延长训练iteration,多尺度测试和可变性卷积。在最好的结合下,Dynamic R-CNN达到了49.2% AP,比Faster R-CNN的baseline高2.3。

5.4 Ablation Experiments

为了展示我们提出的方法每个部分的有效性,做了如表2所示的消融实验。

在这里插入图片描述

动态训练的图示。下图展示了Dynamic R-CNN在不同设置下训练的过程中IoU阈值和SmoothL1 β变化趋势。显然总体的IoU阈值的趋势是增加的,而SmoothL1 β的趋势是下降的。这些结果证明提出的方法如预期工作。

在这里插入图片描述

5.5 Studies on the effect of hyperparameters

其它超参数的影响:

在这里插入图片描述

复杂度与速度。如算法1所示,主要的计算复杂度在于IoUs和回归对象的计算,而这些在原来的方法中就已经完成,额外的工作只有计算均值和中位数,而这个基本不会增加训练时间。此外,该方法只改变训练过程,推断的速度不会下降,表6比较了该方法的推断时间。

5.6 Universality

能应用的实例分割领域。

5.7 Comparison with State-of-the-Arts

和SOTA检测器的比较,由于不同的检测器使用了不同的骨干网和训练/测试设置,这里使用两个版本的Dynamic R-CNN做比较。

一个是FPN-based Faster R-CNN with ResNet-101as backbone,达到了42% AP,另一个是Dynamic R-CNN* adopts image pyramid scheme (multi-scale training and testing), deformable convolutions and Soft-NMS,其结果提高到了50.1% AP,超过所有之前的检测器。

在这里插入图片描述

6 Conclusion

该论文详细的分析了检测器的训练过程并发现正是其固定的训练方案限制了检测器的整体性能。于是作者基于动态性的先进观点,提出了Dynamic R-CNN来更好地探索训练过程。其简单但有效的组件Dynamic Label Assignment(DLA)Dynamic SmoothL1 Loss(DSL),能够随着训练的进行,动态的改变基于IoU标签分配的IoU阈值和回归损失函数的形式,使得Dynamic R-CNN在不引入额外代价的情况下性能得到重大的提高。通过在不同检测器和骨干网上的实验验证了Dynamic R-CNN的通用性和有效性。

该方法中更具IoU等统计数据来自适应的选择阈值和ATSS中的思路有些相似,和Cascade R-CNN相比,二者都采用了优化proposals来得到更多高质量proposals进而训练更好检测器的思路,不同的是Cascade R-CNN是通过额外的网络头来级联优化proposals,而Dynamic R-CNN则是通过iteration的迭代来优化的,相比起来,前者由于多了额外网络头,训练更费时,后者至少需要更多的iteration来优化proposals,而且推断时没有额外代价,整体更加高效。

参考

Zhang H, Chang H, Ma B, et al. Dynamic R-CNN: Towards High Quality Object Detection via Dynamic Training[J]. arXiv preprint arXiv:2004.06002, 2020.
(二十一)论文阅读 | 目标检测之Dynamic RCNN
论文阅读|Cascade R-CNN

猜你喜欢

转载自blog.csdn.net/yanghao201607030101/article/details/114002190