特征金字塔网络FPN

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特征金字塔网络FPN相关的知识,希望对你有一定的参考价值。

参考技术A 姓名:郄心怡    学号:19020100205    学院:电子工程学院

【原文链接】 https://zhuanlan.zhihu.com/p/39185919

【嵌牛导读】本文对特征金字塔网络FPN做了一个简单介绍

【嵌牛鼻子】特征金字塔网络FPN

【嵌牛提问】什么是特征金字塔网络FPN?

【嵌牛正文】

这里介绍的文章是来自Facebook的特征金字塔网络Feature Pyramid Networks(FPN)。FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量情况下,大幅度提升了小物体检测的性能。我们将从论文背景,论文思想,结果与结论几方面探讨此论文。

在物体检测里面,有限计算量情况下,网络的深度(对应到感受野)与stride通常是一对矛盾的东西,常用的网络结构对应的stride一般会比较大(如32),而图像中的小物体甚至会小于stride的大小,造成的结果就是小物体的检测性能急剧下降。传统解决这个问题的思路包括:

(1)多尺度训练和测试,又称图像金字塔,如图1(a)所示。目前几乎所有在ImageNet和COCO检测任务上取得好成绩的方法都使用了图像金字塔方法。然而这样的方法由于很高的时间及计算量消耗,难以在实际中应用。

(2)特征分层,即每层分别预测对应的scale分辨率的检测结果。如图1(c)所示。SSD检测框架采用了类似的思想。这样的方法问题在于直接强行让不同层学习同样的语义信息。而对于卷积神经网络而言,不同深度对应着不同层次的语义特征,浅层网络分辨率高,学的更多是细节特征,深层网络分辨率低,学的更多是语义特征。

因而,目前多尺度的物体检测主要面临的挑战为:

1. 如何学习具有强语义信息的多尺度特征表示?

2. 如何设计通用的特征表示来解决物体检测中的多个子问题?如object proposal, box localization, instance segmentation.

3. 如何高效计算多尺度的特征表示?

本文针对这些问题,提出了特征金字塔网络FPN,如图1(d)所示,网络直接在原来的单网络上做修改,每个分辨率的feature map引入后一分辨率缩放两倍的feature map做element-wise相加的操作。通过这样的连接,每一层预测所用的feature map都融合了不同分辨率、不同语义强度的特征,融合的不同分辨率的feature map分别做对应分辨率大小的物体检测。这样保证了每一层都有合适的分辨率以及强语义特征。同时,由于此方法只是在原网络基础上加上了额外的跨层连接,在实际应用中几乎不增加额外的时间和计算量。作者接下来实验了将FPN应用在Faster RCNN上的性能,在COCO上达到了state-of-the-art的单模型精度。

具体而言,FPN分别在RPN和Fast RCNN两步中起到作用。其中RPN和Fast RCNN分别关注的是召回率和正检率,在这里对比的指标分别为Average Recall(AR)和Average Precision(AP)。分别对比了不同尺度物体检测情况,小中大物体分别用s,m,l表示。

在RPN中,区别于原论文直接在最后的feature map上设置不同尺度和比例的anchor,本文的尺度信息对应于相应的feature map(分别设置面积为32^2, 64^2, 128^2, 256^2, 512^2),比例用类似于原来的方式设置1:2, 1:1,, 2:1三种。

与RPN一样,FPN每层feature map加入3*3的卷积及两个相邻的1*1卷积分别做分类和回归的预测。在RPN中,实验对比了FPN不同层feature map卷积参数共享与否,发现共享仍然能达到很好性能,说明特征金字塔使得不同层学到了相同层次的语义特征。RPN网络的实验结果为:

这里FPN对比原来取自conv4和conv5的RPN网络(a)(b),召回率得到了大幅度提升,尤其在中物体和小物体上(c)。另外,作者做了变量对比实验,比如只保留横向连接(d),即特征分层网络,性能仅与原RPN差不多,原因就在于不同层之间的语义特征差距较大。另外,试验了砍掉横向连接,只保留自上而下放大feature map做预测结果(e),以及只用最终得到的feature map层(f),均比完整的FPN网络小物体检测AR低10个点左右。说明金字塔特征表示与横向连接都起了很大作用。

实验Fast RCNN时,需要固定FPN+RPN提取的proposal结果。在Fast RCNN里,FPN主要应用于选择提取哪一层的feature map来做ROI pooling。假设特征金字塔结果对应到图像金字塔结果。定义不同feature map集合为P2, P3, P4, P5,对于输入网络的原图上w*h的ROI,选择的feature map为Pk,其中(224为ImageNet输入图像大小):

类似于RPN的实验,对比了原有网络,以及不同改变FPN结构的Fast RCNN实验,实验结果为:

实验发现FPN筛选ROI区域,同样对于Fast RCNN的小物体检测精度有大幅提升。同时,FPN的每一步都必不可少。

最后,FPN对比整个Faster RCNN的实验结果如下:

对比其他单模型方法结果为:

最后是在FPN基础上,将RPN和Fast RCNN的特征共享,与原Faster CNN一样,精度得到了小幅提升。

FPN+Faster RCNN的方法在COCO数据集上最终达到了最高的单模型精度。

总结起来,本文提出了一种巧妙的特征金字塔连接方法,实验验证对于物体检测非常有效,极大提高了小物体检测性能,同时由于相比于原来的图像金字塔多尺度检测算法速度也得到了很大提升。

Q1:不同深度的feature map为什么可以经过upsample后直接相加?

答:作者解释说这个原因在于我们做了end-to-end的training,因为不同层的参数不是固定的,不同层同时给监督做end-to-end training,所以相加训练出来的东西能够更有效地融合浅层和深层的信息。

Q2:为什么FPN相比去掉深层特征upsample(bottom-up pyramid)对于小物体检测提升明显?(RPN步骤AR从30.5到44.9,Fast RCNN步骤AP从24.9到33.9)

答:作者在poster里给出了这个问题的答案

对于小物体,一方面我们需要高分辨率的feature map更多关注小区域信息,另一方面,如图中的挎包一样,需要更全局的信息更准确判断挎包的存在及位置。

Q3:如果不考虑时间情况下,image pyramid是否可能会比feature pyramid的性能更高?

答:作者觉得经过精细调整训练是可能的,但是image pyramid主要的问题在于时间和空间占用太大,而feature pyramid可以在几乎不增加额外计算量情况下解决多尺度检测问题。

以上是关于特征金字塔网络FPN的主要内容,如果未能解决你的问题,请参考以下文章

论文解读FPN 用于目标检测的特征金字塔网络

FPN 实现原理 为什么叫金字塔方式理解。和残差网络的前向传播过程类似

FPN

Feature Pyramid Networks for Object Detection(FPN)-论文阅读笔记

极智Paper | 单级特征检测网络 YOLOF

FPN在faster_rcnn中实现细节代码说明