R-FCN:Object Detection via Region-based Fully Convolutional Networks

文章地址:https://arxiv.org/abs/1605.06409

0 摘要

我们提出基于区域的、全卷积网络,实现准确高效的目标检测。与先前基于区域的检测器(例如Fast/Faster R-CNN)相比,我们基于区域的检测器是全卷积的,几乎所有计算都在整个图像上共享。为了实现这一目标,我们提出了位置敏感的得分图,以解决图像分类中的平移不变性和目标检测中的平移相关之间的两难问题。我们的方法可以基于全卷积图像分类器做骨干网络,例如最新的残差网络ResNets,用于对象检测。我们使用101层ResNet在PASCAL VOC数据集(例如,2007年的83.6%mAP)上显示出有竞争力的结果。同时,每张图像的推理耗时约170ms,比竞争对手Faster R-CNN快2.5-20倍。代码公开于:https://github.com/daijifeng001/r-fcn.

1 简介

用于目标检测的深度网络的家族[8,6,18]普遍可以通过RoiPooling层划分为两个子网络:(i)和RoI不相关的的共享“全卷积”子网络和(ii)一个不共享计算的RoI-wise子网络。这种分解来源于分类架构,例如AlexNet和VGG Nets,它们也由两个子网络组成 - 一个以空间池化层结尾的卷积子网络,另一个是由几个全连接层组成的子网络。因此,图像分类网络中最后的空间池化层自然地变成了目标检测网络中的RoI池化层

但最近最先进的图像分类网络,如Residual Nets和GoogLeNets,都是全卷积网络。通过类比,很自然的想到在目标检测网络中全部使用卷积层构建共享的卷积子网络,从而使得RoI-wise子网络没有隐藏层。然而,实验结果表明,这种天真的解决方案的检测精度相当低,与网络的优异分类精度不相符。为了解决这个问题,在ResNet论文中,Faster R-CNN检测器中加入了RoI池化层 - 这创建了一个更深的RoI-wise子网络,提高了准确性,但由于非共享的逐RoI计算导致了计算速度的下降。

我们认为上述非自然设计是由于图像分类的平移不变性与目标检测的平移相关性的两难选择引起的。一方面,图像级分类任务倾向于平移不变性 - 图像内部目标的移动不影响分类结果。因此,全卷积体系结构具有很好的平移不变性,这可以通过ImageNet分类的优秀结果得到证明。另一方面,目标检测任务需要进行目标定位,在一定程度上是平移相关的。例如,候选框内的目标平移后检测位置也应该变化。为解决这一难题,基于ResNet进行卷积时在卷积层中间插入了RoI池化层 - 这种特定的操作打破了平移不变性,当在不同区域进行评估时,RoI池化层之后的卷积层不再具有平移不变性。然而,这种设计牺牲了训练和测试效率,因为它引入了相当多的针对各区域的网络层(表1)。

在本文中,作者设计了一个称为基于区域的全卷积网络(R-FCN)的框架,用于目标检测。网络类似于FCN,由是一个全卷积网络。为了将平移相关性引入FCN,我们通过使用一组专用卷积层作为FCN的输出来构造一组位置敏感的得分图。这些得分图中的每一个都有关于相对空间位置(例如,“对象的左侧”)的信息。在这个FCN之上,我们附加了一个位置敏感的RoI池化层,它从这些得分图中输出信息,后面没有权重(卷积/ fc)层。整个架构是端到端学习的。所有可学习的层都是卷积的并且在整个图像上共享,然后编码目标检测所需的空间信息。图1说明了关键思想,表1比较了基于区域的探测器之间的方法。

在这里插入图片描述不使用全连接层,全部使用卷积层构建网络,有助于减小网络的参数量,加快推理速度。

2 本文方法

整体描述:按照R-CNN的思路,我们采用流行的两阶段目标检测策略,其包括:(i)区域提议(ii)区域分类。尽管确实存在不依赖于区域提议的方法(例如,Yolo和SSD),但基于区域的系统仍在某些数据集上具有领先的准确率。我们通过区域提案网络(RPN)提取候选区域,RPN时一个全卷积的网络。按照Faster R-CNN的思路,我们在RPN和R-FCN之间共享特征。图2显示了系统的概述。

在这里插入图片描述给定提议区域(RoI),R-FCN旨在将RoI分类为对象类别和背景。在R-FCN中,所有可学习的权重层都是卷积的并且在整个图像上计算。最后的卷积层为每个类别产生一组 k 2 k^2 k2个位置敏感的得分图,因此最后得到通道数为 k 2 × ( C + 1 ) k^2 \times (C + 1) k2×(C+1)的输出(C个目标类别,一个背景类别)。 k 2 k^2 k2个得分图组对应于描述相对位置的 k × k k×k k×k个空间网格。例如,假如 k × k k \times k k×k = 3 × 3 3 \times 3 3×3,那么这九个得分位置图对应于{左上、中上、右上、 ⋯ \cdots 、右下}九个位置。

R-FCN以位置敏感的RoI池化层结束。该层聚合最后一个卷积层的输出,并为每个RoI生成分数。与[8,6]不同,我们的位置敏感RoI层进行选择性池化,并且大小为k×k的bin中的每一个bin都对应于k×k个得分图中对应位置的feature map。通过端到端训练,此RoI层可以影响最后一个卷积层,以学习专门的位置敏感分数图。图1说明了这个想法。图3和图4显示了一个示例。详细介绍如下。

在这里插入图片描述骨架结构:本文中R-FCN基于ResNet-101,也可以使用其他网络。ResNet-101有100个卷积层,接着是全局平均池化层和一个大小为1000的fc层。我们删除全局平均池化层和fc层,仅使用卷积图层来计算特征图。我们使用作者发布的ResNet-101,在ImageNet上进行了预训练。ResNet-101中的最后一个卷积块是2048个channel,我们添加一个随机初始化的1024channel的1×1卷积层以减小channel数量(准确地说,这会将表1中的深度增加1)。然后我们应用具有 k 2 ( C + 1 ) k^2(C + 1) k2(C+1)个通道的卷积层来生成得分图,如下所述。

位置敏感得分图 & 位置敏感ROI池化层:为了将位置信息显式地编码到每个RoI中,我们通过规则化的网格每个RoI矩形划分为k×k个区间。对于一个大小为 w × h w \times h w×h的矩形ROI,每一个区间的大小约为 w k × h k \frac{w}{k} \times \frac{h}{k} kw×kh。在本文中,最后一个卷积层为每个类别生成 k 2 k^2 k2个得分图。在第(i,j)( 0 ≤ i , j ≤ k − 1 0 \leq i,j \leq k-1 0i,jk1)区间内,我们定义一个位置敏感的ROI池化操作仅在对应的得分图上进行池化操作:

在这里插入图片描述 r c ( i , j ) r_c(i,j) rc(i,j)表示第 c c c类的第 ( i , j ) (i,j) (i,j)个区域的池化结果。 z i , j , c z_{i,j,c} zi,j,c表示 k 2 ( C + 1 ) k^2(C+1) k2(C+1)个得分图中的一个, ( x 0 , y 0 ) (x_0,y_0) (x0,y0)表示一个ROI的左上角,n表示一个区域中的像素数量, Θ \Theta Θ表示网络中所有可以学习的参数。第(i,j)个区域覆盖 ⌊ i w k ⌋ ≤ x < ⌈ ( i + 1 ) w k ⌉ \lfloor i\frac{w}{k} \rfloor \leq x < \lceil (i+1) \frac{w}{k} \rceil ikwx<(i+1)kw ⌊ j h k ⌋ ≤ y < ⌈ ( j + 1 ) h k ⌉ \lfloor j\frac{h}{k} \rfloor \leq y < \lceil (j+1)\frac{h}{k} \rceil jkhy<(j+1)kh。公式1如图1所示,一个颜色表示一组 ( i , j ) (i,j) (i,j)。公式1使用了平均池化,这里使用最大池化也是可以的。

使用获取的大小为 k 2 k^2 k2的位置得分为对应的ROI进行投票。本文中只是对得分取均值作为投票结果,最终每个ROI得到了一个大小为 ( C + 1 ) (C+1) (C+1)的向量,向量的每一个元素为 r c ( Θ ) = ∑ i , j r c ( i , j ∣ Θ ) r_c(\Theta) = \sum_{i,j} r_c(i,j | \Theta) rc(Θ)=i,jrc(i,jΘ)。最后对这个大小为 ( C + 1 ) (C+1) (C+1)的向量应用softmax运算,得到目标属于各类别的概率 s c ( Θ ) = e r c ( Θ ) / ∑ c ′ = 0 C e r c ′ ( Θ ) s_c(\Theta) = e^{r_c(\Theta)}/\sum_{c^{'}=0}^{C}e^{r_{c^{'}}(\Theta)} sc(Θ)=erc(Θ)/c=0Cerc(Θ)。它们用于在模型训练过程中计算交叉熵损失和推理过程中为所有的ROI进行排序。

按照相同的方式进行bounding box回归。除了使用上面描述的 k 2 ( C + 1 ) k^2(C+1) k2(C+1)的卷积层进行分类之外,还有一个通道数为 4 k 2 4k^2 4k2的卷积层用于对一个ROI进行回归。在得到的通道为 4 k 2 4k^2 4k2的得分图集上应用ROI池化,为每个ROI产生大小为 4 k 2 4k^2 4k2维的向量,对该向量进行评价投票得到一个4维向量。这四个参数分别对应Fast R-CNN中的 t = ( t x , t y , t w , t h ) t = (t_x,t_y,t_w,t_h) t=(tx,ty,tw,th)。为简单起见,我们执行类不可知的边界框回归,但指定类别的边界框回归也是可行的(具有一个输出大小为 4 k 2 C 4k^2C 4k2C维的卷积层)。

位置敏感得分图的概念部分受到[3]的启发,其开发了用于实例级语义分割的FCN。我们进一步介绍了位置敏感的RoI池化层,该层用于学习目标检测的得分图。在RoI层之后没有需学习的层,从而实现了几乎无成本的区域计算并加速了训练和推理。

训练:通过预先计算的提议区域,可以轻松地端到端训练R-FCN。每一个ROI的总损失包括分类交叉熵损失和定位损失。 L ( s , t x , y , w , h ) = L c l s ( s c ∗ ) + λ [ c ∗ > 0 ] L r e g ( t , t ∗ ) L(s,t_{x,y,w,h}) = L_{cls}(s_{c^*}) + \lambda [c^* > 0]L_{reg}(t,t^*) L(s,tx,y,w,h)=Lcls(sc)+λ[c>0]Lreg(t,t) C ∗ C^* C表示ROI的真实类别( c ∗ = 0 c^* = 0 c=0表示背景),使用交叉熵损失 − log ⁡ ( s c ∗ ) - \log(s_{c^*}) log(sc) L r e g L_{reg} Lreg是真实位置和预测位置之间的定位损失。设置 λ = 1 \lambda = 1 λ=1,表示分类损失和定位损失同等重要。定义和真实目标之间IOU大于0.5的ROI为正例样本,否则为负例样本。

在训练过程中使用了OHEM,以几乎可忽略不计的成本对每个ROI进行难例挖掘。假设每幅图像有N个建议区域,我们为所有的N个区域计算损失,然后将负样本的损失进行排序,选取B个损失最大的负例。基于所选的样本进行反向传播。因为本文中逐ROI计算的代价可以忽略不计,因此前向计算的耗时和N也无关。但结合了OHEM的Fast R-CNN的训练时间会加倍。我们在下一部分提供了耗时统计。

训练过程中,权重衰减设置为0.0005,动量设置为0.9。默认进行单尺度的训练,图像被缩放到短边为600。每个GPU处理一副图像,从中选取B = 128个ROI进行反向传播。作者使用8个GPU进行训练。在VOC数据集上微调R-FCN,先用0.001的学习率训练20k个mini-batch,再用0.0001的学习率训练10k个mini-batch。由于RPN和R-FCN共享特征,所以采用Faster R-CNN中的4步迭代训练,交替训练RPN和R-FCN。

推理:推理过程中,RPN产生候选ROI,R-FCN计算每个ROI的类别得分和位置。推理时每幅图像计算300个ROI,然后使用阈值为0.3的非最大值抑制(NMS)。

À trous and stride:我们的全卷积网络享有用于语义分割的FCN网络修改的好处。特别是,我们将ResNet-101的有效步幅从32像素降低到16像素,从而提高了得分图的分辨率。conv4阶段[9](stride = 16)及其之前的所有层都保持不变;第一个conv5块中的stride = 2操作被修改为stride = 1,并且conv5阶段的所有卷积滤波器都被“洞算法”修改[15,2](“算法”[16])以补偿减小的步幅。为了公平比较,和Faster RCNN中一样,RPN是在conv4阶段(与R-FCN共享)之上计算的,所以RPN网络没有受到使用的小技巧的影响。下表显示了R-FCN的消融结果(k×k = 7×7,没有难例挖掘)。这个特殊技巧将mAP提高了2.6个百分点。

在这里插入图片描述可视化:在图3和图4中,当k×k = 3×3时,我们可视化由R-FCN学习的位置敏感得分图。这些专用得分图在对象的特定相对位置处被强烈激活。例如,“顶部中心敏感”得分图显示在大致靠近对象的顶部中心位置处分值较高。如果候选框与真实对象精确重叠(图3),则RoI中的 k 2 k^2 k2个区域中的大多数区域被强烈激活,基于它们进行投票可以获取高分。相反,如果候选框与真实对象没有正确重叠(图4),则RoI中的 k 2 k^2 k2个区域中的某些不会被激活,导致最终的投票得分很低。

3 相关工作

R-CNN [7]已经证明了在深度网络中使用区域提案[27,28]的有效性。R-CNN在裁剪和扭曲区域上评估卷积网络,并且区域之间不共享计算(表1)。SPPnet [8],Fast R-CNN [6]和Faster R-CNN [18]是“半卷积”的,其中卷积子网对整个图像执行共享计算,而另一个子网评估各个区域。

也有目标检测器可以被认为是“完全卷积”模型。OverFeat [21]通过在共享卷积特征映射上滑动多尺度窗口来检测对象;在R-CNN中,滑动窗口被区域提议所代替。在这些情况下,可以将单个尺度的滑动窗口认为是单个卷积层。Faster R-CNN中的RPN网络[18]是一个全卷积检测器,它可以预测多个尺寸的参考盒(锚)的边界框。原始RPN在Faster RCNN中是类不可知的,但对应的已知类版本也适用(参见[14]),我们在下面进行评估。

另一系列目标检测器采用全连接(fc)层,在整个图像上生成整体目标检测结果,如[25,4,17]。

4 实验

4.1 在VOC上的实验

在VOC2007+2012的trainval集上训练,在voc 2007的test集上测试。使用mAP衡量最终效果。

和其他全卷积网络对比:尽管可以使用全卷积检测器,但实验表明,它们一般难以获得良好的检测准确性。我们使用ResNet-101调查以下全卷积策略(或“几乎”全卷积策略,每个RoI只有一个分类器fc层):

原始Faster R-CNN:如引言中所讨论的,可以使用ResNet-101中的所有卷积层来计算共享特征映射,并在最后一个卷积层之后(在conv5之后)采用RoI池化。在每个RoI上评估21类fc层(因此该变体“几乎”是全卷积)。使用a trous技巧用于公平比较。

指定类别的RPN:除了将两类(目标或非目标)卷积分类器层替换为21类卷积分类器层之外,按照Faster R-CNN的思路训练RPN。为了公平比较,对于这个指定类别的RPN,我们使用ResNet-101的conv5层和a trous技巧。

不使用位置敏感得分的R-FCN:通过设置k = 1,我们消除了R-FCN的位置敏感性。这相当于对每个RoI使用全局池化。

分析:表2显示了结果。我们注意到ResNet论文[9]中的标准Faster R-CNN使用ResNet-101(参见表3)实现了76.4%的mAP,其在conv4和conv5之间插入了RoI池化层[9]。作为比较,Naive版本的Faster R-CNN(在conv5之后应用RoI池化层)的mAP显著降低到了68.9%(表2)。这个比较显示了通过在Faster R-CNN系统的层之间插入RoI池化来凭经验证明利用空间信息的重要性。[19]说明了类似的观察结果。

指定类别的RPN的mAP为67.6%(表2),比标准的Faster R-CNN的76.4%低约9个点。这种比较符合[6,12]中的观察结果 - 实际上,指定类别的RPN类似于使用密集滑动窗口作为建议的Faster R-CNN [6]的特殊形式,最终效果较差。

另一方面,我们的R-FCN系统具有明显更好的准确性(表2)。其mAP(76.6%)与标准的Faster R-CNN相当(76.4%,表3)。这些结果表明我们的位置敏感策略设法编码用于定位目标的有用空间信息,同时不需要在RoI池化层之后使用任何的学习层。

在这里插入图片描述通过设置k = 1进一步证明了位置敏感性的重要性,R-FCN不能收敛。在这种降级的情况下,不能在RoI中明确捕获空间信息。此外,我们发现,如果设置RoI的输出分辨率是1×1,那么Faster R-CNN能够收敛,但是mAP进一步大幅下降到61.7%(表2)。

和基于Restnet-101的Faster R-CNN比较:接下来,我们将与标准的“Faster R-CNN + ResNet-101”[9]进行比较,后者是PASCAL VOC,MS COCO和ImageNet基准测试中最强劲的竞争对手和最佳表现者。我们在下面使用k×k = 7×7。表3显示了比较结果。Faster R-CNN对每个Roi应用一个10层子网络以获得良好的准确性,但R-FCN每个Roi的计算成本可忽略不计。在测试时使用300个RoI,Faster R-CNN对每个图像进行预测需要0.42秒,比我们的R-FCN慢2.5倍,R-FCN对每幅图像进行预测需要0.17秒(在K40 GPU上;这个数字在Titan X GPU上为0.11秒)。R-FCN也比Faster R-CNN训练更快。此外,难例挖掘[22]并没有增加R-FCN的训练成本(表3)。从2000 个RoI进行挖掘训练R-FCN是可行的,在这种情况下,Faster R-CNN慢6倍(2.9s对0.46s)。但实验表明,从更大的候选集(例如2000个)中挖掘并没有任何好处(表3)。因此,我们在本文的其他部分使用300个RoI进行训练和推理。

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

在这里插入图片描述深度的影响:下表显示了使用不同深度的ResNets的R-FCN结果[9]。当深度从50增加到101时,我们的检测精度会增加,但是当深度达到152时,我们的检测精度会变得饱和。
在这里插入图片描述Region Proposal的影响:R-FCN可以很容易地应用于其他区域建议方法,例如选择性搜索(SS)[27]和边缘框(EB)[28]。下表显示了使用不同提案的结果(使用ResNet-101)。R-FCN使用SS或EB也取得了良好的结果,显示了我们方法的普适性。

在这里插入图片描述

4.2 在COCO数据集上的实验结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值