FPN论文笔记

论文:Tsung-Yi Lin, Piotr Dollar, Ross Girshick,Kaiming He, Bharath Hariharan, and Serge Belongie. Facebook AI Research (FAIR),Cornell University and Cornell Tech. Feature Pyramid Networks for Object Detection


论文摘要

    特征金字塔(Feature pyramids)是多尺度目标检测系统的基本部件,但是最近几年提出的深度学习目标检测系统避免了金字塔表示,部分原因是需要大量计算和内存。在这篇论文中,我们利用深度卷积网络内在的多尺度金字塔结构,构造特征金字塔,只需要少量的额外计算。设计了具有横向连接的自定向下架构,用于在所有尺度上构建高层次语义特征图。我们把这个架构称之为Feature Pyramid Network(FPN),它作为一个特征抽取器在多个应用中展示了巨大的提升。将FPN应用在基础的Faster R-CNN系统中,我们的方法在COCO detection benchmark上获得了SOTA单模型结果。此外,我们可以模型可以在单个GPU上达到6 FPS的运行速度,因此这是一个可实际应用和精确的多尺度目标检测的解决方案。我们将开源我们的系统。


特征金字塔

    Figure 1.是特征金字塔的四种利用形式:

1.jpg

    在目标检测领域,图像中目标的大小不确定,需要引入多尺度来解决这个问题。最基础的解决方案是图像金字塔,即通过原始图片的上采样和下采样构建图片金字塔,然后对金字塔的每层抽取特征,完成相应的任务,如Figure 1.(a)所示。该方法在手动提取特征时代用的很多,比如DPM。到了深度学习时代,卷积神经网络能自动提取特征,从而对目标尺度更加鲁棒,因此通常使用特征金字塔的其中一层进行识别,如Figure 1.(b),最经典的例子是Fast R-CNNFaster R-CNN,使用RoIPool从RoI区域提取固定长度的向量。图像金字塔毫无疑问效果很好,因为图像的各个尺度都提取特征,但是其训练和测试所需要的计算资源过多,无法实际应用,因此通常只在测试的时候应用。

    然而并不只有图像金字塔才能构建多尺度特征表示,卷积神经网络计算得到的各个特征图组合在一起也是一个多尺度特征金字塔,如Figure 1.(c)。特征图的分辨率从大到小变化,但是不同特征图的语义层次不同。分辨率高的特征图的表示的低层次的特征,这不利于目标识别。SSD是最早尝试使用卷积神经网络的特征金字塔的模型,SSD直接网络的高层(比如VGG的conv4_3)开始构建金字塔,然后添加几个新的层。这样的话低层级中的高分辨率的特征图不被使用,然后这些层对检测小目标很重要(这就是SSD小目标检测性能不行的原因)。

    本文的目标是利用卷积神经网络的特征图金字塔,创建一个在所有尺度拥有高层次语义的特征金字塔。本文将,高分辨率但是语义特征层次低的特征图,和,低分辨率的但是语义特征层次高的特征图,通过一个自顶向下(top-down)和横向连接(lateral connections)的方式,联合在一起。如Figure 1.(d)所示。把该网络称之为特征金字塔网络(Feature Pyramid Network,FPN)。特征金字塔上的各层都拥有丰富的语义,并且只有单个输入图片构建,这意味着不会像图像金字塔那样消耗资源。

    最近的一些工作也采用的自顶向下和横向连接的架构,他们的目标是产生一个具有高分辨率和高层语义信息的特征图,然后用于预测,如Figure 2.(Top)。与之相反,本文设计的金字塔对每层都进行预测,如Figure 2.(Buttom)

2.jpg

    基于FPN和基础Faster R-CNN的模型在COCO detection benchmark上获得了单模型的SOTA结果。



FPN的构成

    FPN以单尺度图片作为输入,以全卷积的方式在金字塔的多个层级上输出特征图。这个方法基于backbone卷积架构,比如ResNetAlexNetVGG16,本论文的使用ResNet。FPN由三部分组成:自底向上通路自顶向下通路横向连接

自底向上通路(Buttom-up pathway)

    自底向上通路是backbone卷积神经网络的前向计算结果,相邻层级之间的尺度系数为2。在backbone卷积神经网络中,相邻的相同分辨率的特征图组成一个stage。FPN以每个stage为一个特征层级,每个stage的最后输出的特征图创建特征金字塔,这是因为越深的层有越高级的语义信息。

    具体的说,对于ResNet使用每个阶段的最后一个残差块的输出特征图。定义conv2,conv3,conv4,conv5输出特征图为{C2,C3,C4,C5},每个特征图相对于输入图片的stride为{4,8,16,32}。这里不包含conv1,因为它占用的内存过大。

自顶向下通路(Top-down pathway)和横向连接(lateral connections)

    特征金字塔层级越高,分辨率越低,但是语义信息更加高级。自顶向下通路通过对金字塔高层进行上采样,得到分辨率高同时语义信息更抽象的信息。这些特征通过与自底向上路径进行横向连接得到增强。每个横向连接融合自顶向下和自底向上的特征图。自底向上特征图包含的语义信息是低层次的,但是它的激活值更有利于精确定位,因为它被下采样很少的次数。

    Figure 3.展示了自顶向下特征图的一个构建块。

3.jpg

    因为来自自顶向下通路的特征图的分辨率是来自自底向上通路特征图的一半,因此需要两倍上采样(采用最近邻插值)。而且该特征图与对应的自底向上通路的特征图的通道数量不同,因此需要将来自自底向上的特征图进行1x1卷积以匹配通道数量。然后将上采样后的自顶向下特征图与1x1卷积后的自底向上特征图逐像素相加。该这种相加过程从上到下迭代进行直到产生最精细的特征图。迭代的起始点是将C5卷积层经过1x1卷积得到最粗糙分辨率的特征图。最后,对每个融合后的特征图进行3x3卷积得到最终的特征图,这样可以减少上采样的混叠效果(aliasing effect)。最终得到特征金字塔{P2,P3,P4,P5}。如下图所示:

4.jpg

    特征金字塔各个层共享后面的分类器和回归器,因此需要统一各层特征图的通道数,记作d。这里设置d=256。最终特征金字塔的各特征图的输出不加入非线性激活,因为作者认为这些层的影响很小。简单性的FPN设计的主旨,这个模型对很多设计选择都是鲁棒的。

    FPN是在深度卷积神经网络中构建特征金字塔的一个通用的解决方案。



FPN + Faster R-CNN

RPN

    RPN是Faster R-CNN论文提出的候选框生成的网络:

5.jpg

    其基于Caffe实现的网络结构:

6.jpg

    在单个特征图的上应用3x3卷积,对每个位置抽取特征,然后对每个位置进行回归和分类。每个位置预定义3个尺度、3个长宽比的anchor。回归器使用1x1卷积回归每个位置定义9个Anchor。同时分类器使用1x1卷积+Softmax对每个Anchor判定是否是候选框。


FPN+RPN

    这里把RPN中滑动窗口用到的3x3卷积和两个1x1卷积分枝称为network head。把 应用RPN的单尺度特征图 替换为 拥有5层特征图的FPN ,同时将network head应用到特征金字塔的所有层。由于network head在多尺度特征图上是密集滑动的,因此不需要对每个位置定义多尺度Anchor。而是金字塔的每层只使用一种尺度的Anchor。

    具体来说,在{P2,P3,P4,P5,P6}层上定义的Anchor的面积为{32^2,64^2,128^2,256^2,512^2}像素。每个位置定义3种长宽比{1:2,1:1,2:1}的Anchor。因此总共定义5x1x3=15个Anchor。这里的P6层是专门为RPN网络设计的,由P5下采样得到,用来处理512^2大小候选框的。

    跟原始的RPN差不多,当某个Anchor与GT box的IOU最高或高于0.7时判定为Positive lable,当与所有的GT box的IOU低于0.3时判定为Negative label。


Fast R-CNN

    Fast R-CNN的架构如下:

7.jpg

    原始图片经过卷积神经网络得到特征图,经过RoiPooling得到各个候选框的特征向量,然后特征向量送入分类器和回归器得到最终结果。


Faster R-CNN

    RPN和Fast R-CNN结合得到的Faster R-CNN的整体网络如下图:

8.jpg

FPN + Faster R-CNN

    在金字塔的不同层分配不同尺度的RoI池化。将特征金字塔看作由图像金字塔得来的,因此可以参照其分配策略。以224x224的输入大小为例,宽高为w,h的ROI被分配到金字塔的第k层,k的计算如下:

9.jpg

    K0对应wxh=224^2的ROI应该被分配到的层级。在基于ResNet的Faster R-CNN中,设置k0为4。

    接着将预测器头部(也就是分类器和回归器)应用到所有层的RoI池化层输出,在各层共享参数。在Faster R-CNN中,ResNet的Conv4用来提取RoI特征,经过Ros Pooling后映射为14x14大小。经过RoI Pooling后的特征再进入conv5层,进而得到最终的分类和边框回归结果。但是在FPN中,conv5已经被用作特征提取器得到P5层,因此这里单独设计两个1024维的全连接层作为检测网络的头部。该网络头部随机初始化,比原来的conv5更加轻量级。



实验

10.jpg

11.jpg

12.jpg

13.jpg

14.jpg

15.jpg


总结

    本文提出了一种简单、有效的建立特征金字塔的方法。它的使用RPN方法和Fast/Faster R-CNN都有极大的性能提升。另外,它的训练和测试时间和普通的Faster R-CNN差不多,因此可以作为图像金字塔的一种良好的替代。



上一篇:

首页 所有文章 机器人 计算机视觉 自然语言处理 机器学习 编程随笔 关于