FPN(FAIR, CVPR, 2017)

  26 Mar 2017


论文: Lin T Y, Dollár P, Girshick R, et al. Feature Pyramid Networks for Object Detection[J]. 2016.

Github: https://github.com/unsky/FPN

论文算法概述

   对于多尺度物体识别,图像金字塔在手动设计特征的算法中会经常用到,如DPM需要一个较密集的图像金字塔来达到较好的识别效果,如图a。而最近大量手动设计的特征被卷积特征所取代,卷积网络具有表达更高层次语义的能力,对尺度变换鲁棒性更强,在单尺度输入上即可取得较好效果,如图b。而要取得更好的效果,卷积模型也还是需要图像金字塔的辅助,但在卷积模型上应用图像金字塔会有严重内存和时间消耗的问题。所以SSD中,提出了构建多尺度特征图,即相当于特征图金字塔来代替图像金字塔,一次前向计算即可获得全部特征图,相比图像金字塔没有太多的时间和空间的消耗,如图c。因为浅层的特征图对应的low-level feature会影响识别效果,所以SSD中为了利用high-level feature而舍弃使用具有高分辨率的低层特征图,但高层特征图都是低分辨率的,对检测小目标影响较大。

   所以作者提出了FPN,利用一种自上而下带有侧向连接的结构去构建在各个尺度上的高级语义特征图(high-level semantic feature maps),如figure3。输入单尺度任意大小图像,输出多个level的特征图,为全卷积结构。该结构涉及到a bottom-up pathway, a top-down pathway, and lateral connections。在Mask RCNN中有使用到。

Bottom-up pathway

bottom-up pathway是卷积网络的前向传播部分,作者定义在其过程中输出相同大小的特征图的不同网络层都属于同一个stage,选取每个stage中最后一个网络层输出的特征图来构建特征图金字塔,而选取每个stage的最后一层是因为越靠后的网络的特征表达能力就越强。在残差网络中,选取了{C2,C3,C4,C5}stage,C1消耗内存较多而不采用。

Top-down pathway and lateral connections

Top-down pathway通过上采样幻构出高分辨率的特征,则空间上变得更粗糙了,但本质上其特征是来自更高层的,具有更强的特征表达能力。然后这些特征与来自bottom-up pathway的特征通过 lateral connections连接起来,如上figure3所示。每个lateral connections将具有相同空间大小的分别来自bottom-up pathway和top-down pathway的特征图进行按像素相加,2x表示top-down的特征图进行2倍最近邻上采样后获得与bottom-up的特征图一样的大小,1x1用于将bottom-up的特征图降维。而其中bottom-up的特征是较低层次的,特征表达能力较弱,但包含更多的位置信息。

这特征图相加的过程由C5 stage开始往下,先在C5上用1x1的卷积核生成初始的第一个分辨率的特征图CR5(最上面的一个,没有来自更上面的C6的特征图与之叠加,所以自己通过1x1卷积来生成)。然后该CR5通过上采样与C4通过1x1得到的特征图叠加,得到第二个分辨率的特征图CR4,一直往下。而{CR2,CR3,CR4,CR5}会自己再接一个3x3的卷积来平滑上采样带来的影响。得到{P2,P3,P4,P5},与对应的{C2,C3,C4,C5}具有相同的空间大小。

Feature Pyramid Networks for RPN

RPN属于一种滑动窗口的类别不可知的目标检测器。RPN的设计中,以ZF网络为例子,在一个尺度的特征图(最后一层特征图,conv5的输出,大小为13x13x256)上采用密集的3x3滑动窗口滑动(即卷积,stride为滑动窗口的滑动步长为1),每个滑动位置输出256维特征(因为滑动窗口大小为3x3,3x3的区域内卷积得1x1维向量,共256个特征图,则得1x1x256维向量,与anchor个数无关),然后紧跟两个1x1滑动窗口形式的卷积分别进行前景背景二分类以及目标方框回归。设anchor数为9,则指向二分类的1x1卷积部分输出特征图个数为2x9=18(前景/背景),而本身输入为1x1x256,所以再1x1卷积后输出为1x1,有18个特征图,则得1x1x18维特征向量。方框回归部分也一样。Anchor各形态的参与在训练时由样本标签驱动,即这9种类型的anchor的方框标签就表示采用这9种anchor。

这里把上面的单尺度特征图(conv5)替换成了FPN,并在特征金字塔的每个level上拼接3x3和1x1的滑动窗口,每个level对应一个尺度的anchor,有{1:2,1:1,2:1}三种形状,则5个level的FPN就共有15个anchor。为anchor设定训练样本标签时,anchor与GT的IOU大于0.7的为正样本,小于0.3的为负样本,标签不额外明确赋予尺度信息,而与对应的anchor相关连(anchor共有5个尺度,对应好了也就有了尺度信息)。

Feature Pyramid Networks for Fast RCNN

Fast R-CNN一般应用在由ROIPool生成的单尺度特征图上,而这里把FPN应用上需要将ROI设定到多个尺度到金字塔中,则这特征金字塔可以看成是从图像金字塔中得到的。将w/h大小的ROI通过下式,设成特征金字塔中对应level P_k上:,这里的224是ImageNet中预训练输入的大小,而ROI的大小为224x224时应被映射到k0上。如基于ResNet的Faster R-CNN使用C4作为那个单尺度特征图,则设k0为4,若ROI更小了,如224/2,就会被映射到更合适的层k=3。然后所有层上的所有ROI各自上进行ROIPool,提出固定大小的特征图连到分类和回归的分支上(每个ROI都会连接到这两个分支)。

Experiment

evaluated on the COCO minival set:


Comparisons of single-model results on the COCO detection benchmark:

总结

特征金字塔网络,如SSD用的就是特征图金字塔来处理多尺度目标检测的问题,而FPN则进一步添加了一个自顶向下和侧向连接的结构来融合高低层次的特征。高层通过上采样来使维度与低层相同,并与低层通过1x1降维后的特征图以逐位相加合并得到新特征图。这样新特征图就同时具备了高层的特征表达能力和低层的分辨率。