论文:Feature Pyramid Networks for Object Detection
论文地址:https://arxiv.org/abs/1612.03144
这里介绍的文章是来自 Facebook 的特征金字塔网络 Feature Pyramid Networks(FPN)。FPN 主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量情况下,大幅度提升了小物体检测的性能。我们将从论文背景,论文思想,结果与结论几方面探讨此论文。
在物体检测里面,有限计算量情况下,网络的深度(对应到感受野)与 stride 通常是一对矛盾的东西,常用的网络结构对应的 stride 一般会比较大(如 32),而图像中的小物体甚至会小于 stride 的大小,造成的结果就是小物体的检测性能急剧下降。传统解决这个问题的思路包括:(1)多尺度训练和测试,又称图像金字塔,如图 1(a) 所示。目前几乎所有在 ImageNet 和 COCO 检测任务上取得好成绩的方法都使用了图像金字塔方法。然而这样的方法由于很高的时间及计算量消耗,难以在实际中应用。(2)特征分层,即每层分别预测对应的 scale 分辨率的检测结果。如图 1(c) 所示。SSD 检测框架采用了类似的思想。这样的方法问题在于直接强行让不同层学习同样的语义信息。而对于卷积神经网络而言,不同深度对应着不同层次的语义特征,浅层网络分辨率高,学的更多是细节特征,深层网络分辨率低,学的更多是语义特征。
因此,目前多尺度的物体检测主要面临的挑战为:
- 如何学习具有强语义信息的多尺度特征表示?
- 如何设计通用的特征表示来解决物体检测中的多个子问题?如 object proposal, box localization, instance segmentation.
- 如何高效计算多尺度的特征表示?
本文针对这些问题,提出了特征金字塔网络 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 数据集上最终达到了***的单模型精度。
总结起来,本文提出了一种巧妙的特征金字塔连接方法,实验验证对于物体检测非常有效,极大提高了小物体检测性能,同时由于相比于原来的图像金字塔多尺度检测算法速度也得到了很大提升。
CVPR 现场 QA:
1. 不同深度的 feature map 为什么可以经过 upsample 后直接相加?
A:作者解释说这个原因在于我们做了 end-to-end 的 training,因为不同层的参数不是固定的,不同层同时给监督做 end-to-end training,所以相加训练出来的东西能够更有效地融合浅层和深层的信息。
2. 为什么 FPN 相比去掉深层特征 upsample(bottom-up pyramid) 对于小物体检测提升明显?(RPN 步骤 AR 从 30.5 到 44.9,Fast RCNN 步骤 AP 从 24.9 到 33.9)
A:作者在 poster 里给出了这个问题的答案
对于小物体,一方面我们需要高分辨率的 feature map 更多关注小区域信息,另一方面,如图中的挎包一样,需要更全局的信息更准确判断挎包的存在及位置。
3. 如果不考虑时间情况下,image pyramid 是否可能会比 feature pyramid 的性能更高?
A:作者觉得经过精细调整训练是可能的,但是 image pyramid 主要的问题在于时间和空间占用太大,而 feature pyramid 可以在几乎不增加额外计算量情况下解决多尺度检测问题。
本文转自机器之心,作者为 Momenta 高级研发工程师李俊。