FPN(Feature Pyramid Networks) 网络

FPN 网络

1. 前言

通常在神经网络中,浅层特征图(feature maps)的感受野比较小,包含语义信息比较少,但是其空间位置信息准确,而深层网络,感受野大,语义信息强,但是由于 pooling 等造成了像素位置信息丢失等,所以空间位置信息比较粗糙。但是对于检测任务,往往既需要语义信息(分类),也需要位置信息(bbox),此外由于深层特征图往往被压缩到比较小的size,也会影响小目标的检测,因此低层和高层特征的融合是有必要的,而 FPN 就是一种特征融合的方式。

FPN(Feature Pyramid Networks) 是 Tsung-Yi Lin 等人于 2016 年在 Feature Pyramid Networks for Object Detection 提出的。FPN 的概念并不是凭空产生的,其实和图像金字塔的思想类似,只不过是特征层面的,所以叫 Feature Pyramid。

2. FPN

下面这幅图是作者在原文中给出来的示意图。

  • a 对某一输入图片我们通过压缩或放大从而形成一系列不同维度的图片,把这些图片分别输入模型,得到一系列的特征图(feature maap)的集合,这个集合就是可反映多维度信息的特征集。这种方法原本一张图变成了多张,因此对计算机的算力及内存大小都有较高要求。

  • b 就是常见的,比如 RCNN 系列中的做法,没有多尺度的概念。优点是计算简单,对计算机算力及内存大小都无过高需求。但是这些模型对小维度的目标检测性能不是很好。

  • c 和 b 一样是一张图片输入,不同的是并不是简单的只取最后的到的 feature map,而是同时输出了多个层的 feature map,也就是说输出的是一个特征组合。通常得到这个组合的方法有 concat, element wise add/multiply, 这里一般用的是 concat。也就是说此方法不只选用了最后一层的 high level feature maps,同样也会选用稍靠下的反映图片 low level 信息的 feature maps。比如 SSD 中就有类似的操作。

  • d 就是作者提出的 FPN,也是拿单一维度的图片作为输入,然后它会选取所有层的特征来处理然后再联合起来做为最终的特征输出组合。(作者在论文中拿Resnet为实例时并没选用Conv1层,那是为了算力及内存上的考虑,毕竟Conv1层的size还是比较大的,所包含的特征跟直接的图片像素信息也过于接近)。不同的是还对这些反映不同级别图片信息的各层自上向下进行了再处理,以能更好地组合从而形成较好的特征表达(详细过程会在下面章节中进一步介绍)。而此方法正是我们本文中要讲的FPN CNN特征提取方法。

FPN(Feature Pyramid Networks) 网络_第1张图片

值得一提的是,FPN 所采用的方式(下图中的下方的视图)并不是只用了融合了所有特征图的输出,而是自上而下融合后的每一步输出所共同构建的 feature pyramid。

FPN(Feature Pyramid Networks) 网络_第2张图片

3. FPN 细节

下面这张图解释了如何进行特征图融合。横向进行 1×1 的卷积操作,也就是为了改变 feature map 的 channel,使得 channel 相同,从上向下进行上采样(双线性插值),然后进行 element-wise 加法进行融合。

FPN(Feature Pyramid Networks) 网络_第3张图片

FPN 提供了一种端到端的构建 feature pyramid 的方法,它是可以被用到其他网络中的,比如 ResNet。
FPN(Feature Pyramid Networks) 网络_第4张图片

4. 思考

  • Q1:不同深度的 feature map 为什么可以经过 upsample 后直接相加?
    作者解释说这个原因在于我们做了end-to-end的training,因为不同层的参数不是固定的,不同层同时给监督做end-to-end training,所以相加训练出来的东西能够更有效地融合浅层和深层的信息。

  • Q2:为什么 FPN 对小目标检测效果有提升?因为深层次的 feature map 提供了更多的语义信息,而浅层次提供了高分辨率的小目标,融合后可以更好的检测小目标。

  • Q3:如果不考虑时间情况下,image pyramid是否可能会比feature pyramid的性能更高?作者觉得经过精细调整训练是可能的,但是image pyramid(金字塔)主要的问题在于时间和空间占用太大,而feature pyramid可以在几乎不增加额外计算量情况下解决多尺度检测问题。

参考

  • 『计算机视觉』FPN:feature pyramid networks for object detection
  • FPN详解
  • FPN: 一种高效的CNN特征提取方法

你可能感兴趣的:(目标检测,Deep,Learning)