zoukankan      html  css  js  c++  java
  • Feature Pyramid Networks for Object Detection

    Feature Pyramid Networks for Object Detection

    Abstract

    特征金字塔是不同尺度目标识别系统的基本组成部分。但是,最近的深度学习对象检测器已经避免了金字塔表示,部分原因是它们需要大量的计算和内存。在本文中,我们利用深卷积网络固有的多尺度金字塔结构来构造边际额外成本的特征金字塔。开发了一种具有横向连接的自顶向下体系结构,用于在所有尺度上构建高级语义特征图。这种架构被称为特征金字塔网络(FPN),作为一种通用的特征提取器,在一些应用中得到了显著的改进。在基本的Faster R-CNN系统中使用FPN,我们的方法在没有任何附加条件的情况下,在COCO检测基准上实现了最先进的单模型结果,超过了所有现有的单模型条目,包括来自COCO 2016挑战赛的获胜者。此外,我们的方法可以在GPU上以6fps的速度运行,因此是一种实用而准确的多尺度目标检测解决方案。代码将公开提供。

    1. Introduction

    识别不同尺度的物体是计算机视觉的一个基本挑战。建立在图像金字塔上的特征金字塔(简称为特征图像金字塔)构成了标准解决方案[1]的基础(如图1(a)):

    这些金字塔是尺寸不变的,因为一个对象的尺寸变化是通过改变其在金字塔中的级别来偏移的(即将图像缩放为不一样的尺寸作为不一样的金字塔级别的输入)。直观地说,此属性使模型能够通过扫描位置和金字塔级别来检测大的尺寸范围内的对象。
    特征图像金字塔在手工设计特征的时代被大量使用[5,25]。它们是如此的重要,因为像DPM[7]这样的对象探测器需要密集的尺度采样来获得良好的结果(例如,每八度10个尺度)。对于识别任务,工程特征已经被深度卷积网络(ConvNets)计算的特征所取代[19,20]。除了能够表示更高级的语义外,ConvNets还具有更强的尺度方差鲁棒性,从而有助于从单个输入尺度上计算的特征进行识别[15,11,29](图1(b))。

    但即使有了这种鲁棒性,金字塔仍然需要得到最准确的结果。最近在ImageNet[33]和COCO[21]检测挑战中的所有顶级条目都使用了对特征图像金字塔的多尺度测试(例如,[16,35])。将图像金字塔的每一层都特征化的主要优点是,它产生了一个多尺度的特征表示,其中所有的层次在语义上都是强的,包括高分辨率的层次。
    然而,特征化图像金字塔的每一层有明显的局限性。推理时间显著增加(例如,[11]增加了4倍),使得这种方法在实际应用中不切实际。此外,在图像金字塔上端对端训练深度网络在内存方面是不可行的,因此,如果利用图像金字塔,将仅在测试时使用[15,11,16,35],这造成了训练/测试时间推断之间的不一致性。基于这些原因,Fast和Faster R-CNN[11,29]在默认设置下选择不使用特征图像金字塔。

    然而,图像金字塔并不是计算多尺度特征表示的唯一方法。深卷积神经网络逐层计算特征层次结构,通过子采样层,特征层次结构具有固有的多尺度金字塔形状。这种网络内的特征层次结构产生了不同空间分辨率的特征图,但由于深度不同,导致了较大的语义差异。高分辨率映射的低级特征损害了其对目标识别的表征能力。
    Single Shot Detector(SSD)[22]是第一批尝试使用卷积神经网络的金字塔特征层次结构,好像它是一个特征图像金字塔(图1(c))。理想情况下,ssd类型的金字塔将重用来自不同层的,并在前向传递中计算的多尺度特征图,因此无需成本。但是为了避免使用底层特性,SSD放弃了重用已经计算过的层,而是从网络的高层开始构建金字塔(例如,VGG网落[36]的conv4_3),然后添加几个新层。因此,它错过了重用特征层次结构的高分辨率映射的机会。我们证明了这些对于探测小物体是很重要的
    本文的目标是自然地利用ConvNet的特性层次结构的中心形状,同时创建在所有尺度上都具有强大语义的特性金字塔。为了实现这一目标,我们依赖于一个通过自顶向下路径和横向连接将低分辨率、语义强的特征与高分辨率、语义弱的特征相结合的架构(图1(d))。

    结果是一个在所有层次上都具有丰富语义的特征金字塔,它是由单个输入图像尺度快速构建的。换句话说,我们展示了如何创建网络内的特征金字塔,这些特征金字塔可以用来代替特征化的图像金字塔,而不需要牺牲表征能力、速度或内存。
    类似的采用自顶向下和skip连接的架构在最近的研究中很流行[28,17,8,26]。他们的目标是生成一个高分辨率的单一高级特征图,并据此做出预测(图2顶部)。相反,我们的方法利用架构作为一个特征金字塔,在每个层次上独立地进行预测(例如,对象检测)(图2底部)。我们的模型呼应了一个特征化的图像金字塔,这在这些作品中没有被探索过:

    我们评估了我们的方法,称为特征金字塔网络(FPN),在各种系统中的检测和分割[11,29,27]。在没有附加功能的情况下,我们报告了一个最先进的单模型测试结果,该测试仅基于FPN和一个基本的Faster R-CNN探测器[29],超过了所有现有的设计复杂的单模型竞赛获胜者。在ablation实验中,我们发现对于边界框proposals,FPN显著提高平均召回率(AR)8.0个点;对于对象检测,它将coco-style的平均精度(AP)提高了2.3点,将PASCAL-style的AP提高了3.8点,超过了ResNets[16]上Faster R-CNN的强单尺度基线。我们的方法也很容易扩展到mask proposals和提高实例分割的AR和加速当前严重依赖于图像金字塔的最先进的方法的速度。
    此外,我们的金字塔结构可以在所有规模进行端对端训练,并在训练/测试时间一致使用,这在使用图像金字塔的方式时是内存不灵活的。因此,FPNs能够比所有现有的最先进的方法达到更高的精度。此外,这种改进是在不增加测试时间的情况下实现的。我们相信这些进展将促进未来的研究和应用。我们的代码将被公开。

    2. Related Work

    Hand-engineered features and early neural networks. SIFT特征[25]在尺度空间极值处提取,用于特征点匹配。HOG特征[5],以及后来的SIFT特征,被密集地计算在整个图像金字塔上。这些HOG和SIFT金字塔已经在许多工作中被用于图像分类、目标检测、人体姿态估计等。人们还对快速计算特征图像金字塔产生了浓厚的兴趣。Dollár等人[6]演示了快速的金字塔计算,首先计算一个稀疏采样(在尺寸上)金字塔,然后插值缺失的级别。在HOG和SIFT之前,使用ConvNets[38,32]进行人脸检测的早期工作是计算图像金字塔上的浅网络来跨尺度检测人脸。

    Deep ConvNet object detectors.  随着现代深卷积[19]的发展,OverFeat[34]和R-CNN[12]等对象探测器在精度上有了显著的提高。OverFeat采用了一种类似于早期神经网络人脸检测器的策略,将一个卷积神经网络用作图像金字塔上的滑动窗口检测器。R-CNN采用了基于区域proposal的[37]策略,每个proposal在使用卷积神经网络进行分类之前进行尺度标准化。SPPnet[15]证明了这种基于区域的检测器可以更有效地应用于单图像尺度上提取的特征图。最近和更准确的检测方法,如Fast R-CNN[11]和Faster R-CNN[29],提倡使用单一尺度计算的特征,因为它在准确性和速度之间提供了良好的权衡。然而,多尺度检测仍然有更好的性能,特别是对于小对象
    Methods using multiple layers. 许多最近的方法通过在卷积神经网络中使用不同的层来改进检测和分割。FCN[24]在多个尺度上对每个类别的部分得分求和,以计算语义分割。Hypercolumns[13]使用类似的方法来分割对象实例。其他几种方法(HyperNet[18]、ParseNet[23]和ION[2])在计算预测之前将多层特性串联起来,相当于对转换后的特性求和。SSD[22]和MS-CNN[3]在不结合特征或评分的情况下预测特征层次结构的多层对象。
    最近有一些利用横向(lateral)/跳跃(skip)连接的方法,这些方法将低层特征图与分辨率和语义级别相关联,包括用于分割的U-Net[31]和Sharp-Mask[28],用于人脸检测的Recombinator网络[17],用于关键点估计的Stacked Hourglass网络[26]。Ghiasi等人的[8]提出了一个Laplacian金字塔式的FCNs来逐步细化细分。虽然这些方法采用了金字塔形状的架构,但它们与特征化的图像金字塔[5,7,34]不同,后者在各个层次独立进行预测,如图2所示。事实上,对于图2(顶部)中的金字塔结构,仍然需要图像金字塔来跨多个尺度[28]识别对象。

    3. Feature Pyramid Networks

    我们的目标是利用卷积网络的金字塔式特征层次结构,它具有从低到高的语义,并构建一个自始至终具有高级语义的特征金字塔。所得到的特征金字塔网络是通用的,本文主要研究滑动窗口提出器(Region Proposal Network,简称RPN)[29]和基于区域的检测器(Fast R-CNN)[11]。我们还将FPNs推广到第6节中的实例分割建议。
    我们的方法以任意大小的单尺度图像作为输入,并以完全卷积的方式在多个级别上按比例大小输出特征映射。该过程独立于backbone卷积架构(如[19,36,16]),在本文中我们使用ResNets网络[16]给出结果。我们金字塔的构建包括一个自底而上的路径、一个自顶而下的路径,以及横向连接,介绍如下。


    Bottom-up pathway.  自底向上的路径是主干网的前向传播计算,它计算一个由多个尺度的特征映射构成的特征层次结构,其缩放步长为2。通常有许多层生成相同大小的输出映射,我们说这些层处于相同的网络阶段。对于我们的特征金字塔,我们为每个阶段定义一个金字塔级别。我们选择每个阶段最后一层的输出作为我们的参考特征图集,我们将对其进行加强以创建我们的金字塔。这种选择是自然的,因为每个阶段的最深层应该具有最强的特征
    具体来说,对于ResNets[16],我们使用每个阶段最后残差块的特性激活输出。对于conv2、conv3、conv4和conv5的输出,我们将这些最后的残差块的输出表示为{C2、C3、C4、C5},并注意它们相对于输入图像的步长为{4、8、16、32}。我们没有将conv1包含到金字塔中,因为它占用了大量内存

    Top-down pathway and lateral connections.  自顶向下的路径通过从更高的金字塔层次上对空间上更粗糙、但语义上更强的特征图进行向上采样,从而产生更高分辨率的特征。然后,通过横向连接,通过自下而上的路径增强这些特征。每个横向连接将相同空间大小的特征图从自下而上的路径和自顶向下的路径合并在一起。自底向上的特征图具有较低层次的语义,但由于它的子采样次数较少,所以其激活定位更精确
    图3显示了构建自顶向下特征图的构件:

    对于一个有着粗糙分辨率(小的长宽)的特征图,我们将空间分辨率上采样了2倍(为了简单起见,使用最近邻上采样方法)。然后通过元素添加将上采样的映射与相应的自底向上映射(该自底向上映射经过1×1的卷积层以减少通道维数)合并。此过程将迭代,直到生成最细的分辨率映射。为了开始迭代,我们只需在C5上附加一个1×1的卷积层来生成最粗糙的分辨率的映射图。最后,我们在每个合并后的映射图上追加一个3×3的卷积来生成最终的映射图,以减少上采样的混叠效果。最后的映射图组被称为{P2, P3, P4, P5},分别对应于空间大小相同的{C2、C3、C4、C5}。

    因为金字塔的所有层次都使用共享的分类器/回归器,就像传统的特征图金字塔一样,我们修正了所有特征图的特征维数(通道数,记作d)。我们在本文中设d = 256,因此所有额外的卷积层都有256通道输出。在这些额外的层中不存在非线性,我们根据经验发现它们的影响很小。
    简单性是我们设计的核心,我们发现我们的模型对许多设计选择都是健壮的。我们已经尝试了更复杂的块(例如,使用多层残差块[16]作为连接),并观察到略微更好的结果。设计更好的连接模块并不是本文的重点,因此我们选择了上述简单的设计。

    4. Applications

    我们的方法是一种在深度卷积网络中建立特征金字塔的通用解决方案。下面我们采用RPN[29]中的方法生成边界框,使用Fast R-CNN[11]中的方法进行对象检测。为了证明我们的方法的简单性和有效性,我们在将[29,11]的原始系统调整到我们的特征金字塔时,对它们进行了最小的修改。

    4.1. Feature Pyramid Networks for RPN

    RPN[29]是一个滑动窗口的、与类无关的对象检测器。在原始的RPN设计中,一个小的子网络在稠密的3×3滑动窗口上,在单尺度卷积特征映射的基础上,进行对象/非对象的二分类和边界框回归。这是通过一个带着两个sibling的1×1卷积层的3×3卷积层来实现分类和回归的,我们称之为网络头head。对象/非对象标准和边界框回归目标是根据一组称为anchors[29]的参考框定义的。anchors具有多种预定的尺寸和高宽比,以覆盖不同形状的物体。
    我们通过用FPN替换单尺度特征映射来使用RPN。我们将一个相同设计的头(3×3 conv和两个sibling 1×1 convs)连接到我们的特征金字塔的每一层。因为头部在所有金字塔层的所有位置上都有密集的滑动,所以没有必要在特定的级别上设置多尺度的anchors。相反,我们为每个级别分配一个单一尺寸的anchors。在形式上,我们定义anchors在{P2, P3, P4, P5}上分别有{322,642,1282,2562,5122}像素的区域。在[29]中,我们也在每一层使用多个长宽比{1:2,1:1,2:1}的anchors。金字塔上总共有15个anchors。
    我们根据anchors与真实边界框的交并比(IoU)比率为anchors分配训练标签,如[29]所示。正式地说,如果一个anchor对于一个给定的真实框有最高的IoU,或者对于任何真实框有超过0.7的IoU,那么它就被赋予了一个正样本标签;如果和所有真实框的IoU都低于0.3,那么它就被赋予了一个负样本的标签。请注意,真实框的尺寸并没有明确地用于将它们分配到金字塔的层面;相反,真实框与anchors相关,anchors被分配到金字塔级别。因此,除了[29]中的规则外,我们不引入任何额外的规则
    我们注意到head的参数在所有的特征金字塔层次上是共享的;我们也评估了没有共享参数的替代方案,并观察到类似的准确性。共享参数的良好性能表明,我们的金字塔的所有层次共享相似的语义层次。这一优点类似于使用特征化的图像金字塔,其中一个常见的头分类器可以应用于任何图像尺度计算的特征。
    有了以上的适应性,RPN就可以像[29]一样,通过我们的FPN进行自然训练和测试。我们在实验中详细阐述了实现细节。

    4.2. Feature Pyramid Networks for Fast R-CNN

    Fast R-CNN[11]是一个基于区域的对象检测器,其中感兴趣区域(RoI)池用于提取特征。Fast R-CNN通常在单比例尺特征图上执行。要和我们的FPN一起使用它,我们需要将不同尺寸的RoI分配到金字塔级别
    我们看待我们的特征金字塔,就好像它是由一个图像金字塔产生的。因此,当探测器运行在图像金字塔上时,我们可以采用基于区域的探测器分配策略[15,11]。在形式上,我们将宽度为w,高度为h的RoI(在输入到网络的图像上)分配给我们的特征金字塔的Pk层,具体如下:

    这里224是规范ImageNet预训练模型的大小,k0是将w×h = 2242的RoI映射到的目标级别。类似于基于ResNet的Fast R-CNN系统[16]使用C4作为单尺度特征图,我们将k0设置为4。凭直觉,Eqn(1)表示如果RoI的尺寸变小(例如,224的1/2),则应该将其映射到一个更精细的级别(例如,k = 3 = 4+log2(1/2))。

    我们将预测头(在Fast R-CNN中,头是类特定的分类器和边界框回归器)附加到所有级别的RoI。再一次,不管它们的级别是什么,头都共享参数。[16]采用ResNet的conv5层(9层深子网)作为conv4特征的头部,但我们的方法已经利用conv5构建了特征金字塔。因此,与[16]不同的是,我们简单地采用RoI池来提取7×7大小的特征,并在最终的分类和边界盒回归层之前,附加两个隐藏的1024维的全连接(fc)层(每个层后面是ReLU)。这些层是随机初始化的,因为ResNets没有预先训练好的fc层。注意,与标准的conv5头相比,我们的2-fc MLP头权重更轻,速度更快。
    基于这些适应性,我们可以在特征金字塔的顶端训练和测试Fast R-CNN。实验部分给出了实现细节。

    5. Experiments on Object Detection

    我们在80类的COCO检测数据集[21]上进行了实验。我们使用80k大小的训练图像和35k大小的验证图像子集(trainval35k[2])的联合进行训练,并报告在5k大小的验证图像子集(minival)的ablation情况。我们还报告了标准测试集(test-std)[21]的最终结果,该测试集没有公开的标签。
    和通常的[12]一样,所有的网络主干都在ImageNet1k分类集[33]上进行预训练,然后在检测数据集上进行微调。我们使用预训练的ResNet-50和ResNet-101模型,这些模型是公开提供的2。我们的代码是一个使用了Caffe24的py-faster-rcnn3的重新实现

    2:https://github.com/kaiminghe/deep- residual- networks
    3:https://github.com/rbgirshick/py- faster- rcnn
    4:https://github.com/caffe2/caffe2

    5.1. Region Proposal with RPN

    根据[21]中的定义,我们评估了COCO-style的平均召回率(AR)和对小、中和大对象(ARs、ARm和ARl)的平均召回率(AR)。我们报告了每个图像有100个和1000个的proposals的结果(AR100和AR1k)。
    Implementation details.  表1中的所有架构都是端到端的训练:

    输入图像的大小调整,使其较短的一面有800像素。我们在8个gpu上采用同步的SGD训练。一个小型批处理涉及到每个GPU 2张图像和每个图像256个anchors。我们使用权重衰减为0.0001,动量为0.9。前30k小批量的学习率为0.02,后10k为0.002。对于所有的RPN实验(包括基线),我们都将训练图像之外的anchors包括在内,这与忽略这些锚盒的[29]不同。其他实现细节如[29]所示。在8个gpu上用FPN训练RPN大约需要8个小时。

    5.1.1 Ablation Experiments

    Comparisons with baselines. 为了与原始的RPNs[29]进行公平的比较,我们使用C4(与[16]相同)或C5的单尺寸地图运行两个基线(表1(a, b)),使用与我们相同的超参数,包括使用{322,642,1282,2562,5122}的5个尺寸的anchors。表1 (b)没有显示出(a)的优势,这表明单个更高级别的特征映射是不够的,因为在更粗的分辨率和更强的语义之间存在权衡。

    在RPN中加入FPN将AR1k提高到56.3(表1(c)),较单尺寸的RPN基线增加8.0个点(表1 (a))。此外,在小对象(ARs1k)上的性能提高了12.9个点。我们的金字塔表示大大提高了RPN对对象尺度变化的鲁棒性。

    How important is top-down enrichment?  表1(d)显示了没有自顶向下路径的特征金字塔的结果。在此基础上,将1×1的横向连接和3×3的卷积连接连接到自底向上的金字塔中。该体系结构模拟了重用金字塔特征层次结构的效果(图1(b))。
    表1(d)的结果与RPN基线基本一致,远远落后于我们的结果。我们推测,这是因为在自底向上金字塔的不同层次之间有很大的语义差异(图1(b)),特别是对于非常深的重网格。我们还评估了表1(d)的一个变量,但没有共享头的参数,但观察到类似的性能下降。这个问题不能简单地由特定级别的头来解决。

    How important are lateral connections?  表1(e)为无1×1横向连接的自顶向下特征金字塔ablation结果。这种自顶向下的金字塔具有很强的语义特征和良好的分辨率。但是我们认为这些特征的位置并不精确,因为这些地图已经被向下采样和向上采样了好几次更精确的特征位置可以通过自底向上映射的横向连接直接传递到自顶向下映射的更细层次。因此,FPN的AR1k得分比表1(e)高10个点。


    How important are pyramid representations? 我们可以将头部(即分类和回归器)连接到P2的高分辨率、强语义特征图(即,金字塔中最好的水平),而不是用于金字塔表征上。与单尺度基线类似,我们将所有的anchors都分配到P2的特征映射图中。这种变体(表1(f))比基线好,但不如我们的方法。RPN是一种具有固定窗口大小的滑动窗口检测器,对金字塔级的扫描可以增强其对尺度方差的鲁棒性
    此外,我们注意到,单独使用P2会产生更多的anchors(750k,表1(f)),这是由其较大的空间分辨率造成的。这一结果表明,大量的anchors本身不足以提高精度。

    5.2. Object Detection with Fast/Faster R-CNN

    接下来,我们研究基于区域(非滑动窗口)探测器的FPN。我们使用COCO-style的平均精度(AP)和PASCAL-style的AP(单个IoU阈值为0.5)来评估对象检测。我们还根据[21]中的定义报告关于小、中、大对象(即APs、APm和APl)的COCO AP。
    Implementation details.  输入图像的大小调整,使其较短的一面有800像素。同步的SGD用于在8个gpu上训练模型。每个小批处理涉及到每个GPU 2张图像和每个图像512个RoI。我们使用权重衰减为0.0001,动量为0.9。前60k小批的学习率为0.02,后20k为0.002。我们每个图像使用2000个RoI进行训练,1000个RoI进行测试。在COCO数据集上用FPN训练Fast R-CNN大约需要10个小时。

    5.2.1 Fast R-CNN (on fixed proposals)

    为了更好地研究FPN对基于区域的探测器的影响,我们对一组固定的proposals进行Fast R-CNN的ablation实验。我们选择将RPN在FPN上计算出的proposals冻结(表1(c)),因为它对需要被探测器识别的小对象具有良好的性能。为了简单起见,我们不会在Fast R-CNN和RPN之间共享特性,除非指定。

    作为一个基于ResNet的Fast R-CNN基线,在[16]之后,我们采用输出尺寸为14×14的RoI池,将所有conv5层作为头的隐藏层。这给出了表2(a)中的AP为31.9:

    表2(b)是一个利用两个隐藏的fc层的MLP头的基线,类似于我们的架构中的头。它的AP值为28.8,这表明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)和(e)显示,去除自顶向下连接或去除横向连接会导致较差的结果,这与我们在上述RPN小节中观察到的情况类似。值得注意的是,去掉自顶向下的连接(表2(d))明显降低了精度,这表明Fast R-CNN在高分辨率映射图上使用低级别的特征。
    在表2(f)中,我们对P2的单个最细尺度特征映射图采用Fast R-CNN。其结果(33.4 AP)略差于使用所有金字塔级别(33.9 AP,表2(c))。我们认为,这是因为RoI集中是一种类似于warping的操作,对区域的尺寸不那么敏感。尽管这种变体具有良好的准确性,但它是基于{Pk}的RPN建议的,因此已经从金字塔表示中受益。

    5.2.2 Faster R-CNN (on consistent proposals)

    在上面我们使用了一组固定的proposals来研究检测器。但是在一个Faster R-CNN系统[29]中,RPN和Fast R-CNN必须使用相同的网络backbone,以使功能共享成为可能。表3显示了我们的方法与两个基线的比较,都使用了RPN和Fast R-CNN的一致主干架构:

    表3(a)显示了我们复制的Faster R-CNN系统基线,如[16]所述。在受控设置下,我们的FPN(表3(c))比这个强基线高2.3个点的AP和3.8个点的AP@0.5。
    注意表3(a)和(b)是比He等人在表3(*)中提供的基线更强的基线。我们发现以下实现操作导致了这个差距:

    (i)我们使用800像素的图像比例尺,而不是[11,16]中的600像素;

    (ii)我们对每幅图像使用512个RoI进行训练,加速了收敛速度,而在[11,16]中为64个RoI;

    (iii)我们使用了5个尺度anchors,而不是[16]中的4个(增加了322个);

    (iv)在测试时,我们使用每幅图像1000个proposals,而不是[16]中的300个。

    因此,与表3(*)中He等人的ResNet-50 Faster R-CNN基线相比,我们的方法提高了AP 7.6点,AP@0.5提高了9.6个点。

    Sharing features. 在上面,为了简单起见,我们不共享RPN和Fast R-CNN之间的特性。在表5中,我们评估了遵循[29]中描述的4步训练的共享特性。与[29]类似,我们发现共享特性可以略微提高准确性。特性共享还减少了测试时间。


    Running time.  通过特征共享,我们基于FPN的Faster R-CNN系统在单一NVIDIA M40 GPU上对ResNet-50的每张图像的推理时间为0.148秒,对ResNet-101的推理时间为0.172秒。作为比较,表3(a)中的单尺寸ResNet-50基线运行0.32秒。我们的方法在FPN的额外层中引入了小的额外成本,但是有一个更轻的权重头。总的来说,我们的系统比基于resnet的 Faster R-CNN counterpart更快。我们相信我们的方法的效率和简单性将有益于未来的研究和应用。

    5.2.3 Comparing with COCO Competition Winners

    我们发现,表5中的ResNet-101模型没有使用默认的学习率计划进行充够的训练。因此,我们在训练Fast R-CNN步骤时,在每一个学习率都将小批量数量增加2倍。这将使minival上的AP增加到35.6,不需要共享功能。这个模型是我们提交给COCO检测排行榜的模型,如表4所示。

    由于时间有限,我们还没有评估它的功能共享版本,这应该比表5所暗示的要好一些。
    表4比较了我们的方法与COCO竞赛获胜者的单模型结果,包括2016年的冠军G-RMI和2015年的冠军Faster R-CNN+++。在没有添加额外功能的情况下,我们的单机产品已经超越了这些强大的、设计精良的竞争对手。
    在test-dev集上,我们的方法比现有的最佳结果增加了0.5个AP点(36.2 vs. 35.7)和3.4个AP点(59.1 vs. 55.7)。值得注意的是,我们的方法不依赖于图像金字塔,只使用单一的输入图像尺度,但在小尺度对象上仍然有出色的AP。以前的方法只能通过高分辨率图像输入来实现。

    此外,我们的方法没有利用许多流行的改进,如迭代回归[9]、困难负样本挖掘[35]、上下文建模[16]、更强的数据扩充[22]等。这些改进是FPNs的补充,应该会进一步提高精度。
    最近,FPN在所有的COCO竞赛中都得到了新的顶级结果,包括检测、实例分割和关键点估计。详见[14]。

    6. Extensions: Segmentation Proposals

    我们的方法是一种通用的金字塔表示,可以用于对象检测以外的应用。在本节中,我们使用FPNs来生成分割proposals,遵循DeepMask/SharpMask框架[27,28]。
    DeepMask/SharpMask在图像裁剪上进行训练,用于预测实例片段和对象/非对象分数。在推理时,这些模型会进行卷积以生成图像中的密集proposals。为了在多个尺寸上生成片段,图像金字塔是必要的[27,28]。
    很容易调整FPN来生成mask proposals。我们使用完全卷积的设置来进行训练和推理。我们像第5.1节那样构造我们的特征金字塔,并设置d = 128。在特征金字塔的每一层上,我们应用一个小的5×5 MLP以完全卷积的方式预测14×14大小的Masks和对象得分,见图4:

    此外,在[27,28]的图像金字塔中,每个octave使用两个尺寸,我们使用第二个输入大小为7×7的MLP来处理半个octave。这两个MLP在RPN中扮演类似于anchors的角色。对架构进行端到端的训练;完整的实现细节在附录中给出。

    6.1. Segmentation Proposal Results

    结果如表6所示:

    我们报告片段的AR和片段的小、中和大对象的AR,总是为1000个proposals。我们使用带着单一的5×5 MLP的FPN基线模型获得了43.4的AR。切换到稍微大一点的7×7 MLP后,精确度基本保持不变。同时使用两种MLPs可以将精度提高到45.7 AR。将mask输出尺寸从14×14增加到28×28可以增加AR值(更大的尺寸会降低精度)。最后,将训练迭代增加一倍,将AR增加到48.1。
    我们还报告了与DeepMask[27]、SharpMask[28]和InstanceFCN[4]的比较,后者是mask proposals生成的最新技术方法。我们的精确度比这些方法高出8.3个百分点。特别是,我们对小物体的精确度几乎是它们的两倍。
    现有的mask proposal方法[27,28,4]是基于密集采样的图像金字塔(例如,在[27,28]中按2{−2:0.5:1}进行缩放),这使得它们在计算上非常昂贵。我们的基于FPNs的方法更快(我们的模型运行在6到7 FPS的速度)。这些结果表明,我们的模型是一个通用的特征提取器,可以代替图像金字塔用于其他多尺度检测问题。

    7. Conclusion

    我们提出了一个简洁的框架,用于在卷积神经网络内部构建特征金字塔。我们的方法在几个强大的基线和竞争获胜者上显示了显著的改进。为特征金字塔的研究和应用提供了一种实用的解决方案,不需要计算图像金字塔。最后,我们的研究表明,尽管深卷积神经网络具有强大的表示能力和对尺度变化的隐式鲁棒性,但使用金字塔表示显式地解决多尺度问题仍然是至关重要的。

    附录

    A. Implementation of Segmentation Proposals

    我们使用我们的特征金字塔网络来有效地生成目标片段proposals,采用一种流行于目标检测的以图像为中心的训练策略[11,29]。我们的FPN mask生成模型继承了DeepMask/SharpMask的许多思想和动力[27,28]。然而,与这些以图像裁剪为训练对象并使用密集采样的图像金字塔进行推理的模型相比,我们对特征金字塔进行全卷积训练进行mask预测。虽然这需要更改许多细节,但我们的实现在精神上仍然类似于DeepMask。具体来说,要在每个滑动窗口定义mask实例的标签,我们将此窗口视为输入图像上的裁剪,从而允许我们从DeepMask继承正样本/负样本的定义。接下来我们给出更多的细节,图4也给出了可视化结果。

    我们用P2 - 6构造了特征金字塔与第5.1节中描述的架构相同。设d = 128。我们的特征金字塔的每一层都用于预测不同尺寸的mask。在DeepMask中,我们将mask的尺寸定义为它的最大宽度和高度。带有{32,64,128,256,512}像素大小尺寸的mask分别映射到{P2, P3, P4, P5, P6},由5×5 MLP处理。因为DeepMask使用的是一个具有半个octaves的金字塔,所以我们在我们的模型中使用了第二个稍微大一点的MLP,大小为7×7(7≈5√2)来处理半个octaves(例如,P4上的7×7 MLP预测了128√2大小的尺寸的mask)。在日志空间中,处于中间尺度的对象被映射到最近的尺度。

    由于MLP必须预测每个金字塔级别范围内的对象(特别是半个octaves范围),所以必须在标准对象大小周围提供一些填充。我们使用25%的填充。这意味着超过{P2, P3, P4, P5, P6}的mask输出映射到5×5 MLP的{40,80,160,320,640}大小的图像区域(对于7×7 MLP则映射到√2倍的更大的相应大小)。

    特征图中的每个空间位置都被用来在不同的位置上预判mask。具体来说,在尺寸Pk中,利用特征图中的每个空间位置来预测中心落在该位置2k像素以内的mask(对应于特征映射图中的±1单元偏移)。如果没有对象中心落在这个范围内,那么该位置将被认为是负样本,并且,与DeepMask中一样,仅用于训练分数分支,而不是mask分支。
    我们用来预测mask和分数的MLP相当简单。我们使用一个带有512个输出的5×5的内核,然后使用sibling的全连接层来预测一个14×14的mask(142个输出)和对象得分(1个输出)。该模型以全卷积的方式实现(使用1×1的卷积代替全连接层)。处理对象的7×7 MLP与处理对象的5×5 MLP相同,只是输入区域更大。
    在训练过程中,我们每一个小批量随机抽取2048个样本(每幅图像从16幅图像中抽取128个样本),正/负采样比为1:3。mask损失被给予10倍高于分数损失的权重。该模型使用同步SGD(每个GPU 2张图像)在8个GPU上进行端到端的训练。我们从0.03的学习率开始,训练80k个小批量,然后用60k个小批量的学习率除以10。在训练和测试期间,图像缩放被设置为800像素(我们不使用缩放抖动)。在推理过程中,我们的全卷积模型可以预测所有位置和尺寸上的得分,并在1000个得分最高的位置上进行mask。我们不执行任何非最大抑制或后处理。

  • 相关阅读:

    守护线程
    下载图片
    多线程
    self的作用
    设置项目地址环境
    对象 类
    ValueError: urls must start with a leading slash
    mock挡板接口开发
    K&R——第五章 指针与数组
  • 原文地址:https://www.cnblogs.com/wanghui-garcia/p/12235650.html
Copyright © 2011-2022 走看看