FPN: Feature Pyramid Networks for Object Detection

https://github.com/kaiminghe/deep-residual-networks

https://github.com/rbgirshick/py-faster-rcnn

https://github.com/caffe2/caffe2

https://github.com/facebookresearch/deepmask

 

1 Introduction

高分辨率特征图有低级特征, 阻碍目标识别的表示能力.

SSD: 他的金字塔构造是重复在前向传递中不同层的多层特征图.但为了避免低级特征, SSD放弃了重新使用已经计算的层, 而是从网络中的高位开始构建金字塔, 然后添加一些新层.

本文欲创造一个特征金字塔有很强的的语义性在所有的层. 为了这个目标, 依赖合并低分辨率语义强和高分辨率语义弱的特征相结合, 通过自上而下的路径横向连接.

相比于图2top, 这些模型是生成一个高级特征图, 然后预测, 本文是每一层独立预测, 并且使用resnet呈现结果.

 

2 Related work

 

3 Feature pyramid network

输入任意大小, 在每一层输出适当大小的特征图, 以一个全卷积的方式. 这个过程和主干卷积独立, 并且使用ResNet呈现结果. 本文金字塔涉及一个bottom-up pathway, a top-down pathway, lateral connections

 

bottom-up pathway.

相同大小的层称之为同一网络stage. 每一个stage就是金字塔的一层. 每一个stage的最后一层作为特征图的参考集合. 具体来说,对于ResNets [16],我们使用每个阶段的最后一个残差块输出的特征激活。对于conv2,conv3,conv4和conv5输出,我们将这些最后残余块的输出表示为{C2,C3,C4,C5},并注意它们具有{4,8,16,32}的步幅 相对于输入图像的像素。由于内存占用大,我们不会将conv1包含在金字塔中。

 

top-down pathway and lateral connections.

连接块如图3所示, top-down map进行2倍上采样(使用nearest neighbor upsampling), 然后和bottom-up map对应像素相加(bottom-up先进行1X1conv, 为了维度匹配, C5也有使用, (后来固定通道之后这个也保留下来了应该??)). 合并之后的特征图使用3X3的conv生成最终的特征图, 为了混淆上采样的影响(这个最终的特征图应该也是向下迭代的特征图). 最终特征图{P2,P3...}和{C2,C3...}通道数一一对应.

 

本文固定所有通道数d=256, 发现精度影响可以忽略.

 

4 Application

贴一个ResNet的结构图:这里作者采用Conv2,CONV3,CONV4和CONV5的输出。因此类似Conv2就可以看做一个stage。

 

作者一方面将FPN放在RPN网络中用于生成proposal,原来的RPN网络是以主网络的某个卷积层输出的feature map作为输入,简单讲就是只用这一个尺度的feature map。但是现在要将FPN嵌在RPN网络中,生成不同尺度特征并融合作为RPN网络的输入。在每一个scale层,都定义了不同大小的anchor,对于P2,P3,P4,P5,P6这些层,定义anchor的大小为32^2,64^2,128^2,256^2,512^2,另外每个scale层都有3个长宽对比度:1:2,1:1,2:1。所以整个特征金字塔有15种anchor。

 

正负样本的界定和Faster RCNN差不多:如果某个anchor和一个给定的ground truth有最高的IOU或者和任意一个Ground truth的IOU都大于0.7,则是正样本。如果一个anchor和任意一个ground truth的IOU都小于0.3,则为负样本。

 

看看加入FPN的RPN网络的有效性,如下表Table1。网络这些结果都是基于ResNet-50。评价标准采用AR,AR表示Average Recall,AR右上角的100表示每张图像有100个anchor,AR的右下角s,m,l表示COCO数据集中object的大小分别是小,中,大。feature列的大括号{}表示每层独立预测。


从(a)(b)(c)的对比可以看出FRN的作用确实很明显。另外(a)和(b)的对比可以看出高层特征并非比低一层的特征有效。

(d)表示只有横向连接,而没有自顶向下的过程,也就是仅仅对自底向上(bottom-up)的每一层结果做一个1*1的横向连接和3*3的卷积得到最终的结果,有点像Fig1的(b)。从feature列可以看出预测还是分层独立的。作者推测(d)的结果并不好的原因在于在自底向上的不同层之间的semantic gaps比较大。

(e)表示有自顶向下的过程,但是没有横向连接,即向下过程没有融合原来的特征。这样效果也不好的原因在于目标的location特征在经过多次降采样和上采样过程后变得更加不准确。

(f)采用finest level层做预测(参考Fig2的上面那个结构),即经过多次特征上采样和融合到最后一步生成的特征用于预测,主要是证明金字塔分层独立预测的表达能力。显然finest level的效果不如FPN好,原因在于PRN网络是一个窗口大小固定的滑动窗口检测器,因此在金字塔的不同层滑动可以增加其对尺度变化的鲁棒性。另外(f)有更多的anchor,说明增加anchor的数量并不能有效提高准确率。

 

另一方面将FPN用于Fast R-CNN的检测部分。除了(a)以外,分类层和卷积层之前添加了2个1024维的全连接层。细节地方可以等代码出来后再研究。

实验结果如下表Table2,这里是测试Fast R-CNN的检测效果,所以proposal是固定的(采用Table1(c)的做法)。与Table1的比较类似,(a)(b)(c)的对比证明在基于区域的目标卷积问题中,特征金字塔比单尺度特征更有效。(c)(f)的差距很小,作者认为原因是ROI pooling对于region的尺度并不敏感。因此并不能一概认为(f)这种特征融合的方式不好,博主个人认为要针对具体问题来看待,像上面在RPN网络中,可能(f)这种方式不大好,但是在Fast RCNN中就没那么明显。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TWSF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值