【CV中的特征金字塔】Feature Pyramid Network

如题所述

第1个回答  2022-06-13

在深度学习兴起以前,很多传统方法都会使用到 图像金字塔 。图像金字塔如上图所示,就是将图片resize到不同的大小,然后分别得到对应大小的特征,然后进行预测。这种方法虽然可以一定程度上解决多尺度的问题,但是很明显,带来的计算量也非常大。

上图是使用单个feature map进行检测,这种结构在17年的时候是很多人在使用的结构,比如YOLOv1、YOLOv2、Faster R-CNN中使用的就是这种架构。直接使用这种架构导致预测层的特征尺度比较单一,对小目标检测效果比较差。ps: YOLOv2中使用了multi-scale training的方式一定程度上缓解了尺度单一的问题,能够让模型适应更多输入尺度。

上图进行了在不同大小的feature map上分别进行预测,具有了多尺度预测的能力,但是特征与特征之间没有融合,遵从这种架构的经典的目标检测架构就是SSD, SSD用了非常多的尺度来进行检测。

然后就是非常经典的FPN架构,FPN可以非常方便地应用到两阶段网络如Faster R-CNN等或者一阶段网络YOLO、SSD等。FPN通过构造一种独特的特征金字塔来避免图像金字塔中计算量过高的问题,同时能够较好地处理目标检测中的多尺度变化问题,效果能够达到当时的STOA。SSD的一个改进版DSSD就是使用了FPN,取得了比SSD更好的效果。

这里展开描述一下FPN的细节:

为了方便说明,做出以下规定:

假设当前层为第三层 , 要与 的特征进行融合,那么 先通过 卷积约束通道数和 层达到一致;来自 通过2倍上采样得到的feature map大小和 一致,最终 是通过 上采样结果和 进行element wise add得到结果。

那么 为什么FPN采用融合以后效果要比使用pyramidal feature hierarchy这种方式要好 呢?有以下几个原因:

黑色的框是理论感受野,中心呈高斯分布的亮点是实际感受野,FPN中的top-down之路通过融合不同感受野, 两个高斯分布的实际感受野进行融合,能够让高层加强低层所对应的感受野 。(ps:这一部分是笔者的理解,若有不同见解,欢迎讨论交流)

关于感受野这个观点,FPN论文有一张图,跟之前发表的那篇文章很像,如下图所示:

这张图讲的是FPN应用在DeepMask中做实例分割,其中使用了一个5×5的多层感知机来生成一个14×14的分割结果。对应的浅橙色的区域代表的是对应到原图的区域(与理论感受野相似),深橙色区域对应的是典型的目标区域(与实际感受野类似),观察这个图我们可以得到几个结论:

以上这点很多讲解FPN网络的作者们都忽略了,如果对这个部分感兴趣,可以到FPN中的附录中找到详细解读。

消融实验

以上是FPN各部分的专有名称,作者详细对比了top-down pathway带来的增益,lateral connection带来的增益,

上表中的实验中能得到几个结论:

文章中还有几个实验将FPN添加到RPN网络、DeepMask结构中,都带来不错的效果,FPN确实是一个比较好的feature fusion方法,在此之后,有很多架构的网络也不断地被提出来,都带来了一定的提升。

总结

本来这篇文章想要将FPN架构的系列写完,但是这样篇幅太大了,所以将这个列成一个小的系列,专门关心FPN的设计。

之前和一个群友在讨论的时候聊到了 FPN的设计 ,当时灵感迸发,产生以下想法:

其实看论文比较多的读者可能已经想到了,ASFF, BiFPN,BiSeNet,ThunderNet等,这都是比较好解决这个问题的方法。之后会继续解读这几个网络中关于FPN的设计,也欢迎大家交流自己的想法。

特征融合方式总结

https://medium.com/@jonathanhui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c

https://www.zhihu.com/question/306213462

https://arxiv.org/abs/1612.03144

相似回答
大家正在搜