目标检测中多尺度:特征金字塔FPN_Feature Pyramid Networks for Object Detection

只谈情不闲聊 提交于 2020-01-21 19:09:49

原始内容来源于:
https://blog.csdn.net/cdknight_happy/article/details/100528127
https://blog.csdn.net/WZZ18191171661/article/details/79494534
包含理解!

参考文献:https://arxiv.org/abs/1612.03144
代码实现:http://www.yueye.org/2018/faster-rcnn-coupled-with-fpn-in-tensorflow.html
https://github.com/DetectionTeamUCAS/FPN_Tensorflow

FPN:Feature Pyramid Networks for Object Detection

摘要

特征金字塔是目标识别系统能够进行多尺度目标识别的关键组件。但由于特征金字塔的内存占用和计算量很大,因此很多算法都不想使用它。本文利用深度卷积网络本身固有的多尺度、层次化构建特征金字塔,只带来了很少的额外成本。本文开发了具有横向结构的从上到下的连接,用于在所有尺度上构建高层语义特征。本文提出的网络叫做FPN,在很多应用中可以作为一个通用的特征提取器。将FPN和Faster R-CNN结合,我们的模型在不使用任何技巧的情况下,基于单模型在coco目标检测任务中取得了非常优秀的成果。另外,在单GPU上可以以6FPS进行多尺度目标检测。

1 引言

1.1 图像金字塔

图像金字塔广泛应用于SIFT、HOG等经典算法中,我们常用的是高斯金字塔,高斯金字塔是通过高斯平滑和亚采样获得一些下采样图像,也就是说第K层高斯金字塔通过平滑、亚采样操作就可以获得K+1层高斯图像,高斯金字塔包含了一系列低通滤波器,其截止频率从上一层到下一层是以因子2逐渐增加,所以高斯金字塔可以跨越很大的频率范围。总之,我们输入一张图片,我们可以获得多张不同尺度的图像,我们将这些不同尺度的图像的4个顶点连接起来,就可以构造出一个类似真实金字塔的一个图像金字塔。通过这个操作,我们可以为2维图像增加一个尺度维度(或者说是深度),这样我们可以从中获得更多的有用信息。整个过程类似于人眼看一个目标由远及近的过程(近大远小原理)。如图00所示,我们可以看到一个图像金字塔,中间是原始图像,最上边是下采样后的图像,最下边是上采样后的图像,你可以将其对应到图01中的不同层中。
在这里插入图片描述
图00 图像金字塔
在这里插入图片描述
图01 高斯金字塔效果

1.2 为什么需要构造特征金字塔?

前面已经提到了高斯金字塔,由于它可以在一定程度上面提高算法的性能,因此很多经典的算法中都包含它。但是这些都是在传统的算法中使用,当然也可以将这种方法直应用在深度神经网络上面,但是由于它需要大量的运算和大量的内存。但是我们的特征金字塔可以在速度和准确率之间进行权衡,可以通过它获得更加鲁棒的语义信息,这是其中的一个原因。

如图02所示,我们可以看到我们的图像中存在不同尺寸的目标,而不同的目标具有不同的特征,利用浅层的特征就可以将简单的目标的区分开来;利用深层的特征可以将复杂的目标区分开来;这样我们就需要这样的一个特征金字塔来完成这件事。图中我们在第1层(请看绿色标注)输出较大目标的实例分割结果,在第2层输出次大目标的实例检测结果,在第3层输出较小目标的实例分割结果。检测也是一样,我们会在第1层输出简单的目标,第2层输出较复杂的目标,第3层输出复杂的目标(理解:低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。)。
在这里插入图片描述
图02 特征金字塔

1.3 FPN算法

在这里插入图片描述
低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。

识别不同大小的物体是计算机视觉中的一个基本挑战,我们常用的解决方案是构造多尺度金字塔。如图1a所示,这是一个特征图像金字塔,整个过程是先对原始图像构造图像金字塔,然后在图像金字塔的每一层提出不同的特征,然后进行相应的预测(BB的位置)。这种方法的缺点是计算量大,需要大量的内存;优点是可以获得较好的检测精度。它通常会成为整个算法的性能瓶颈,由于这些原因,当前很少使用这种算法。

图1b是一种改进的思路,学者们发现我们可以利用卷积网络本身的特性,即对原始图像进行卷积和池化操作,通过这种操作我们可以获得不同尺寸的feature map,这样其实就类似于在图像的特征空间中构造金字塔。实验表明,浅层的网络更关注于细节信息,高层的网络更关注于语义信息,而高层的语义信息能够帮助我们准确的检测出目标,因此我们可以利用最后一个卷积层上的feature map来进行预测。这种方法存在于大多数深度网络中,比如VGG、ResNet、Inception,它们都是利用深度网络的最后一层特征来进行分类。这种方法的优点是速度快、需要内存少。它的缺点是我们仅仅关注深层网络中最后一层的特征,却忽略了其它层的特征,但是细节信息可以在一定程度上提升检测的精度。

图1c的设计思想是同时利用低层特征和高层特征,分别在不同的层同时进行预测,这是因为我的一幅图像中可能具有多个不同大小的目标,区分不同的目标可能需要不同的特征,对于简单的目标我们仅仅需要浅层的特征就可以检测到它,对于复杂的目标我们就需要利用复杂的特征来检测它。整个过程就是首先在原始图像上面进行深度卷积,然后分别在不同的特征层上面进行预测。它的优点是在不同的层上面输出对应的目标,不需要经过所有的层才输出对应的目标(即对于有些目标来说,不需要进行多余的前向操作),这样可以在一定程度上对网络进行加速操作,同时可以提高算法的检测性能。它的缺点是获得的特征不鲁棒,都是一些弱特征(因为很多的特征都是从较浅的层获得的)。

图1d是FPN,整个过程如下所示,首先我们在输入的图像上进行深度卷积,然后对Layer2上面的特征进行降维操作(即添加一层1x1的卷积层),对Layer4上面的特征就行上采样操作,使得它们具有相应的尺寸,然后对处理后的Layer2和处理后的Layer4执行加法操作(对应元素相加),将获得的结果输入到Layer5中去。其背后的思路是为了获得一个强语义信息,这样可以提高检测性能。我们使用了更深的层来构造特征金字塔,这样做是为了使用更加鲁棒的信息;除此之外,我们将处理过的低层特征和处理过的高层特征进行累加,这样做的目的是因为低层特征可以提供更加准确的位置信息,而多次的降采样和上采样操作使得深层网络的定位信息存在误差,因此我们将其结合其起来使用,这样我们就构建了一个更深的特征金字塔,融合了多层特征信息(理解:持续累加增加了低层特征的深度,也融合了多层特征信息),并在不同的特征进行输出。
在这里插入图片描述
近期的很多论文中也利用了上下和直连设计。他们的目的是产生一个高精度的特征映射图,然后在此上进行预测,简单讲就是经过多次上采样并融合特征到最后一步,拿最后一步生成的特征做预测,如图2上图。相反,我们的做法利用特征金字塔的各层进行单独预测(每一层都预测),如图2下图。

我们的算法叫做FPN,适用于目标检测和分割任务。基于单模型的FPN+Faster R-CNN,在coco数据集上取得了领先的目标检测效果。在消融实验中,我们发现使用FPN进行目标建议,可以将平均召回率AR提升8个点。对于目标检测,相比于基于ResNet的Faster R-CNN,可以将coco数据集的mAP提升2.3个点,将voc数据集的mAP提升3.8个点。FPN还可以应用于实例分割和其他需要图像金字塔的任务。

此外,我们的金字塔结构可以在所有尺度上进行端到端训练,并且在训练/测试时一致,这在使用图像金字塔时是不可行的。因此,FPN能够比所有现有的最先进方法获得更高的精度。此外,在不增加单一尺度基线的测试时间的情况下实现了这种改进。我们相信这些进步将有助于未来的研究和应用。

2 相关工作

手工设计的特征和早期神经网络:SIFT特征是在各尺度空间提取的极值点,可用于特征点匹配。HOG特征和SIFT特征都是在图像金字塔上进行密集计算得到的,它们广泛应用于图像分类、目标检测、行人姿态估计等任务。前面也有很多人在研究如果快速的构建特征金字塔。有的研究人员提出过构建一个稀疏的样本金字塔,然后通过插值得到其他尺度的特征。前面也有过在图像金字塔上提供浅层卷积网络实现跨尺度的人脸检测。

深度卷积目标检测器:随着深度卷积网络的发展,像OverFeat和R-CNN都在目标检测的准确率上有了极大的进步。Overfeat是利用滑动窗的思想,在图像金字塔上使用卷积网络实现目标检测。R-CNN则是使用建议区域进行目标检测。SppNet则进一步显示了在单个尺度的输入图像上进行特征提取,然后高效进行多尺度目标检测。Fast和Faster R-CNN利用单尺度图像的特征进行多尺度的目标检测,实现了良好的检测效果。但是,多尺度检测的效果往往更好,尤其是对小目标而言更是如此。

使用多层的方法:最近也有一些算法通过使用卷积网络中的多层特征改善检测和分割效果。FCN跨图像尺度为每类样本计算语义分割得分。很多算法是把多层的特征拼接到一起进行预测。SSD没有拼接特征,而是在多个层次化特征上进行预测。

3 FPN算法

我们的目标是利用ConvNet的金字塔特征的层次化结构,该层次结构具有从低级到高级的语义,并构建了一个具有高级语义的特征金字塔。本文中,我们将FPN用于了RPN和Fast R-CNN,也在第6部分将其用到了目标分割中。

我们的方法使用单尺度的输入图像,通过全卷积网络的方式输出多层特征。处理方式和卷积网络的骨干网络无关,本文中我们使用ResNet作为骨干网络。构建金字塔的方式涉及到了自下到上、自上到下及横向的连接

自下向上的连接:自下向上的路径是骨干ConvNet的前向计算,它计算一个由多个尺度的特征图组成的特征层次结构,其缩放步长为2。通常有许多层生成相同大小的输出特征,我们说这些层处于同一网络阶段(理解:只有尺度变化了才是另一阶段)。对于特征金字塔而言,每个阶段定义成一个金字塔层。我们选择每个阶段的最后一层的输出构建我们的特征映射集合,我们将丰富这些特征用于构建金字塔。这是一个很自然的选择,因为每个阶段的最深的层具有最强大的特征。

特别是,对于ResNet,我们使用每一个阶段的最后一个残差块的输出特征。我们将这些残差块的特征输出标记成{C2,C3,C4,C5},分别对用于conv2,conv3,conv4,conv5的输出,它们相对于输入图像的尺寸缩减分别是4,8,16,32倍。因为conv1尺度太大,内存占用太大,我们没有使用它。

自上向下的连接和横向连接:自上向下的连接通过对高层的特征(空间分辨率下,但语义更加强)进行上采样估计高分辨率的低层特征。这些特征通过自下而上的特征的横向连接进行加强。每一个横向连接都是把具有相同分辨率的自上而下和自下而上的特征进行组合。自下而上的特征具有较低的语义信息,但因为采样次数较少具有较强的定位信息。
在这里插入图片描述
图3显示了构建我们自上而下特征映射的构建块。使用分辨率较小的特征图,我们将空间分辨率上采样2倍(为简单起见,使用最近邻上采样,理解:代码中是上采样成与横向连接特征map相同的尺寸,就是上采样2倍)。上采样后的特征图和对应的自下而上的特征图进行逐通道相加(为了保证两个特征图的通道数一致,这里使用了1 * 1的卷积)。依次对各层特征进行如下操作。迭代开始时,我们对C5应用1 * 1卷积得到分辨率最小的特征映射。最后我们对每一个合并后的特征图应用3 * 3卷积得到最终的特征映射,应用3*3的卷积有助于减少上采样的带来的混叠。最终得到的特征图叫做{P2,P3,P4,P5},分别对应于具有相同空间尺寸的{C2,C3,C4,C5}。

就像传统的从图像金字塔构建出的特征金字塔一样,FPN生成的特征金字塔的各层也使用共享的分类器/回归器(理解:不同的输出尺度,怎么接共享的分类器?答:以Fastre RCNN中RPN为例,各层特征map接1个3 * 3卷积和2个1 * 1卷积,后者用于判断有无目标和目标坐标修正值,因为是分成不同的格子求概率和位置,所以不需要特征map的shape相同)。我们固定整个特征映射中的特征维度(通道数,表示为d)。本文设置d=256,所以所有额外的卷积层的输出都是256个通道。在这些额外层中没有添加非线性映射,因为我们发现其作用很小。

尽管简单,但我们发现我们设计非常鲁棒。我们尝试了更复杂的块(例如,使用多层残差块[16]作为连接)并观察到了略微更好的结果。设计更好的连接模块不是本文的重点,因此我们选择上述简单设计。

4 FPN的应用

本文的方法是在深度卷积网络中构建特征金字塔的通用解决方案。下面我们将FPN应用到region proposal生成的RPN网络和用于目标检测的Fast R-CNN。为了显示我们算法的有效性和简洁性,在应用FPN时,我们对原始的RPN和Fast R-CNN进行了很小的修改。

4.1 将FPN应用于RPN

RPN是一个滑动窗口式的、不区分类别的目标检测器。在原始的RPN中,在单尺寸的卷积特征图的密集3 * 3滑动窗口(分成一个一个的格子)上应用一个子网络实现目标/非目标的二分类和边界框回归。子网络包含一个3 * 3的卷积层和两个并列的1 * 1卷积层,分别用于分类和回归。按照和一系列预定义的anchor框的关系判断每个框是否包含目标及定位是否准确。anchor框预定义的多个尺度和长宽比的框用于覆盖不同的目标形状。

我们通过用FPN替换单尺度特征图来调整RPN。我们将相同的设计(3×3卷积层和两个1×1卷积层)连接到我们的特征金字塔的每一层。因为头部在所有金字塔等级的所有位置上密集地滑动,所以不必在单个层级设置多尺度的anchor。我们对每个层级选取一个固定尺寸的anchor,即对{P2,P3,P4,P5,P6}(P6层通过P5层最大池化得到)分别选取大小为{3232,6464,128128,256256,512512{32*32,64*64,128*128,256*256,512*512}}的anchor,但每层仍然使用多个长宽比的anchor,分别是{1:2,1:1,2:1},这样整个金字塔一共有15个anchor(一个格子3个anchor box,一共有5层)。

根据各anchor和真实目标框之间的IOU来设定各框的training label。如果一个anchor与任一真实框之间的IOU大于0.7,则将该anchor标记为正例样本。如果一个anchor与任一真实框之间的IOU都小于0.3,则将其标记为负例样本。真实框的尺寸没有决定将其关联到金字塔的哪一层,而是根据真实框的尺寸将其关联到了不同的anchor,anchor又和金字塔的层相关联。除此之外,我们没有在Faster R-CNN的基础上引入任何的其他修改。

我们注意到两个1*1的卷积层在不同金字塔层之间共享参数,我们验证了如果不进行参数共享也可以得到相近的准确率。在我们的金字塔上进行参数共享可以取得良好的性能证明了我们的金字塔的不同层有相似的语义信息。该优点类似于使用特征化图像金字塔的优点,其中公共头部分类器可以应用于以任何图像比例计算的特征。

通过上述调整,RPN可以通过我们的FPN自然地进行训练和测试,其方式与[29]中的相同。我们详细说明了实验中的实现细节。

4.2 将FPN应用于Fast R-CNN

Fast R-CNN [11]是一种基于区域的目标检测器,其中感兴趣区域(RoI)池化用于提取特征。Fast R-CNN最常在单尺度特征图上应用。要将它与我们的FPN一起使用,我们需要给不同的金字塔等级分配不同尺寸的RoI(理解:要判断每个ROI属于哪一层特征map,不然计算不了ROI pooling)。

我们将特征金字塔假设为从图像金字塔中生成。因此,在图像金字塔上运行时,我们可以调整基于区域的检测器[15,11]的分配策略。我们将宽度为w和高度为h的RoI(Fast R-CNN网络的输入图像)分配到我们的特征金字塔的第Pk层上:k=k0+log2(wh/224)(1)k=⌊k0+log2(\sqrt{wh}/224)⌋(1)。这里的224是ImageNet的预训练尺寸,k0k0
是目标层,在其上一个大小为224 * 224的ROI对应该层。类似于基于ResNet的Faster R-CNN目标检测器,它使用C4C_4这一单层特征,这里设置k0=4k_0=4。直观上来看,如果一个ROI的尺寸较小,假如说wh=112\sqrt{wh} = 112 ,那么应该将其映射到分辨率更小的层(即k=3)。

我们对所有层的所有ROI添加预测头,在Fast R-CNN中预测头是一系列全连接层+类别分类器(全连接)+边界框回归器(全连接)。同样,不同层之间的预测头也是参数共享的。在ResNet中,采用ResNet的conv5层(9层深子网)作为conv4特征顶部的头部,但是我们的方法已经利用了conv5来构造特征金字塔。因此与ResNet不同,我们简单地采用RoI池化来提取7×7特征,并在最终分类和边界框回归层之前附加两个隐藏的1,024-d的全连接(fc)层(每个层后跟ReLU)。这些层是随机初始化的,因为ResNets中没有预先训练的fc层。请注意,与标准的conv5头相比,我们的2-fc MLP头参数更少,速度更快。

基于这些调整,我们可以在特征金字塔之上训练和测试Fast RCNN。实验细节在实验部分给出。

理解:RPN是对{P2,P3,P4,P5,P6}(P6层通过P5层最大池化得到)5个层生成anchor box;Fast R-CNN是对所有的ROI映射到{P2,P3,P4,P5}4个层求ROI pooling。

5 在目标检测上的实验

我们对80类COCO检测数据集进行了实验[21]。我们使用80k训练图像和35k val图像子集(trainval35k [2])进行训练,并在5k大小的子图像集(迷你)上进行消融实验。我们还报告了标准测试集(test-std)[21]的最终结果,该测试集没有公开的标签。

按照惯例[12],所有网络骨干都在ImageNet1k分类集[33]上进行预训练,然后在检测数据集上进行微调。我们使用公开可用的预先训练的ResNet-50和ResNet-101模型。我们的代码是使用Caffe2重新实现的py-faster-rcnn。

5.1 RPN的实验结果

我们按照[21]中的定义评估小型,中型和大型物体的ARARs,ARm和ARl)和COCO数据集的平均召回AR,我们报告每张图片100个和1000个提议区域的结果(AR100和AR1k)。

实现细节:表1中的所有结构都是端到端训练的。调整输入图像的大小,使其较短边具有800个像素。我们在8个GPU上采用同步SGD训练。每个mini-batch包括每个GPU 2幅图像和每个图像256个锚框。我们使用0.0001的权重衰减和0.9的动量。前30k小批量的学习率为0.02,接下来的10k小批量为0.002。对于所有RPN实验(包括基线),我们包括处于训练图像外部的锚框,这与[29]不同,他们忽略这些锚框。其他实现细节如[29]中所述。使用FPN在8个GPU上训练COCO的RPN大约需要8个小时。
在这里插入图片描述
和基准进行比较:为了与原始RPN进行公平比较[29],我们使用C4的单尺度特征(与[16]相同)或C5运行两个基线(表1(a,b)),两者都使用和我们相同的超参数,包括使用5个尺度的锚框{322,642,1282,2562,5122{32^2,64^2,128^2,256^2,512^2}}。表1(b)相对于表1(a)没有显示出优势,表明仅使用单个更高级别的特征图是不够的,因为在较小的分辨率和较强的语义之间存在折衷。

将FPN放置在RPN中将AR1k提高到56.3(表1(c)),这比单一尺寸的RPN基线增加了8.0个点(表1(a))。此外,小物体(ARs1kARs^{1k})的表现大幅提升了12.9点。表示我们的金字塔表示极大地提高了RPN对目标尺度变化的鲁棒性

自上向下的连接有多重要: 表1(d)显示了没有自上而下路径的特征金字塔的结果。通过这种修改,1×1横向连接随后3×3卷积都应用到自下而上的金字塔。该体系结构模拟重用金字塔特征层次结构的效果(图1(b))。

表1(d)中的结果与RPN基线相当,并且远远落后于我们的结果。我们猜想这是因为在自下而上的金字塔上不同层次之间存在很大的语义差距(图1(b)),特别是对于非常深的ResNets。我们还评估了表1(d)的变体而没有共享网络头的参数,但观察到类似的性能下降。这个问题不能简单地通过特定层的网络头来补救。

横向连接有多重要: 表1(e)显示了没有1×1横向连接的自顶向下特征金字塔的消融结果。这个自上而下的金字塔具有强大的语义特征和精细的分辨率。但我们认为这些特征的位置并不精确,因为这些特征已经过多次下采样和上采样。更精确的特征位置可以直接从自下而上的特征可以通过横向连接从自低向上的特征传递到自上而下的特征。结果,FPN的AR1k得分比表1(e)高10个点。

金字塔表示有多重要: 可以将网络头附加到P2层,其具有最高分辨率、强语义特征映射(即我们的金字塔中最精细的级别),而不是使用完整的金字塔表示。与单尺度基线类似,我们将所有锚框分配给P2特征图。这种变体(表1(f))优于基线但不如我们的方法。RPN是具有固定窗口大小的滑动窗口检测器,因此在金字塔不同层级上扫描可以增加其对比例变化的鲁棒性。

此外,我们注意到由于其空间分辨率较大,单独使用P2会导致更多的锚框(750k,表1(f))。该结果表明,更多数量的锚框本身不足以提高准确性。

5.2 Faste/Faster R-CNN的目标检测结果

接下来,我们研究基于区域检测器的FPN。我们通过COCO式平均精度(AP)和PASCAL式AP(单个IoU阈值为0.5)评估目标检测。我们还按照[21]中的定义报告COCO AP对小,中,大尺寸物体(即APs,APm和APl)

实现细节:调整输入图像的大小,使其较短边具有800个像素。同步SGD用于在8个GPU上训练模型。每个小批量涉及每个GPU 2个图像和每个图像512个RoI。我们使用0.0001的权重衰减和0.9的动量。前60k小批量的学习率为0.02,接下来的20k小批量为0.002。我们使用每个图像2000个RoI进行训练,使用1000个进行测试。在COCO数据集上训练结合FPN的Fast R-CNN大约需要10个小时。

5.2.1 在固定的proposals上的Fast R-CNN

为了更好地研究FPN对基于区域的检测器的影响,我们在一组固定的建议框上进行了Fast R-CNN的消融实验。我们固定结合FPN的RPN提取的建议框,因为它们可以更好的进行小目标的检测。为了简化实验,我们没有在RPN和Fast R-CNN之间共享特征。
在这里插入图片描述
作为基于ResNet的Fast R-CNN基线,按照[16]的做法,我们采用输出大小为14×14的RoI池化并将所有的conv5层作为附加的头部隐藏层。这使得表2(a)中的AP为31.9。表2(b)是利用具有2个隐藏fc层的MLP头的基线,类似于我们的架构中的头部。它得到28.8的AP,表明2-fc头在表2(a)中没有给我们任何正交优势。(???)

表2(c)显示了我们的FPN在Fast R-CNN中的结果。与表2(a)中的基线相比,我们的方法将AP提高2.0点,小目标的AP提高了2.1点。与同样采用2 fc头的基线(表2(b))相比,我们的方法将AP提高了5.1个点。这些比较表明,基于我们的特征金字塔进行基于区域的目标检测,效果会好于基于单尺度特征进行基于区域的目标检测。

表2(d)和2(e)表明移除自上向下连接和横向连接的效果较差,和RPN中的结论一致。值得注意的是,删除自上而下的连接(表2(d))会显着降低准确性,这表明Fast R-CNN在高分辨率特征中使用了低层特征。

在表2(f)中,我们在P2的单个最精细尺度特征图上采用Fast R-CNN。其结果(33.4 AP)略微低于使用所有金字塔等级(33.9 AP,表2(c))。我们认为这是因为RoI池化是一种类似变换的操作,对该区域的尺度不太敏感。尽管该变体具有良好的准确性,但它基于结合FPN的RPN提议,因此已经从金字塔表示中受益。

5.2.2 Faster R-CNN(使用一致的proposals)

在上文中,我们使用一组固定的建议框来研究检测结果。但是在Faster R-CNN系统[29]中,RPN和Fast R-CNN必须使用相同的网络骨干才能实现特征共享。表3显示了我们的方法和两个基线之间的比较,所有这些都使用RPN和Fast R-CNN的一致骨干架构。表3(a)显示了我们对[16]中描述的基线Fast R-CNN系统的复现结果。在受控设置下,我们的FPN(表3(c))比这个强基线好2.3点AP和3.8点AP@0.5。
在这里插入图片描述
注意,表3(a)和(b)是比He等人(表3c)提供的基线强得多的基线。我们发现以下实现有助于缩小差距:(i)我们在[11,16]中使用800像素的图像尺寸而不是600;(ii)我们训练每个图像512个RoI,加速收敛,与[11,16]中的64个RoI相反;(iii)我们在[16]中使用5个比例锚而不是4个;(iv)在测试时,我们每个图像使用1000个提案,而不是[16]中的300个。因此,与表3(c)中的He et al的ResNet50 Faster R-CNN基线相比,我们的方法将AP提高了7.6个点,AP = 0.5提高了9.6个点。

共享特征:在上文中,为简单起见,我们不共享RPN和快速R-CNN之间的特征。表5中,我们按照Faster R-CNN描述的四步交替训练进行特征共享。实验结果也证明了特征共享有助于提升准确率
在这里插入图片描述
运行时间:通过特征共享,我们的基于FPN的Faster R-CNN系统在ResNet-50的单个NVIDIA M40 GPU上的每个图像的推断时间为0.148秒,基于ResNet-101的推断时间为0.172秒。作为对比,单一尺度的ResNet-50表3(a)中的基线在0.32秒左右。我们的方法通过FPN中的额外层引入了额外的小额成本,但具有更少的参数。总体而言,我们的系统比基于ResNet的Faster R-CNN系统更快。我们相信,我们的方法的效率和简单性将有益于未来的研究和应用。

5.2.3 和其他检测算法进行coco数据集结果对比

在这里插入图片描述

6 结论

我们提出了一个简洁的框架,用于在ConvNets中构建特征金字塔。我们的方法对比了几个强大的基准和获胜者,都显示了有效改进。因此,它为特征金字塔的研究和应用提供了实用的解决方案,而无需计算图像金字塔。最后,我们的研究表明,尽管深度ConvNets具有强大的表征能力及其对尺寸变化的隐含鲁棒性,但使用金字塔表示对解决多尺度问题仍然至关重要。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!