论文阅读:Feature Pyramid Networks for Object Detection(FPN)

论文信息: Tsung-Yi Lin,Kaiming He, PD, RG,CVPR2017
推荐code:https://github.com/unsky/FPN
整体框架:提出多尺度目标检测算法:FPN,之前大多数目标检测方法都是只采用顶层特征做预测,虽然底层特征语义信息比较少,但是空间位置信息更强,目标更明确,而高层特征语义信息比较丰富,但是目标信息更粗糙。作者利用CNN内在的多尺度特征信息,构建特征金字塔,实现多尺度目标检测。虽然此前也有些算法是采用多尺度特征融合的方式,但是一般都是采用融合后的特征做预测,而FPN不一样的地方是在于预测是在不同特征层独立进行。



(a) 图像金字塔,即将图像做成不同的scale,然后不同scale的图像生成对应的不同scale的特征。这种方法的缺点在于增加了时间成本。有些算法会在测试时候采用图像金字塔;
(b) 类似于Fast RCNN,Faster RCNN是采用这种方式,即仅采用网络最后一层的特征;
(c) 类似于SSD,采用这种多尺度特征融合的方式,没有上采样过程,即从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。作者认为SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而在作者看来足够低层的特征对于检测小物体是很有帮助的。
(d) 本文作者是采用这种方式,顶层特征通过上采样和低层特征做融合,而且每层都是独立预测的。

FPN结构

FPN分为两个部分:自底向上+自顶向下

自底向上:即CNN的前向过程,每次卷积后有两种变化:1)feature map大小变成原来的1/2成为金字塔结构的主要因素;2)feature map大小不变,会生成很多相同尺寸的feature map,同一相同尺寸的feature map组成网络的各个阶段,也即是金字塔的同一层级,而且每一层级的最后的feature map特征最强。

自顶向下:采用上采样(upsampling)进行,而横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合(merge)。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)。

作者采用ResNet为例

取conv2,conv3,conv4,conv5的输出,每一个作为阶段。取每一个阶段最后一层的激活输出作为金字塔的特征:{C2,C3,C4,C5}。

C5—>1*1—>P5—>上采样—>P5大

C4—>1*1—>P4(1)+ P5大—>P4—>上采样—>P4大

C3—>1*1—>P3(1)+ P4大—>P3—>上采样—>P3大

C2—>1*1—>P2(1)+ P3大—>P2

{P2,P3,P4,P5}自顶向下,说明一下,1*1 conv目的是改变channel,使得与顶层的feature map 大小一致。

主要思想还是:顶层特征强,底层特征弱,用顶层特征来加强底层特征。

FPN与RPN结合

基于resnet的faster rcnn结构

Fpn与RPN结合

最后是实验结果(coco detection)