Feature Pyramid Networks for Object Detection


    《Feature Pyramid Networks for Object Detection》发表在2017年CVPR上。

    本文提出一种Feature Pyramid Networks(FPN)网络结构,能够在不影响速度的前提下融合多层特征,使每个level的特征都具有丰富的语义信息,提高CNN网络特征提取能力。理论上,FPN在CNN方法中是一个通用的方法。


    1. 网络结构

    在卷积神经网络中,前几层的特征图分辨率高,但是含有的语义信息少。高层的特征图则恰恰相反。

    在目标检测任务中,由于目标大小的不一致,图像(特征)金字塔是一个很有效的手段。

    A. Featurized image pyramid

Feature Pyramid Networks for Object Detection_第1张图片

        通过调整输入图像的大小构建图像金字塔,从而构建特征金字塔。

        将原图按比例进行缩放,输入到CNN网络中,从而提取的特征大小也不同。

        该法虽然达到了检测不同大小目标的目的,但是需要多次地调整输入图像的大小,所以速度十分慢。

    B. Single feature map

Feature Pyramid Networks for Object Detection_第2张图片

        为了更快地进行检测,有一些方法只采用了单层的特征图进行检测。

        但该法显然对小目标的检测十分不利。

    C. Pyramidal feature hierarchy

Feature Pyramid Networks for Object Detection_第3张图片

        在B的基础上,除了只利用语义信息最丰富的最后一层特征图,也可以使用其他层的特征图分别进行检测。

        但不同深度引起了语义鸿沟问题,前几层的特征图分辨率高,但是语义信息少,对目标的表示不利。

    D. Feature Pyramid Network(FPN)

Feature Pyramid Networks for Object Detection_第4张图片

    为了取得较好地检测效果,这篇论文希望能够在利用到更多层特征图的同时,使每一层特征金字塔都能具有丰富的语义信息。

    所以提出FPN结构,使用自上而下的路径,横向连接低分辨率、语义信息丰富的高层特征和高分辨率、语义信息较少的低层特征

    

    2. Feature Pyramid Network(FPN)

    自下而上的路径

    在网络结构中,有一些卷积层输出的特征图大小是一样的。本文中将这些层称为一个stage。

    对于每一个stage,只定义其中最后一层卷积层作为特征金字塔的一层。

    原因很简单,stage中的最后一层含有的语义信息肯定是最多的。

    特征金字塔的每层间缩放步长为2。

    例如,对残差网络ResNets,忽略conv1,定义残差块conv2~conv5的最后一层为{C2,C3,C4,C5}。与输入图像相比,它们的步长分别为{4,8,16,32}。


    自上而下的路径以及横向连接

    从最高层开始,特征图经过2倍的上采样,与前一层空间大小相同的特征图进行横向连接,即特征图上对应位置元素相加。如此迭代直到产生最精细的特征图。

    简单起见,上采样使用最近邻上采样。

    金字塔不同层采用共享的分类器和回归器,通道数需保持一致。因此每次迭代前一层的特征图需要经过1*1卷积。文中规定通道数d=256,因为不存在非线性,所以影响很小。

    开始迭代时,在C5后添加一个1*1卷积层,产生最小分辨率的特征图。

    同时,为每一个融合的特征图添加一个3*3的卷积层,以减低上采样的混叠效应。

    最后,对应于原来的{C2,C3,C4,C5},产生的特征金字塔为{P2,P3,P4,P5}。其大小分别保持不变(保留位置信息)。

    Feature Pyramid Networks for Object Detection_第5张图片

   

    3.应用

    A. FPN for RPN

    RPN在特征图上产生9种anchor进行目标的检测。

    FPN产生的每层特征图后面,紧跟一个3*3的卷积层和两个1*1的卷积层(简称为一个head)。

    因为金字塔具有尺度信息了,所有在某个特定的金字塔层上不需要多种anchor。

    这里,作者为金字塔的每层设置了单一尺度的anchor。

    对P5进行步长为2的上采样,记为P6。在{P2,P3,P4,P5,P6}融合的特征图上,分别设置大小为{32^2,64^2,128^2,256^2,512^2}的anchor。同时为了满足形状需求,设置三种纵横比{1:2,1:1,2:1}。所以金字塔的每一层具有15种anchor。

    训练时,positive和negative的设定与RPN相同:和任意groundTruth的IoU大于0.7视为positive;和所有groundTruth的IoU小于0.3视为negative。

 

    B. FPN for Fast R-CNN

    Fast R-CNN中有将RoI映射到特征图上的过程。

    在FPN中,这个过程演变成需要确定将RoI映射到金字塔的不同层的融合特征图上。

    作者的想法是:如果RoI的大小比较小,就映射到相对靠前的特征图上,反之映射到相对靠后的特征图上。

    作者提到,先认为FPN的特征图是由图像金字塔生成的。然后使用图像金字塔的方法。

    假设RoI在输入图像上宽和高分别为w、h,

    映射到Pk层的参数k由以下公式决定:

 

    其中224是ImageNet预训练的标准输入图像大小。Faster R-CNN提取C4的特征图,因此设置k0=4。预防产生小数进行取整操作。

    将Fast R-CNN中的分类器和回归器简称为一个head。所有head参数共享。

    因为conv5作为了金字塔的一层,所以RoI pooling提取7*7的特征之后,添加两个1024-d的全连接层,再跟着head。

 

    









你可能感兴趣的:(小目标检索)