目标检测论文阅读:Cascade R-CNN算法笔记

标题:Cascade R-CNN: Delving Into High Quality Object Detection
会议:CVPR2018
论文地址:https://ieeexplore.ieee.org/document/8578742/
这篇文章的改进其实不难,但是关于为何这样改进,motivation是什么,以及实验论证环节,作者做了大量的阐述,逻辑非常清晰,有理有据。原文读起来还是比较拗口的,弄懂每个图片的含义非常重要。

Abstract

在目标检测中,需要使用IoU阈值来区分正负样本。一个使用低IoU阈值(比如0.5)训练的目标检测器,往往会产生噪声检测结果。但是,增加IoU阈值往往又会导致检测性能下降。这主要是由于两个原因:①在训练过程中,正样本数目呈指数级减少而导致过拟合;②推理过程中,训练检测器时的IoU和预测结果时的IoU不匹配(mismatch,这一点后面会具体解释)。针对这些问题,本文提出了一种多阶段目标检测结构Cascade R-CNN。它由一系列随着IoU阈值增加训练而成的检测器组成,对close false positives具有更高的选择性。这个算法是分阶段训练的,每个阶段的检测器的输出都会获得一个更好的分布,从而以该输出作为新的输入来训练下一个更高质量的检测器。通过逐步改进预测输出结果的重采样可以保证所有检测器在训练时都有一个大小相当的正样本集,从而减少了过拟合问题。在推理阶段会采用相同的级联过程,使得每个阶段的hypotheses和detector quality更加匹配。Cascade R-CNN在COCO数据集上的表现超过了所有单阶段目标检测模型。实验表明,Cascade R-CNN适用于不同的检测器结构,并且取得了一致性的提升。

1. Introduction

目标检测需要解决两个主要问题:识别和定位。这两个问题都是相当困难的,因为检测器需要面对许多“close”的false positives,也就是很接近,但并不是真正正确的bbox。检测器必须在避免这些close false positives的前提下找到true positives。
在这个过程中,需要使用一个IoU阈值来区分正负样本。然而,常用的阈值IoU=0.5,对于正样本来说要求十分宽松,会导致产生许多噪声bbox,许多close false positives都会满足IoU=0.5这个阈值。在IoU=0.5的标准下采样到的样本是丰富多样的,使得训练出的检测器难以有效地避免close false positives。
目标检测论文阅读:Cascade R-CNN算法笔记_第1张图片
在本文中,把quality定义为预测和ground truth之间的IoU值,把quality of the detector定义为用于训练检测器的IoU值。本文研究的目标是针对迄今为止研究尚少的高质量目标检测器问题,也就是要减少输出结果里的close false positives。基本思想是,一个检测器只能优化到一定水平的quality,这在代价敏感学习相关文献中可以得知。
目标检测论文阅读:Cascade R-CNN算法笔记_第2张图片
上面的c和d图分别表示在IoU=0.5/0.6/0.7时训练出的检测器的定位和检测表现。总体来说,通过这些实验得出了几个结论:①a detector optimized at a single IoU level is not necessarily optimal at other levels,②higher quality detection requires a closer quality match between the detector and the hypotheses that it processes和③a detector can only have high quality if presented with high quality proposals。关于这两个图和得出的结论,后面会在原文的基础上进一步解读。
然而,单纯地提高训练时的IoU值并不能取得更好的结果,如d中u=0.7时检测精度反而下降了。这是因为,hypotheses和proposal之间的分布严重不平衡,一般来说,直接提高IoU值会导致训练时的正样本数量呈指数级减少。这在样本密集时对神经网络影响尤为严重,这种“high u”的训练策略非常容易出现过拟合现象。另一个困难是推理阶段quality of the detector和hypotheses之间的mismatch。高quality的检测器仅仅对高quality的hypotheses是最优的,对其他quality的hypotheses可能是次优甚至不好的。
本文用于解决上述问题的Cascade R-CNN是一个在R-CNN基础上的多阶段检测器,越深层的检测器会对close false positives产生越强的选择性。Cascade R-CNN是逐阶段训练的,每个阶段的输出都会用作下一阶段的输入。这样做的动机来自每个回归操作后,输出结果的IoU都会比输入时的IoU更高,也就是c图中,几乎所有曲线都在灰色对角线的上方。这说明,在某个阈值下训练出的检测器得到的输出结果会产生一个更好的分布,从而可以用来训练下一个更高IoU阈值的检测器。这和boostrapping的方法有点类似,不同之处在于Cascade R-CNN不是为了挖掘难负样本,而是通过调整bbox,每个阶段都获得一个更好的close false positives集来训练下一个阶段。这种由一系列更高IoU训练组成的检测器可以有效克服过拟合问题。推理阶段采用相同的级联过程,逐步提升的hypotheses可以更好地匹配quality不断提高的各阶段检测器,实现更好的检测精度。
Cascade R-CNN很容易实现,并且可以端到端训练。实验表明,最原始版本的实现就能比SOTA提升一大截,尤其是在更高quality的评估标准下。而且,Cascade R-CNN可以部署到任何基于R-CNN的监测框架中,并且可以取得一致性的增益(2到4个点),计算量只是略有增加。

2. Related Work

回顾了一下两阶段和单阶段目标检测模型,指出了单阶段模型精度往往更低,除了RetinaNet。这里cue到了一种多级回归的检测方法,iterative bounding box regression,会在后文中做对比。

3. Object Detection

本文是对a图中Faster R-CNN的两阶段结构进行改进。第一个阶段,子网络“H0”产生初步的检测hypotheses,也就是proposals。第二阶段,这些hypotheses会被RoI子网络“H1”进一步处理,记为检测头。然后每个hypotheses会输入进一个classification score“C”和bounding box“B”得到分类分数和边界框。本文是要建立一个多阶段的检测子网络模型,不局限于RPN对proposal进行检测。
目标检测论文阅读:Cascade R-CNN算法笔记_第3张图片

3.1 Bounding Box Regression

Fast R-CNN中的bbox回归采用以下公式:
目标检测论文阅读:Cascade R-CNN算法笔记_第4张图片
但是,回归损失通常会比分类损失的值要小很多,为了提高多任务学习的有效性,需要进行归一化处理:
在这里插入图片描述
有些工作认为单一的回归不足以实现精准的定位,于是它们把回归操作作为后处理步骤迭代进行,从而更加精细化bbox:
在这里插入图片描述
这也就是前文提到的iterative bounding box regression,也可以说是iterative BBox。如图b所示,他们的head都是相同的。但是这样做会有两个问题。首先,如图1中的c和d所示,在u=0.5训练下的回归器对于更高的IoU得到的hypotheses是次优的,在IoU大于0.85的时候会下降。其次,如下图所示,每次迭代后的bbox分布都会发生显著变化,对于初始分布最优的回归器会对后面几次迭代的效果大大降低。基于上述问题,iterative BBox需要大量的人工来获得些微的不可靠的提升。通常,在迭代两次后就不会有增益了。
目标检测论文阅读:Cascade R-CNN算法笔记_第5张图片

3.2 Detection Quality

分类器是要把检测到的目标指派到M个类别+1个背景中,由于bbox在包含目标的同时会包含许多背景,因此很难定义某个结果到底是positive还是negative。这通常由IoU指标来解决,如果IoU大于某个阈值u,就认为是属于该类别,因此对于一个hypothesis的分类可以由以下关于u的函数表示:
目标检测论文阅读:Cascade R-CNN算法笔记_第6张图片
这里的IoU阈值u也就定义了检测器的quality。
目标检测是一项极具挑战性的任务,因为u的设置是一项难以权衡的工作。如果u很高,那么positives包含的背景就会变少,但是训练时就难以采样足够的正样本。如果u很低,虽然可以获得丰富多样的正样本,但是训练到的检测器就难以分辨close false positives。一般来说,要求单个分类器对不同的IoU都取得均衡的效果是很困难的。在推理阶段,产生的proposal往往质量很低,这就要求检测器具有更强的判断力。一个折衷的办法是把u设置成0.5,但这是一个相当低的阈值,会导致产生很多close false positives。
一种原始的解决方案是对分类器进行集成,如图c所示,把分类损失定义为不同分类器的损失和:
在这里插入图片描述
这里的U是一个IoU的阈值集合:
在这里插入图片描述
根据定义,在推理阶段也要对分类器进行集成。这样做不能解决不同损失面对的正样本数目不同的问题,如下面第一张图所示,随着u增加,正样本数会迅速减少。这样做是有问题的,因为高quality的分类器会导致过拟合。并且,这些高quality的分类器在推理阶段会面对大量未经筛选的低质量的proposals。所以,这个方法在绝大多数quality levels下都没能取得好的效果,相对于a图中的方法几乎没有增益。
目标检测论文阅读:Cascade R-CNN算法笔记_第7张图片

4. Cascade R-CNN

本节将介绍图3d中本文提出的Cascade R-CNN结构。

4.1 Cascaded Bounding Box Regression

如图1c所示,单一的回归器难以在不同水平的quality下都取得很好的表现。受cascade pose regression和face alignment工作的启发,可以把regression分解成一系列简化步骤。Cascade R-CNN是一种级联回归的结构,如图3d所示:
在这里插入图片描述
其中,T是级联的次数。注意,每个回归器都是对相应阶段下的样本分布进行优化,而不是对最初始的分布。这样的级联会逐步改进hypotheses。
这不同于图3b中的iterative BBox。其一,iterative BBox是一个用于改进bbox的后处理过程,而级联回归是一个重新采样的过程,不同阶段会改变hypotheses的分布。其二,由于它同时用于训练和推理阶段,因此在训练和推理时,样本分布是没有差异的。其三,每一个回归器都是对该阶段重新采样下的分布进行优化,而不是仅仅只对最初的分布。这些区别使得Cascade R-CNN再不需要人为干预的情况下就能取得比iterative BBox更好的定位效果。
正如前文提到的,多任务学习时需要进行归一化操作,每个回归阶段过后,它们的统计量都会发生改变。在训练时,会对每个阶段的结果使用相应的统计量进行归一化。

4.2 Cascaded Detection

正如图4最左边的图所示,初始的hypotheses分布(比如由RPN得到的proposals)是低质量的。这不可避免地会使更高quality的分类器无法有效学习。Cascade R-CNN依靠重采样机制的级联回归来解决这个问题。这样做的动机来自于图1c中几乎所有的曲线都在灰色对角线之上,也就是说,由某个u值训练后的回归器会产生IoU更高的bbox。因此,级联回归器会依次对更高IoU的样本进行重采样。通过这种方式,即使是在提高了检测器quality(也就是IoU阈值)的情况下,也可以使正样本集的数目保持在恒定的大小。如图4所示,在每个重采样步骤后,样本分布都会向更高质量倾斜。这会带来两个影响。第一,不会有过拟合发生,因为在不同级别正样本都很丰富。第二,更深层的检测器在更高的IoU阈值下优化。值得注意的是,一些离群值会随着IoU阈值的增大而被去除,如图2所示,从而使得检测器序列能够更好地训练。
在每个阶段,R-CNN都包含一个基于阈值u的分类器和回归器,并且这个阈值要比前一个阶段的阈值更高。每个阶段的损失函数如下,t是代表第t个阶段:
目标检测论文阅读:Cascade R-CNN算法笔记_第8张图片
不同于之前的integral loss,这保证了一个有效训练的quality不断提高的检测器序列。在推理阶段,通过使用相同的级联过程,hypotheses的质量在不断提高,并且更高quality的检测器只需要对更高quality的hypotheses进行操作。这样就实现了图1c和d所示的高质量目标检测。

5. Experimental Results

5.1 Implementation Details

实验细节,除非特殊说明,Cascade R - CNN都是由4个阶段组成,一个RPN和三个U = {0.5, 0.6, 0.7}的检测器。

5.2 Quality Mismatch

目标检测论文阅读:Cascade R-CNN算法笔记_第9张图片
目标检测论文阅读:Cascade R-CNN算法笔记_第10张图片
具体的实验结论可以参照原文。

5.3 Comparison with Iterative BBox and Integral Loss

目标检测论文阅读:Cascade R-CNN算法笔记_第11张图片
目标检测论文阅读:Cascade R-CNN算法笔记_第12张图片
具体的实验结论可以参照原文。

5.4. Ablation Experiments

目标检测论文阅读:Cascade R-CNN算法笔记_第13张图片
目标检测论文阅读:Cascade R-CNN算法笔记_第14张图片
具体的实验结论可以参照原文。

5.5 Comparison with the state-of-the-art

目标检测论文阅读:Cascade R-CNN算法笔记_第15张图片
具体的实验结论可以参照原文。

5.6 Generalization Capacity

目标检测论文阅读:Cascade R-CNN算法笔记_第16张图片
具体的实验结论可以参照原文。

5.7 Results on PASCAL VOC

目标检测论文阅读:Cascade R-CNN算法笔记_第17张图片
具体的实验结论可以参照原文。

6. Conclusion

本文提出了一种多级目标检测框架Cascade R-CNN,用于设计高质量的目标检测器。这种架构被证明可以避免训练时的过拟合和推断时的质量不匹配问题。Cascade R-CNN在具有挑战性的COCO和流行的PASCAL VOC数据集上的坚实和一致的检测改进表明,需要对各种并发因素进行建模和理解,以推进目标检测。Cascade R-CNN被证明适用于许多目标检测架构。我们相信,这对未来的许多目标检测研究工作是有用的。

你可能感兴趣的:(目标检测,目标检测,论文阅读,深度学习,计算机视觉,神经网络)