注:为了方便自己学习读论文,机翻+自己修改
论文地址:https://arxiv.org/pdf/1612.03144.pdf
特征金字塔是识别系统中用于检测不同尺度目标的基本组件。但最近的深度学习目标检测器已经避免使用金字塔表示,一部分原因是它们是计算和内存密集型的。在本文中,我们利用深度卷积网络内在的多尺度、金字塔分级来构造具有很少额外成本的特征金字塔。开发了一种具有横向连接的自顶向下的架构,用于在所有尺度上构建高级语义特征映射。这种称为特征金字塔网络(FPN)的架构在几个应用程序中作为通用特征提取器,表现出了显著的改进。在一个基本的Faster R-CNN系统中使用FPN,没有任何不必要的东西,我们的方法可以在COCO检测基准数据集上取得最先进的单模型结果,结果超过了所有现有的单模型输入,包括COCO 2016挑战赛的获奖者。此外,我们的方法可以在GPU上以6FPS运行,因此是多尺度目标检测的实用和准确的解决方案。代码将公开发布。
识别不同尺度的目标是计算机视觉中的一个基本挑战。建立在图像金字塔之上的特征金字塔(我们简称为特征化图像金字塔)构成了标准解决方案的基础(Pyramid methods in image processing. RCA engineer, 1984)图1(a)这些金字塔是尺度不变的,因为目标的尺度变化是通过在金字塔中移动它的层级来抵消的。直观地说,该属性使模型能够通过在位置和金字塔层级上扫描模型来检测大范围尺度内的目标。
特征化图像金字塔在手工设计的时代被大量使用(5 Histograms of oriented gradients for human detection)(25 Distinctive image features from scale-invariant keypoints)。它们非常关键,以至于像DPM这样的目标检测器需要密集的尺度采样才能获得好的结果(例如每组10个尺度,octave含义参考SIFT特征)。对于识别任务,工程特征大部分已经被深度卷积网络(ConvNets)[19,20]计算的特征所取代。除了能够表示更高级别的语义,ConvNets对于尺度变化也更加鲁棒,从而有助于从单一输入尺度上计算的特征进行识别[15,11,29](图1(b))。但即使有这种鲁棒性,金字塔仍然需要得到最准确的结果。在ImageNet[33]和COCO[21]检测挑战中,最近的所有排名靠前的输入都使用了针对特征化图像金字塔的多尺度测试(例如[16,35])。对图像金字塔的每个层次进行特征化的主要优势在于它产生了多尺度的特征表示,其中所有层次上在语义上都很强,包括高分辨率层。
尽管如此,特征化图像金字塔的每个层次都具有明显的局限性。推断时间显著增加(例如,四倍[11]),使得这种方法在实际应用中不切实际。此外,利用图像金字塔训练端到端的深度网络,在内存方面也是不可行的,所以如果被采用,图像金字塔仅在测试时被使用[15,11,16,35],这造成了训练/测试时推断的不一致性。出于这些原因,Fast和Faster R-CNN[11,29]选择在默认设置下不使用特征化图像金字塔。
但是,图像金字塔并不是计算多尺度特征表示的唯一方法。深层ConvNet逐层计算特征层级,而对于下采样层,特征层级具有内在的多尺度金字塔形状。这种内在的网络特征层级产生不同空间分辨率的特征映射,但引入了由不同深度引起的较大的语义差异。高分辨率映射具有损害其目标识别表示能力的低级特征。
单次检测器(SSD)[22]是首先尝试使用ConvNet的金字塔特征层级中的一个,好像它是一个特征化的图像金字塔(图1(c))。理想情况下,SSD风格的金字塔将重用正向传递中从不同层中计算的多尺度特征映射,因此是零成本的。但为了避免使用低级特征,SSD放弃重用已经计算好的图层,而从网络中的最高层开始构建金字塔(例如,VGG网络的conv4_3[36]),然后添加几个新层。因此它错过了重用特征层级的更高分辨率映射的机会。我们证明这些对于检测小目标很重要。
本文的目标是自然地利用ConvNet特征层级的金字塔形状,同时创建一个在所有尺度上都具有强大语义的特征金字塔。为了实现这个目标,我们所依赖的架构将低分辨率、强语义的特征与高分辨率、弱语义的特征通过自顶向下的路径和横向连接相结合。(图1(d))。其结果是一个特征金字塔,在所有级别都具有丰富的语义,并且可以从单个输入图像尺度上进行快速构建。换句话说,我们展示了如何创建网络中的特征金字塔,可以用来代替特征化的图像金字塔,而不牺牲表示能力,速度或内存。
图2。顶部:带有跳跃连接的自顶向下的架构,在最好的级别上进行预测(例如,[28])。底部:我们的模型具有类似的结构,但将其用作特征金字塔,并在各个层级上独立进行预测。
最近的研究[28,17,8,26]中流行采用自顶向下和跳跃连接的类似架构。他们的目标是生成具有高分辨率的单个高级特征映射,并在其上进行预测(图2顶部)。相反,我们的方法利用这个架构作为特征金字塔,其中预测(例如目标检测)在每个级别上独立进行(图2底部)。我们的模型反映了一个特征化的图像金字塔,这在这些研究中还没有探索过。
我们评估了我们称为特征金字塔网络(FPN)的方法,其在各种系统中用于检测和分割[11,29,27]。没有任何不必要的东西,我们在具有挑战性的COCO检测基准数据集上报告了最新的单模型结果,仅仅基于FPN和基本的Faster R-CNN检测器[29],就超过了其他单模型结构的效果。在消融实验中,我们发现对于边界框提议,FPN将平均召回率(AR)显著增加了8个百分点;对于目标检测,它将COCO型的平均精度(AP)提高了2.3个百分点,PASCAL型AP提高了3.8个百分点,超过了ResNet[16]上Faster R-CNN强大的单尺度基准线。我们的方法也很容易扩展掩模提议,改进实例分隔 AR,并且速度超过了依赖图像金字塔的最先进方法。
另外,我们的金字塔结构可以通过所有尺度进行端到端训练,并且在训练/测试时使用一致,这在使用图像金字塔时是内存不可行的。因此,FPN能够比所有现有的最先进方法获得更高的准确度。此外,这种改进是在不增加单尺度基准测试时间的情况下实现的。我们相信这些进展将有助于未来的研究和应用。我们的代码将公开发布。
手工设计特征和早期神经网络。SIFT特征[25]最初是从尺度空间极值中提取的,用于特征点匹配。HOG特征[5],以及后来的SIFT特征,都是在整个图像金字塔上密集计算的。这些HOG和SIFT金字塔已在许多工作中得到了应用,用于图像分类,目标检测,人体姿势估计等。这对快速计算特征化图像金字塔也很有意义。Dollar等人[6]通过先计算一个稀疏采样(尺度)金字塔,然后插入缺失的层级,从而演示了快速金字塔计算。在HOG和SIFT之前,使用ConvNet[38,32]的早期人脸检测工作计算了图像金字塔上的浅网络,以检测跨尺度的人脸。
Deep ConvNet目标检测器。随着现代深度卷积网络[19]的发展,像OverFeat[34]和R-CNN[12]这样的目标检测器在精度上显示出了显著的提高。OverFeat采用了一种类似于早期神经网络人脸检测器的策略,通过在图像金字塔上应用ConvNet作为滑动窗口检测器。R-CNN采用了基于区域提议的策略[37],其中每个提议在用ConvNet进行分类之前都进行了尺度归一化。SPPnet[15]表明,这种基于区域的检测器可以更有效地应用于在单个图像尺度上提取的特征映射。最近更准确的检测方法,如Fast R-CNN[11]和Faster R-CNN[29]提倡使用从单一尺度计算出的特征,因为它提供了精确度和速度之间的良好折衷。然而,多尺度检测性能更好,特别是对于小目标的检测。
使用多层的方法。一些最近的方法通过使用ConvNet中的不同层来改进检测和分割。FCN[24]将多个尺度上的每个类别的部分分数相加以计算语义分割。Hypercolumns[13]使用类似的方法进行目标实例分割。在计算预测之前,其他几种方法(HyperNet[18],ParseNet[23]和ION[2])将多个层的特征连接起来,这相当于累加转换后的特征。SSD[22]和MS-CNN[3]可预测特征层级中多个层的目标,而不需要组合特征或分数。
最近有一些方法利用横向/跳跃连接将跨分辨率和语义层次的低级特征映射关联起来,包括用于分割的U-Net[31]和SharpMask[28],Recombinator网络[17]用于人脸检测以及Stacked Hourglass网络[26]用于关键点估计。Ghiasi等人[8]为FCN提出拉普拉斯金字塔表示,以逐步细化分割。尽管这些方法采用的是金字塔形状的架构,但它们不同于特征化的图像金字塔[5,7,34],其中所有层次上的预测都是独立进行的,参见图2。事实上,对于图2(顶部)中的金字塔结构,图像金字塔仍然需要跨多个尺度上识别目标[28]
我们的目标是利用卷积网络的金字塔层级特征,该层次结构具有从低到高的语义,并在整个过程中构建具有高级语义的特征金字塔。由此产生的特征金字塔网络是通用的,在本文中,我们侧重于滑动窗口提议(Region Proposal Network,简称RPN)[29]和基于区域的检测器(Fast R-CNN)[11]。在第6节中我们还将FPN泛化到实例分割。
我们的方法以任意大小的单尺度图像作为输入,并以全卷积的方式输出多层适当大小的特征映射。这个过程独立于主卷积体系结构(例如[19,36,16]),在本文中,我们呈现了使用ResNets[16]的结果。如下所述,我们的金字塔结构包括自下而上的路径,自上而下的路径和横向连接。
自下而上的路径。自下向上的路径是主卷积网络的前馈计算,其计算由尺度步长为2的多尺度特征映射组成的特征层级。通常有许多层产生相同大小的输出映射,并且我们认为这些层位于相同的网络阶段。对于我们的特征金字塔,我们为每个阶段定义一个金字塔层。我们选择每个阶段的最后一层的输出作为我们的特征映射参考集,我们将丰富它来创建我们的金字塔。这种选择是自然的,因为每个阶段的最深层应具有最强大的语义特征。
具体而言,对于ResNets[16],我们使用每个阶段的最后一个残差块输出的特征激活。对于conv2,conv3,conv4和conv5输出,我们将这些最后残差块的输出表示为,并注意相对于输入图像它们的步长为{4,8,16,32}个像素。由于其庞大的内存占用,我们不会将conv1纳入金字塔。
自顶向下的路径和横向连接。是如何去结合低层高分辨率的特征呢?方法就是,把更抽象,语义更强的高层特征图进行上取样,然后把该特征横向连接(lateral connections )至前一层特征,因此高层特征得到加强。每个横向连接合并来自自下而上路径和自顶向下路径的具有相同空间大小的特征映射。自下而上的特征映射具有较低级别的语义,但其激活可以更精确地定位,因为它被下采样的次数更少。
图3。构建模块说明了横向连接和自顶向下路径,通过加法合并。
图3显示了建造我们的自顶向下特征映射的构建块。使用特征粗糙,分辨率高的特征映射,我们将空间分辨率上采样为2倍(为了简单起见,使用最邻近上采样)。然后通过按元素相加,将上采样映射与相应的自下而上映射(其经过1×1卷积层来减少通道维度)合并。迭代这个过程,直到生成最佳分辨率映射。为了开始迭代,我们只需在上添加一个1×1卷积层来生成最粗糙分辨率映射。最后,我们在每个合并的映射上添加一个3×3卷积来生成最终的特征映射,这是为了减少上采样的混叠效应。这个最终的特征映射集称为{ P 2 , P 3 , P 4 , P 5 P_2,P_3,P_4,P_5 P2,P3,P4,P5},对应于{ C 2 , C 3 , C 4 , C 5 C_2,C_3,C_4,C_5 C2,C3,C4,C5},分别具有相同的空间大小。
由于金字塔的所有层都像传统的特征图像金字塔一样使用共享分类器/回归器,因此我们在所有特征映射中固定特征维度(通道数记为)。我们在本文中设置d = 256,因此所有额外的卷积层都有256个通道的输出。在这些额外的层中没有非线性,我们在实验中发现这些影响很小。
简洁性是我们设计的核心,我们发现我们的模型对许多设计选择都很鲁棒。我们已经尝试了更复杂的块(例如,使用多层残差块[16]作为连接)并观察到稍微更好的结果。设计更好的连接模块并不是本文的重点,所以我们选择上述的简单设计。
我们的方法是在深度卷积网络内部构建特征金字塔的通用解决方案。在下面,我们采用我们的方法在RPN[29]中进行边界框提议生成,并在Fast R-CNN[11]中进行目标检测。为了证明我们方法的简洁性和有效性,我们对[29,11]的原始系统进行最小修改,使其适应我们的特征金字塔。
RPN[29]是一个滑动窗口类不可知的目标检测器。在原始的RPN设计中,一个小型子网络在密集的3×3滑动窗口,单尺度卷积特征映射上进行评估,执行目标/非目标的二分类和边界框回归。这是通过一个3×3的卷积层实现的,后面跟着两个用于分类和回归的1×1兄弟卷积,我们称之为网络头部。目标/非目标标准和边界框回归目标的定义是关于一组称为锚点的参考框的[29]。这些锚点具有多个预定义的尺度和长宽比,以覆盖不同形状的目标。
我们通过用我们的FPN替换单尺度特征映射来适应RPN。我们在我们的特征金字塔的每个层级上附加一个相同设计的头部(3x3 conv和两个1x1兄弟convs)。由于头部在所有金字塔等级上的所有位置密集滑动,所以不需要在特定层级上具有多尺度锚点。相反,我们为每个层级分配单尺度的锚点。在形式上,我们定义锚点 { P 2 , P 3 , P 4 , P 5 P_2,P_3,P_4,P_5 P2,P3,P4,P5},分别具有 { 3 2 2 , 6 4 2 , 12 8 2 , 25 6 2 , 51 2 2 32^2,64^2,128^2,256^2,512^2 322,642,1282,2562,5122}个像素的面积。正如在[29]中,我们在每个层级上也使用了{$ 1:2,1:1,2:1$}多个长宽比的锚点。所以在金字塔上总共有十五个锚点。
如[29],我们根据锚点和实际边界框的交并比(IoU)比例将训练标签分配给锚点。形式上,如果一个锚点对于一个给定的实际边界框具有最高的IoU或者与任何实际边界框的IoU超过0.7,则给其分配一个正标签,如果其与所有实际边界框的IoU都低于0.3,则为其分配一个负标签。请注意,实际边界框的尺度并未明确用于将它们分配到金字塔的层级;相反,实际边界框与已经分配给金字塔等级的锚点相关联。因此,除了[29]中的内容外,我们不引入额外的规则。
我们注意到头部的参数在所有特征金字塔层级上共享;我们也评估了替代方案,没有共享参数并且观察到相似的准确性。共享参数的良好性能表明我们的金字塔的所有层级共享相似的语义级别。这个优点类似于使用特征图像金字塔的优点,其中可以将常见头部分类器应用于在任何图像尺度下计算的特征。
通过上述改编,RPN可以自然地通过我们的FPN进行训练和测试,与[29]中的方式相同。我们在实验中详细说明实施细节。
Fast R-CNN[11]是一个基于区域的目标检测器,利用感兴趣区域(RoI)池化来提取特征。Fast R-CNN通常在单尺度特征映射上执行。要将其与我们的FPN一起使用,我们需要为金字塔等级分配不同尺度的RoI。
我们将我们的特征金字塔看作是从图像金字塔生成的。因此,当它们在图像金字塔上运行时,我们可以适应基于区域的检测器的分配策略[15,11]。在形式上,我们通过以下公式将宽度为 w w w和高度为 h h h(在网络上的输入图像上)的RoI分配到特征金字塔的级别 P k P_k Pk上:
这里224是规范的ImageNet预训练大小,而K_0是大小为 w x h = 22 4 2 w x h = 224^2 wxh=2242的RoI应该映射到的目标级别。类似于基于ResNet的Faster R-CNN系统[16]使用 C 4 C_4 C4作为单尺度特征映射,我们将 K 0 K_0 K0设置为4。直觉上,方程(1)意味着如果RoI的尺寸变小了(比如224的1/2),它应该被映射到一个更精细的分辨率级别(比如k = 3)。
我们在所有级别的所有RoI中附加预测器头部(在Fast R-CNN中,预测器头部是特定类别的分类器和边界框回归器)。再次,预测器头部都共享参数,不管他们在什么层级。在[16]中,ResNet的conv5层(9层深的子网络)被用作conv4特征之上的头部,但我们的方法已经利用了conv5来构建特征金字塔。因此,与[16]不同,我们只是采用RoI池化提取7×7特征,并在最终的分类层和边界框回归层之前附加两个隐藏单元为1024维的全连接( f c fc fc)层(每层后都接ReLU层)。这些层是随机初始化的,因为ResNets中没有预先训练好的 f c fc fc层。请注意,与标准的conv5头部相比,我们的 2 − f c 2- fc 2−fcMLP头部更轻更快。
基于这些改编,我们可以在特征金字塔之上训练和测试Fast R-CNN。实现细节在实验部分给出。
我们在80类的COCO检测数据集[21]上进行实验。我们训练使用80k张训练图像和35k大小的验证图像子集(trainval35k[2])的联合,并报告了在5k大小的验证图像子集(minival)上的消融实验。我们还报告了在没有公开标签的标准测试集(test-std)[21]上的最终结果。
正如通常的做法[12],所有的网络骨干都是在ImageNet1k分类集[33]上预先训练好的,然后在检测数据集上进行微调。我们使用公开可用的预训练的ResNet-50和ResNet-101模型。我们的代码是使用Caffe2重新实现py-faster-rcnn。
根据[21]中的定义,我们评估了COCO类型的平均召回率(AR)和在小型,中型和大型目标( A R s , A R m , a n d A R l AR_s, AR_m, and AR_l ARs,ARm,andARl)上的AR。我们报告了每张图像使用100个提议和1000个提议的结果( A R 100 a n d A R 1 k AR^{100}and AR^{1k} AR100andAR1k)。
实施细节。表1中的所有架构都是端对端训练。输入图像的大小调整为其较短边有800像素。我们采用8个GPU进行同步SGD训练。小批量数据包括每个GPU上2张图像和每张图像上256个锚点。我们使用0.0001的权重衰减和0.9的动量。前30k次小批量数据的学习率为0.02,而下一个10k次的学习率为0.002。对于所有的RPN实验(包括基准数据集),我们都包含了图像外部的锚盒来进行训练,这不同于[29]中的忽略这些锚盒。其它实现细节如[29]中所述。使用具有FPN的RPN在8个GPU上训练COCO数据集需要约8小时。
表1。使用RPN[29]的边界框提议结果,在COCO的minival数据集上进行评估。所有模型都是通过trainval35k训练的。列“lateral”和“top-down”分别表示横向连接和自上而下连接的存在。列“feature”表示附着头部的特征映射。所有结果都是基于ResNet-50的并共享相同的超参数。
与baseline的比较。为了与原始RPN[29]进行公平比较,我们使用C4(与[16]相同)或C5的单比例地图运行两条基线(表1(a,b)),两者都使用与我们相同的超参数,包括使用5个比例锚{ 3 2 2 , 6 4 2 , 12 8 2 , 25 6 2 , 51 2 2 32^2,64^2,128^2,256^2,512^2 322,642,1282,2562,5122}。表1(B)没有显示出与(A)相比的优势,表明单一的较高级别的特征地图是不够的,因为在较粗的分辨率和较强的语义之间存在权衡。
在RPN中放置FPN可以将 A R 1 k AR^{1k} AR1k提高到56.3(表1©),这比单尺度RPNbaseline增加了8.0个点(表1(a))。此外,在小对象( A R S 1 k AR^{1k}_S ARS1k)上的性能提高了12.9个点的较大幅度。我们的金字塔表示极大地提高了RPN对目标尺度变化的鲁棒性。
**自上而下的语义丰富有多重要?**表1(d)显示了没有自上而下路径的特征金字塔的结果。通过这种修改,1×1横向连接,然后是3×3卷积连接被附加到自下而上的金字塔上。该体系结构模拟重用金字塔特征层次的效果(图1(b))。
表1(d)中的结果与RPN baseline持平,远远落后于我们的。我们猜测,这是因为自下而上金字塔(图1(b))上的不同级别之间存在很大的语义差距,特别是对于非常深的ResNet。我们还评估表1(d)的一个变体,但网络头没有共享参数,但观察到类似的性能降级。这个问题不能简单地由特定级别的网络头来解决。
**横向连接有多重要?**表1(e)显示了没有1×1横向连接的自上而下特征金字塔的消融结果。这种自上而下的金字塔具有较强的语义特征和较好的分辨率。但我们认为,这些特征的位置并不准确,因为这些特征已经行向下采样和向上采样好几次了。通过横向连接可以把定位准确的自下而上层的特征与自上而下层的特征相连接。因此,FPN的 A R 1 k AR^{1k} AR1k得分比表1(e)高10个点。
**金字塔表示法有多重要?**人们可以将头部附加到 P 2 P_2 P2的最高分辨率、强语义的特征地图上,而不是求助于金字塔表示法(即金字塔中最精细的级别)。与单比例尺基线类似,我们将所有锚点分配给 P 2 P_2 P2feature map。这个变种(表1(f))比基线好,但比我们的方法差。RPN是一种具有固定窗口大小的滑动窗口检测器,因此在金字塔级别上进行扫描可以增强其对尺度变化的鲁棒性。
此外,我们注意到,单独使用 P 2 P_2 P2时由于其较大的空间分辨率而导致更多的锚点(750k,表1(f))。这一结果表明,较大数量的锚本身并不足以提高准确性。
接下来,我们研究基于区域(非滑动窗口)检测器的FPN。我们通过COCO风格的平均精度(AP)和PASCAL风格的AP(在单个IoU阈值为0.5时)评估对象检测。我们还按照[21]中的定义报告了小,中和大尺寸对象(即AP,APm和AP1)的COCO AP。
实施细节。调整输入图像的大小,使其较短的一面具有800像素。同步SGD用于在8个GPU上训练模型。每个迷你批处理涉及每个GPU 2个图像和每个图像512个RoI。我们使用0.0001的权重衰减和0.9的动量。前60k迷你批次的学习率是0.02,接下来20k的学习率是0.002。我们为每个图像使用2000 RoIs进行培训,并为测试使用1000 RoI。使用FPN训练快速R-CNN在COCO数据集上大约需要10个小时。
为了更好地研究FPN仅对基于区域的检测器的影响,我们对固定的一组建议进行了Fast R-CNN的消融。我们选择冻结RPN在FPN(表1(c))上计算出的建议,因为它在检测器要识别的小物体上具有良好的性能。为简单起见,除非另有说明,否则我们在Fast R-CNN和RPN之间不共享功能。
作为基于ResNet 的 Fast R-CNN 的baseline,在[16]之后,我们采用输出大小为14×14的RoI池,并将所有conv5层附加为头部的隐藏层。在表2(a)中得出的AP为31.9。表2(b)是使用具有2个隐藏fc层的MLP头的baseline,类似于我们架构中的头。 AP的AP为28.8,表明2-fc头没有给我们任何超过表2(a)中baseline的正交优势。
表2(c)显示了FPN在Fast R-CNN中的结果。与表2(a)中的baseline相比,我们的方法将AP提高了2.0点,将小对象AP提高了2.1点。与也采用2fc头的基线(表2(b))相比,我们的方法将AP提高了5.1点。5这些比较表明,对于基于区域的对象检测器,我们的特征金字塔优于单尺度特征。
表2(d)和(e)显示,删除自上而下的连接或删除横向的连接会导致较差的结果,类似于我们在上述小节中对RPN的观察。 值得注意的是,删除自上而下的连接(表2(d))会大大降低准确性,这表明Fast R-CNN会在高分辨率特征图上使用低级功能。
在表2(f)中,我们在P2的单个最佳比例尺特征图上采用Fast R-CNN。其结果(33.4 AP)比使用所有金字塔等级(33.9 AP,表2(c))的结果稍差。我们认为,这是因为投资回报率池化是一种类似翘曲的操作,因此对区域规模不那么敏感。尽管此变体的准确性很高,但它基于{P_k}的RPN建议,因此已经从金字塔表示中受益。
在上面,我们使用了一组固定的建议来研究探测器。但是在Faster R-CNN系统[29]中,RPN和Fast R-CNN必须使用相同的网络主干才能使功能共享成为可能。表3显示了我们的方法与两个基线之间的比较,所有基线均使用RPN和Fast R-CNN的一致主干架构。表3(a)显示了我们对[Faster R-CNN]基线系统的再现,如[16]中所述。在受控设置下,我们的FPN(表3(c))比该强基准要好2.3点AP和3.8点[email protected]。
请注意,表3(a)和(b)是比He等人提供的基线强得多的基线。表3* 中的[16]我们发现以下实现方式对这一差距有所贡献:(i)我们使用800像素的图像比例代替[11,16]中的600; (ii)与[11,16]中的64个RoI相比,我们以每个图像训练512个RoI来加速收敛; (iii)我们使用5个比例锚,而不是[16]中的4个(增加322个); (iv)在测试时,每张图片我们使用1000个提案,而不是[16]中的300个提案。因此,与表3 * 中He等人的ResNet50 Faster R-CNN基线相比,我们的方法将AP提高了7.6点,将[email protected]提高了9.6点。
特征共享。在上面,为简单起见,我们不共享RPN和Fast R-CNN之间的特征。表5,我们按照[29]中所述的4步训练评估共享特征。与[29]相似,我们发现共享特征可以提高准确性。特征共享还可以减少测试时间。
运行时间。通过功能共享,我们基于FPN的Faster R-CNN系统在ResNet-50的单个NVIDIA M40 GPU上每个图像的推理时间为0.148秒,而ResNet-101.6的推理时间为0.172秒。表3(a)中的基准运行时间为0.32秒。我们的方法通过FPN中的额外层引入了少量的额外成本,但重量却较轻。总体而言,我们的系统比基于ResNet的Faster R-CNN更快。我们相信我们方法的效率和简便性将使未来的研究和应用受益。
我们发现,表5中的ResNet-101模型没有使用默认的学习率时间表进行充分的训练。因此,在训练Fast R-CNN步骤时,在每个学习速率下,迷你批次的数量增加2倍。这样就可以将AP的最小级别提高到35.6,而无需共享功能。该模型是我们提交给COCO检测排行榜的模型,如表4所示。由于时间有限,我们尚未评估其功能共享版本,如表5所示,它应该稍好一些。
图4.目标分割Proposals的FPN。特征金字塔的构造与目标检测的构造相同。我们在5×5的窗口上应用一个小的MLP,以生成输出尺寸为14×14的密集对象段。用橙色显示的是每个金字塔级别(此级别为 P 3 − 5 P_{3-5} P3−5的级别)所对应的mask所对应图像区域的大小。同时显示了相应的图像区域大小(浅橙色)和规范的对象大小(深橙色)。半个八度由MLP在7x7窗口(7≈5√2)上处理,此处未显示。细节在附录中。
表4将我们的方法与COCO竞赛获胜者(包括2016年获胜者G-RMI和2015年获胜者Faster R-CNN +++)的单模型结果进行了比较。在不增加花哨的情况下,我们的单模参赛产品已经超过了这些强大的,精心设计的竞争对手。在测试开发集上,我们的方法将现有的最佳结果提高了0.5个点(36.2对35.7)和3.4个点@ 0.5(59.1对55.7)。值得注意的是,我们的方法不依赖于图像金字塔,仅使用单个输入图像比例,但在小尺寸物体上仍具有出色的AP。这只能通过使用先前方法的高分辨率图像输入来实现。
而且,我们的方法没有利用很多流行的改进,例如迭代回归[9],硬否定挖掘[35],上下文建模[16],更强大的数据增强[22]等。这些改进是对FPN的补充,应该会有所发展精度进一步提高。
最近,FPN已在COCO竞争的所有轨道上实现了新的顶级成绩,包括检测,实例分割和关键点估计。有关详细信息,请参见[14]。
我们的方法是通用的金字塔表示,可以用于除对象检测之外的其他应用程序。在本节中,我们将遵循DeepMask / SharpMask框架[27,28],使用FPN生成细分提议。
DeepMask / SharpMask经过图像裁剪训练,可预测实例片段和对象/非对象得分。在推论时,这些模型被卷积运行以在图像中生成密集的提议。为了产生多个尺度的分段,图像金字塔是必要的[27,28]。
调整FPN以生成掩膜方案很容易。我们使用完全卷积的设置进行训练和推理。我们像在Sec中一样构造要素金字塔。 5.1并设置d =128。在要素金字塔的每个级别之上,我们应用一个小的5×5 MLP以完全卷积的方式预测14×14掩膜和对象分数,请参见图4。在[27,28]的图像金字塔中,每个八度使用2个音阶,我们使用第二个输入大小为7×7的MLP处理半个八度。这两个MLP在RPN中起着锚的作用。该架构经过端到端的培训;完整的实现细节在附录中给出。
https://github.com/facebookresearch/deepmask
结果显示在表6中。我们报告的AR区段和AR区段在小型,中型和大型对象上的总和为1000个提案。我们的具有单个5×5 MLP的基准FPN模型实现了43.4的AR。切换到稍大的7×7 MLP会使精度基本保持不变。同时使用两个MLP可以将精度提高到45.7 AR。掩码输出大小从14×14增加到28×28,AR会增加另一点(较大的大小会开始降低精度)。最后,将训练迭代次数加倍,AR就会增加到48.1。
我们还报告了与DeepMask [27],SharpMask [28]和InstanceFCN [4](掩膜方案生成中的最新技术方法)的比较。我们比这些方法的精度高出8.3分AR。特别是,我们在小物体上的精度几乎翻了一番。
现有的掩模提议方法[27、28、4]基于密集采样的图像金字塔(例如,在[27、28]中按2 {-2:0.5:1}缩放),使得它们在计算上昂贵。我们基于FPN的方法要快得多(我们的模型以6到7 FPS运行)。这些结果表明,我们的模型是通用的特征提取器,可以代替其他多个尺度检测问题的图像金字塔。
我们提供了一个简洁的框架,用于在ConvNets中构建要素金字塔。我们的方法在几个稳固的基准和竞赛获胜者上均显示出显着改进。因此,它为特征金字塔的研究和应用提供了一种实用的解决方案,而无需计算图像金字塔。最后,我们的研究表明,尽管深层ConvNets具有强大的表示能力,并且隐含了对尺度变化的鲁棒性,但是使用金字塔表示法明确解决多尺度问题仍然至关重要。