(45)[NIPS16] R-FCN: Object Detection via Region-based Fully Convolutional Networks

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37993251/article/details/89159858

计划完成深度学习入门的126篇论文第四十五篇,MSRA的Jian Sun和Kaiming He研究的一种新的目标检测方法。[github] Object Detection的基础主要是Ross Girshick和Kaiming He的研究成果。


Abstract

我们提出了基于区域的全卷积网络,用于精确和有效的目标检测。与之前的基于区域的检测器(如Fast/Faster R-CNN)相比,我们的基于区域的检测器是完全卷积的,几乎所有计算在整个图像上共享。为了实现这一目标,我们提出了位置敏感的分数映射来解决图像分类中的平移不变性与目标检测中的平移方差之间的矛盾。因此,我们的方法可以很自然地采用完全卷积的图像分类器骨干,例如最新的残差网络[9]来进行目标检测。我们使用101层ResNet在PASCAL VOC数据集上显示了竞争结果(例如,在2007年的集上显示了83.6%的mAP)。同时,我们的结果是在一个测试时间的速度为170ms每幅图像,2.5-20比Faster R-CNN对应。R-FCN


1 Introduction

Region-of-Interest (RoI) pooling[6]可以将用于对象检测的深度网络的一个普遍的家族[8,6,18]划分为两个子网络:

(i)一个与RoI无关的共享的完全卷积子网络;

(ii)一个不共享计算的RoI-wise子网络。

这种分解[8]的历史原因是开创性的分类体系结构,如AlexNet[10]和VGG Nets[23],它由两个子网组成,通过设计一个以空间池化层结尾的卷积子网,然后是几个全连接(fc)层。因此,图像分类网络中的(最后)空间池层自然转化为目标检测网络中的RoI池层[8,6,18]。

但是,最近最先进的图像分类网络,如残差网(ResNets)[9]和GoogLeNets[24,26],在设计上是完全令人费解的。通过类比,在对象检测体系结构中使用所有卷积层来构建共享的卷积子网络似乎是很自然的,这使得ROI方面的子网络没有隐藏层。然而,在本文的实证研究中,该朴素解的检测精度较低,与网络的优越分类精度不匹配。为了解决这个问题,在ResNet的论文[9]中,速度Faster R-CNN检测器[18]的RoI池层不自然地插入到两组卷积层之间,这创建了一个更深的RoI明智子网络,提高了精度,但由于每RoI计算的非共享,速度较慢。

我们认为,上述非自然的设计是由于增加图像分类的平移不变性与尊重目标检测的平移方差的两难困境。一方面,图像级分类任务倾向于图像内物体平移不变性位移的不区分。因此,像ImageNet分类的主要结果所证明的那样,尽可能平移不变的深度(完全)卷积架构是更好的选择[9, 24, 26]。另一方面,目标检测任务需要在一定程度上具有平移变体的定位表示。例如,候选框内对象的翻译应该产生有意义的响应,用于描述候选框与对象重叠的程度。我们假设图像分类网络中更深的卷积层对平移不那么敏感。为了解决这一难题,ResNet论文s detection pipeline[9]将RoI池层插入卷积中,这种区域特定的操作打破了平移不变性,当跨不同区域进行评估时,后RoI卷积层不再是平移不变性。然而,这种设计牺牲了训练和测试效率,因为它引入了大量的区域层(表1)。

我们的网络由共享的、完全卷积的架构组成,就像FCN[15]一样。为了将平移方差合并到FCN中,我们使用一组专门的卷积层作为FCN输出,构造了一组位置敏感的分数图。每一个分数映射都编码相对于空间位置的位置信息(例如,对象的左侧)。在这个FCN之上,我们添加了一个位置敏感的RoI池层,用于从这些分数图中引导信息,下面没有权值(卷积/fc)层。整个体系结构是端到端学习的。所有可学习的层都是卷积的,并在整个图像上共享,但编码了目标检测所需的空间信息。图1说明了关键思想,表1比较了基于区域的检测器之间的方法。

使用101-layer Residual Net(resnet - 101)[9]为核心框架,我们R-FCN领域竞争的结果83.6%的地图2007年PASCAL VOC和2012的82.0%。与此同时,我们的结果在测试时间170毫秒的速度达到每图像使用resnet - 101,这是比Faster R-CNN + resnet快2.5x 到 20x,Resnet - 101在[9]。实验表明,该方法能够有效地解决平移不变性/方差问题,并将ResNets等全卷积图像级分类器有效地转换为全卷积目标检测器。


2 Our approach

Overview. 继R-CNN[7]之后,我们采用了流行的两阶段目标检测策略[7,8,6,18,1,22]包括:(i)区域提案,(ii)区域分类。虽然不依赖于区域建议的方法确实存在(例如,[17,14]),但是基于区域的系统仍然具有领先地位几个基准的准确度[5,13,20]。我们使用region proposals网络(RPN)[18]来提取候选区域,该网络本身就是一个完全卷积的体系结构。在[18]之后,我们分享了RPN和R-FCN之间的特性。图2显示了系统的概述。

给出了region proposals(RoIs),设计了R-FCN体系结构将RoIs划分为对象类别和背景。在R-FCN中,所有可学习的权值层都是卷积的,并对整个图像进行计算。最后一个卷积层为每个类别生成一个k2位置敏感的分数映射库,因此有一个k^{2}(C+1)-通道输出层,其中C对象类别(+1作为背景)。k2的银行评分地图对应一个k x k空间网格描述相对位置。例如,当k x k = 3 x 3时,9个分值映射编码{左上角、左上角、右上角、…对象类别的右下角}。

R-FCN以位置敏感的RoI池层结束。这个层汇总了最后一个卷积层的输出,并为每个RoI生成分数。与[8,6]不同的是,我们的位置敏感RoI层进行选择性池化,每个k x k bin只聚合来自k  x k score map库中的一个score map的响应。通过端到端训练,这个RoI层将引导最后一个卷积层来学习专门的位置敏感评分地图。图1说明了这个想法。图3和图4显示了一个示例。具体介绍如下。

Backbone architecture. 本文中R-FCN的化身是基于ResNet-101[9],但也适用于其他网络[10,23]。ResNet-101有100个卷积层,然后是全球平均池和1000级fc层。我们去掉了平均池化层和fc层,只使用卷积层来计算特征图。我们使用由[9]作者发布的ResNet-101,它是在ImageNet[20]上预先训练的。ResNet-101中的最后一个卷积块是2048-d,我们附加一个随机初始化的1024-d 11卷积层来减小维数(准确地说,这增加了表1中的深度1),然后我们应用k^{2}(C+1)通道卷积层生成score map,如下所述。

Position-sensitive score maps & Position-sensitive RoI pooling. 为了显式地将位置信息编码到每个RoI中,我们将每个RoI矩形用一个规则网格划分为k x k个箱子。对于大小为w x h的RoI矩形,bin的size \approx \frac{w}{k} \times \frac{h}{k}[8,6]。在我们的方法中,构造最后一个卷积层来生成每个类别的k^2分数图。在(i,j)-th bin(0 \leq i, j \leq k-1),我们定义了一个位置敏感的RoI池操作,该操作仅在(i;j) th得分地图:

r_{c}(i, j | \Theta)=\sum_{(x, y) \in \operatorname{bin}(i, j)} z_{i, j, c}\left(x+x_{0}, y+y_{0} | \Theta\right) / n

对于c-th类 ,r_{c}(i, j)是(i;j)-th bin对应的池化,z_{i, j, c}k^{2}(C+1) score maps中的一个score map,\left(x_{0}, y_{0}\right)表示一个RoI的左上角,n是bin像素的数量,和\Theta表示网络的所有可学的参数。(i, j)-th bin跨越\left\lfloor i \frac{w}{k}\right\rfloor \leq x<\left\lceil(i+1) \frac{w}{k}\right\rceil \text { and }\left\lfloor j \frac{h}{k}\right\rfloor \leq y<\left\lceil(j+1) \frac{h}{k}\right\rceil。Eqn.(1)的运算如图1所示,其中一个颜色表示一对(i;j)。 Eqn.(1)执行平均池(正如我们在本文中所使用的),但也可以执行最大池。

k^2的位置敏感得分然后对投资回报率进行投票。在本文中,我们简单地投票通过平均分数,生产(C + 1)维向量为每个RoI:r_{c}(\Theta)=\sum_{i, j} r_{c}(i, j | \Theta)。然后我们计算将softmax反应跨类别:s_{c}(\Theta)=e^{r_{c}(\Theta)} / \sum_{c^{\prime}=0}^{C} e^{r_{c^{\prime}}(\Theta)}。它们用于评估训练过程中的交叉熵损失和推理过程中的roi排序。

我们还用类似的方法处理了边界盒回归[7,6]。除了上述k2(C +1)-d卷积层外,我们还增加了一个同级的4 k^{2}-d卷积层用于边界盒回归。位置敏感的RoI池是在这组4 k^{2}映射上执行的,为每个RoI生成一个4 k^{2}-d向量。然后通过平均投票将其聚合为一个4-d向量。这个4-d向量将一个边界框参数化为t=\left(t_{x}, t_{y}, t_{w}, t_{h}\right)跟随[6]中的参数化。我们注意到,为了简单起见,我们执行了与类无关的边界框回归,但是类特定的对应项(即,采用4 k^{2} C-d输出层)。

位置敏感评分图的概念部分受到[3]的启发,[3]开发了用于实例级语义分割的FCNs。我们进一步介绍了位置敏感的RoI池层,它引导学习用于对象检测的分数映射。在RoI层之后没有可学习的层,这使得几乎没有成本的区域明智计算成为可能,并加快了训练和推理的速度。

Training. 通过预先计算的区域建议,很容易对R-FCN体系结构进行端到端培训。根据[6],我们在每个RoI上定义的损失函数为交叉熵损失和箱形回归损失之和:L\left(s, t_{x, y, w, h}\right)=L_{c l s}\left(s_{c^{*}}\right)+\lambda\left[c^{*}>0\right] L_{r e g}\left(t, t^{*}\right)。这里c是RoI的ground-truth标签(c = 0表示背景)。L_{c l s}\left(s_{c^{*}}\right)=-\log \left(s_{c^{*}}\right)为分类的交叉熵损失,Lreg为[6]中定义的边界盒回归损失,t为ground truth box。\left[c^{*}>0\right]是一个指示器,如果参数为真,它等于1,否则等于0。我们设置了平衡重量\lambda=1 [6]。我们将正向示例定义为roi与至少为0.5的ground-truth框有交叉-过度并集(IoU)重叠,否则为负。

该方法在训练过程中易于采用在线难例挖掘(OHEM)[22]。我们微不足道的每roi计算支持几乎免费的示例挖掘。假设每个图像有N个建议,在正向传递中,我们评估所有N个建议的损失。然后我们根据损失对所有的roi(正的和负的)进行排序,并选择损失最大的B RoIs。根据所选的示例执行反向传播[11]。因为我们的每roi计算是可以忽略的,所以正向时间几乎不受N的影响,而在[22]中,OHEM Fast R-CNN可能会使训练时间加倍。我们在下一节的表3中提供了全面的计时统计信息。

我们使用权重衰减为0.0005,动量为0.9。默认情况下,我们使用单尺度训练:将图像调整为600像素的尺度(图像的短边)[6,18]。每个GPU持有1张图像,并选择B = 128 roi作为支持。我们用8个gpu来训练模型(因此有效的小批量大小为8)。我们对R-FCN进行微调,20k个小批次的学习率为0.001,10k个小批次的学习率为0.0001。为了使R-FCN与RPN具有相同的特性(图2),我们在[18]中采用4步交替训练3,交替训练RPN和R-FCN。

Inference. 如图2所示,计算了RPN和R-FCN之间共享的特征映射(在单一比例尺为600的图像上)。然后RPN部分提出RoIs, R-FCN部分在此基础上评估分类得分并回归边界框。在推理过程中,我们评估了300 RoIs在[18]作为公平的比较。以0.3 IoU[7]阈值为标准,采用非最大抑制(NMS)对结果进行后处理。

À trous and stride. 我们的全卷积架构得益于FCNs广泛用于语义分割的网络修改[15,2]。特别是,我们减少ResNet-101的有效步幅从32像素增加到16像素,提高了分数地图的分辨率。conv4阶段[9](stride=16)前后各层均未发生变化;将第一个conv5块中的stride=2操作修改为stride=1,将conv5级上所有卷积滤波器修改为“hole算法”[15,2] (“Algorithme à trous” [16]),以补偿步幅的减少。为了进行公平的比较,RPN是在conv4阶段(与之共享)的顶部计算的 ,就像[9]中Faster R-CNN一样,所以RPN不受a - trous技巧的影响。下表为R-FCN烧蚀结果(k k = 7 7,无难采样)。 à trous技巧提高地图2.6点。

Visualization. 

在图3和图4中,我们可视化了R-FCN在k x k = 3 x 3时学习的位置敏感评分图。这些专门化的映射将在对象的特定相对位置被强激活。例如,top-center-sensitive score map显示的高分大致位于对象的top-center位置附近。如果一个候选框恰好与一个真实的对象重叠(图3),RoI中的大部分k^2 bin都会被强烈激活,并且它们的投票结果会得到高分。相反,如果一个候选框没有正确地与一个真实的对象重叠(图4),RoI中的一些k^2 bin没有被激活,并且投票得分很低。


3 Related Work

R-CNN[7]已经证明了在深度网络中使用区域建议的有效性[27,28]。R-CNN在裁剪区域和翘曲区域上对卷积网络进行计算,而不是在区域之间进行计算(表1)。SPPnet[8]、Fast R-CNN[6]和Faster R-CNN[18]是半体积的,其中卷积子网络对整个图像进行共享计算,另一个子网络对单个区域进行计算。有一些对象检测器可以被认为是完全卷积模型。OverFeat[21]通过在共享卷积特征图上滑动多尺度窗口来检测目标;同样,在Fast R-CNN[6]和[12],滑动窗口替代区域建议进行了研究。在这些情况下,可以将单个尺度的滑动窗口重新转换为单个卷积层。Faster R-CNN[18]中的RPN组件是一个全卷积检测器,它预测相对于多个大小的参考框(锚)的边界框。在[18]中,原始的RPN是与类无关的,但是它的类特定的对应项是适用的(也参见[14]),正如我们在下面的评估中所述。

另一类对象检测器则使用全连接(fc)层在整个图像上生成整体对象检测结果,如[25,4,17]。


4 Experiments

4.1 Experiments on PASCAL VOC

我们在PASCAL VOC[5]上进行了实验,实验对象有20个类别。我们在[6]之后的VOC 2007 trainval和VOC 2012 trainval(07+12)的联合集上对模型进行训练,并在VOC 2007测试集上进行评估。

Comparisons with Other Fully Convolutional Strategies

虽然全卷积检测器是可用的,但实验表明,它们要达到良好的精度并非易事。我们使用ResNet-101研究以下全卷积策略(或者几乎全卷积策略,每个RoI只有一个分类器fc层) :

Naïve Faster R-CNN. 如引言所述,可以使用ResNet-101中的所有卷积层计算共享特征图,并在最后一个卷积层(conv5之后)采用RoI池。在每个RoI上评估一个廉价的21级fc层(因此该变体几乎完全是卷积的)。这是用于公平比较à trous技巧。

Class-specific RPN. 该RPN是在[18]之后进行训练的,只是将2类卷积分类器层替换为21类卷积分类器层。为了公平的比较,对于这个特定于类的RPN,我们使用ResNet-101 s conv5层和à trous技巧。

R-FCN without position-sensitivity. 通过设置k = 1,我们删除了R-FCN。这相当于每个RoI中的全局池。

分析。表2显示了结果。我们注意到,ResNet论文[9]中标准的(不是幼稚的)Faster R-CNN使用ResNet-101实现了76.4%的mAP(见表3),它将RoI池层插入conv4和conv5[9]之间。作为对比,单纯的Fast R-CNN(即在conv5之后应用RoI池)的mAP显著低于68.9%(表2)。通过在层与层之间插入RoI池,Fast R-CNN系统证明了尊重空间信息的重要性。类似的观察在[19]中也有报道。

特定于类的RPN的mAP为67.6%(表2),比标准的更快的R-CNN s 76.4%低9个点。这种对比与[6,12]中的观察结果一致,事实上,类特异性RPN类似于一种特殊形式的Fast R-CNN[6],它使用密集的滑动窗口作为提案,其结果不如[6,12]中报道的那样。

另一方面,我们R-FCN系统有更好的准确性(表2),其地图(76.6%)与标准速度R-CNN s(76.4%,表3)。这些结果表明,我们的positionsensitive战略管理编码有用的空间信息定位对象,不使用任何RoI合用后可学的层。

通过设置k = 1进一步证明了位置敏感性的重要性,其中R-FCN无法收敛。在这种降级的情况下,RoI中不能显式捕获空间信息。此外,我们还报道,如果R-CNN的RoI池输出分辨率为1×1,那么它可以收敛得更快,但mAP进一步大幅下降,降至61.7%(表2)。

Comparisons with Faster R-CNN Using ResNet-101

接下来,我们将与标准的Faster R-CNN + ResNet-101[9]进行比较,这是PASCAL VOC、MS COCO和ImageNet基准测试中最强的竞争对手和最佳表现。下面我们使用k x k = 7 x 7。表3显示了比较结果。Faster R-CNN为每个区域评估一个10层的子网,以达到良好的精度,但R-FCN的每个区域的成本可以忽略不计。在测试时有300个roi,Faster R-CNN每幅图像需要0.42秒,比我们的R-FCN每幅图像需要0.17秒慢2.5秒(在K40 GPU上;这个数字在泰坦X GPU上是0.11秒)。R-FCN的训练速度也比R-CNN快。此外,挖掘[22]并没有增加R-FCN训练的成本(表3)。从2000 RoIs开始挖掘时,训练R-FCN是可行的,此时Faster R-CNN慢6 (2.9s vs. 0.46s)。但是实验表明,从更大的候选集合中挖掘(例如,2000)没有任何好处(表3),因此我们在本文的其他部分使用300 roi进行训练和推理。

表4显示了更多的比较。在[8]中的多尺度训练之后,我们在每次训练迭代中调整图像的大小,以便从{400,500,600,700,800}像素中随机采样尺度。我们仍然测试600像素的单一比例尺,因此不增加测试时间成本。这个比例是80.5%。此外,我们在MS COCO [13] trainval set上对模型进行训练,然后在PASCAL VOC set上进行微调,R-FCN的mAP达到83.6%(表4),接近[9]中使用ResNet-101的Faster R-CNN +++系统。我们注意到,我们的竞争结果是在每幅图像0.17秒的测试速度下获得的,比Faster R-CNN +++快20秒,这需要3.36秒,因为它进一步集成了迭代盒回归、上下文和多尺度测试[9]。这些比较也可以在PASCAL VOC 2012测试集上观察到(表5)。

On the Impact of Depth

下表显示了使用不同深度[9]的ResNets的R-FCN结果。当深度从50增加到101时,我们的检测精度增加,但是当深度达到152时,我们的检测精度达到饱和。

On the Impact of Region Proposals

R-FCN可以很容易地应用于其他区域建议方法,如选择性搜索(SS)[27]和边缘框(EB)[28]。下表显示了不同提案的结果(使用ResNet-101)。R-FCN在使用SS或EB时具有较强的竞争力,说明了我们方法的通用性。

4.2 Experiments on MS COCO

接下来,我们将对具有80个对象类别的MS COCO数据集[13]进行评估。我们的实验包括80k火车集、40k val集和20k test-dev集。我们将90k迭代的学习率设置为0.001,接下来的30k迭代的学习率设置为0.0001,有效的小批量大小为8。我们将交替训练[18]从4步扩展到5步。,再经过一个RPN训练步骤后停止),这将略微提高该数据集在共享特征时的准确性;我们还报告说,两步训练足以达到相当好的准确性,但没有共享的特点。

结果如表6所示。我们的单尺度训练R-FCN基线的val结果为48.9%/27.6%。这与Faster R-CNN基线相当(48.4%/27.2%),但是我们的测试速度快2.5。值得注意的是,我们的方法在较小的对象(由[13]定义)上执行得更好。我们的多尺度训练(但单尺度测试)R-FCN在val集上的结果为49.1%/27.8%,在test-dev集上的结果为51.5%/29.2%。考虑到COCO的对象尺度范围很广,我们进一步评估了[9]之后的多尺度测试变体,并使用了{200,400,600,800,1000}的测试尺度。地图为53.2%/31.5%。这一结果接近2015年COCO小姐大赛的第一名(Faster R-CNN +++, ResNet-101, 55.7%/34.9%)。然而,我们的方法更简单,并且没有添加[9]使用的上下文或迭代框回归之类的额外功能,并且对于培训和测试都更快。


5 Conclusion and Future Work

提出了一种基于区域的全卷积网络,这是一种简单、准确、高效的目标检测框架。我们的系统自然采用了最先进的图像分类骨干,如ResNets,它的设计完全是卷积的。我们的方法达到了精度与Faster R-CNN竞争对手,但在训练和inference过程中都快得多。我们有意使本文中介绍的R-FCN系统保持简单。已有一系列针对语义分割的FCNs正交扩展(如[2]),以及基于区域的对象检测方法的扩展(如[9,1,22])。我们希望我们的系统能够很容易地从这一领域的进展中获益。

猜你喜欢

转载自blog.csdn.net/weixin_37993251/article/details/89159858