FPN论文解读

题目:《Feature Pyramid Networks for Object Detection》

介绍

        

图1(a)表示使用图像金字塔来构造特征金字塔,每一张图像都会独立地计算出它的特征。(b)表示利用单一尺度的特征图做目标检测,典型的是SPP-Net、Fast R-CNN和Faster R-CNN等,这些网络将原图通过卷积神经网络生不同层次的特征图,但是检测系统基于最后一层特征图。(c)是利用了原图经过卷积神经网络在不同层次生成的特征图进行预测,而不仅限于最后一层。(d)是作者在论文中提出的特征金字塔网络即FPN(Feature Pyramid Network)。   

深度卷积神经网络天然地就能计算出金字塔特征结构,作者正是要利用这一点来构造一个在所有层级上都能有强语义的特征金字塔结构。 具体说来是要通过自顶向下(top-down)的通路以及横向连接将低分辨率、强语义特征和高分辨率、弱语义特征进行有机的结合,与其它相似结构不同之处在于FPN会在所有层级的特征图上进行预测,而不是某一个单一的层次。下图描述了这两类网络的不同。

FPN

    FPN结构包含三大要素:从底向上的通路(bottom-up pathway)、从顶向下的通路(top-down pathway)和横向连接(lateral connection)。下图中放大的区域就是横向连接,这里1*1的卷积核的主要作用是减少卷积核的个数,也就是减少了feature map的个数,并不改变feature map的尺寸大小。

     从底向上的路径,也就是前向传播的计算路径。把产生相同大小特征图的几个层称之为一个网络阶段(stage),每个阶段的最后一层特征图作为参考。举一个resnet-50的例子,resnet-50的conv2、conv3、conv4、conv5内含多个"bottleblock"结构,那么把conv2至conv5中最后一个block输出特征图称作{C2,C3,C4,C5},并且它们相对输入图象的步长依次为{4,8,16,32}像素。

    特征金字塔高层特征图分辨率相比较低,但语义性更强,对高层特征图进行从顶向下的上采样,并和从底向上的特征图进行合并(lateral connection),从底向上的特征图要能够合并的话需要经过1x1的卷积层以减少通道数,因为这里的合并是元素的相加,所以要保证要合并的特征图尺寸是一致的,无论是大小还是通道数。合并后的特征图还要再经过一个3x3的卷积操作来生成最终的特征图,这么做是为了减少混叠效应(什么东东?)。所以最终的特征图集合称为{P2,P3,P4,P5},对应到{C2,C3,C4,C5},它们对应的尺寸是相同的。

应用

    这里着重讲FPN在两个方面的应用:一个是用于RPN进行候选区域的提取,另一个是用于Fast R-CNN用于目标检测。

    传统的RPN是使用一个窗口大小为3x3的滑动窗口网络作用于最后一层特征图,做目标和非目标的二分类,以及候选框的回归。现在使用FPN也就是特征金字塔替代单一的特征图。要注意的是,在Anchor的设定上与传统的RPN有所不同,在特征金字塔的每一个层级只设定一种大小的Anchor,具体来说{P2,P3,P4,P5,P6}上Anchor的面积分别为{32^2,64^2,128^2,256^2,512^2}像素。但是Anchor的比例仍然是{1:2,1:1,2:1}。这样一算的话特征金字塔总共就有15种Anchor。

    Fast R-CNN是一个典型的两阶段的目标检测器,它基于候选区域进行目标检测,FPN又是如何应用到Fast R-CNN上面呢?要在Fast R-CNN中使用FPN需要将不同大小的RoI分配到特征金字塔的各个层级上,而不是像传统的映射到单一尺度的特征图(往往就是最后一层的特征图)上。现在就一个问题,某个尺寸的RoI具体分配给哪一个层级呢?这是由下面这个公式进行量化的。

w,h分别是指的RoI的宽和高,224是ImageNet预训练中约定的图像的大小,K0的意思就是说当RoI大小为w x h = 224 x 224时,理应被映射到的层级。拿骨干网为ResNet的Faster R-CNN系统来说,它就是使用的C4作为单一尺度的特征图,因此k0就设置为4。说到底就是,如果RoI的大小变得更小(例如 224的1/2),那么它就应该映射到分辨率更高的层级上(也就k=3),这个看上去挺合理的,小目标映射到高分辨的层级。

实验

猜你喜欢

转载自blog.csdn.net/ChuiGeDaQiQiu/article/details/82154874
FPN
今日推荐