FPN算法一览

article/2025/9/22 7:55:55

FPN应该是2017年CV顶会的优秀论文,基于目标检测做的研究,在小物体检测方面较为具有吸引力。

1.FPN

 

源论文:feature pyramid networks for object detection

参考代码:FPN

同时利用低层特征高分辨率和高层特征的高语义信息,融合不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,这和常规的特征融合方式不同。(caffe源代码包含merge和share两种形势。)

2.PANet

2018年CVPR,实例分割,COCO2017实例分割比赛的冠军,目标检测比赛的第二名

PANet是用来分割的网络,但一样也适用目标检测,总览图:

创新a:Bottom-up Path Augmentation:建立了一条从低层到高层的干净的横向连接路径(简单来讲就是再加一层由底向上的FPN)

创新b:Adaptive Feature Pooling:主要是考虑将某个proposal分配给某个level这一操作,虽然是通过公式计算,但其实并不能与其他层切割,所以,对每个proposal的所有层每个池化特征都进行预测。(记得AugFPN也有这一操作。)

 

创新c:Fully-connected Fusion,这是一个mask分支,在mask rcnn上的改进,不做分割,这一部分不是很了解。

 源论文:Path Aggregation Network for Instance Segmentation

3. NAS-FPN

目标:更好的学习可扩展特征金字塔结构,用于目标检测

在一个覆盖所有交叉尺度连接的可扩展搜索空间中采用神经网络结构搜索,发现了一种新的特征金字塔结构。架构名为NAS-FPN,由自顶向下和自下而上的连接组合而成,可以跨范围地融合特性

说到这里,不得不说到,NAS,神经网络架构搜索,强化学习训练一个控制器在给定的搜索空间选择最好的模型结构,优化FPN结构。

方法是基于RetinaNet ,两个组成部件是backbone和FPN,如上图所示。中间的FPN是需要优化的部分。怎么优化呢,就是在给定的搜索空间内选择最佳的模型架构,‘控制器使用搜索空间中的子模型的准确性作为更新其参数的奖励信号。 因此,通过反复试验,控制器可以学习如何随着时间的推移生成更好的架构。’。

搜索空间:FPN的众多跨连结构组成了一个完整的搜索空间,许多mergeing cells组成一个FPN,合并来自不同的层融合的特征表示,(一个cell融合两个层),组成了FPN的元结构,从而构成了模块化的搜索空间,结构如下:

merging cell融合两个层的操作是sum和global pooling,输入特征层首先经过最近邻采样或者max-pooling调整输出分辨率,每个merge特征层后跟一个RCB操作,即relu,conv,bn,常规操作。

NAS 利用强化学习训练控制器在给定的搜索空间中选择最优的模型架构。控制器利用子模型在搜索空间中的准确度作为奖励信号来更新参数。因此,通过反复试验,控制器逐渐学会了如何生成更好的架构。由于不知道 FPN 的跨连接情况,NAS-FPN 采用 RNN 作为控制器,使用该控制器来产生一串信息,用于构建不同的连接。其宏观结构如下图所示:

搜索得到的最优 FPN 结构如下图,其控制器收敛得到的最终 FPN 结构如 (f) 所示,并且其精度最高。从中可得训练时间越长其轨迹越曲折混乱,(每个点代表一个特征层。同一行的特征层具有相同的分辨率。分辨率在自底向上下降。箭头表示内部层之间的连接。图中左侧是输入层。金字塔网络的输入用绿色圆圈标记,输出用红色圆圈标记):

最终收敛的 FPN 网络结构:

直观感觉:搜索结构中做了一些改动,比如GP,RCB,Sum。最终结果确实上升明显,但是为什么论文中没有写原始FPN加上这些操作或者直接将FPN结构固定所得的对比实验是什么样子。存疑。

NAS综述:NAS(神经结构搜索)综述

源论文:NAS-FPN

 

4. AugFPN

在经典FPN结构的基础上做了改进,结构如下:

经典的FPN,有三个缺陷(文章说的):

缺陷1:before feature fusion,FPN在特征混合之前,backbone的不同stage学习到的特征需要先经过1*1卷积进行一个降维,降到通道数相同才能进行特征相加。然而不同stage学习到的特征感受野是不一样的,包含的语义信息也不同。把两个语义信息差距较大的特征直接相加,势必会减弱多尺度特征的表达能力。简言之:特征求和前不同层次特征之间的语义差异。

缺陷2:top- down feature fusion,自顶向下的特征融合过程就是将顶层的高级特征和底层的低级特征相融合的过程,这样虽然底层的特征得到了来自顶层的高级特征的加强,然而由于顶层的特征经过1*1降维,势必会造成信息损失。简言之:金字塔顶层层次特征的信息丢失。

缺陷3:after feature fusion,FPN中每个候选区域(ROI)的特征都是根据proposal的尺度来决定相应的特征图从哪一层选择,然而那些忽略的层也是包含着丰富信息的,它们对最终的分类和回归结果也有着影响。直接忽略了其它层的特征势必会影响到最终的检测结果。简言之:RoIs的启发式分配策略。即用所有的层上的roi作为回归分类的依据。

针对这三个缺陷,AugFPN做了三个改进:

改进1:Consistent Supervision(一致性监督):缩小特征融合前不同尺度特征之间的语义差距

        对混合之后的特征图M2-M5做一个监督。具体做法:对RPN网络得到的每一个候选区域都分别映射到M2~M5上得到相应的feature map,然后直接对这些feature map做分类和回归,可以得到一个损失函数。将这一损失和网络本身的损失做一个加权求和。由于在测试阶段,这个分支是不参与计算的,所以Consistent Supervision对模型最终的参数和计算量没有影响。(个人理解:就是根据混合之后的特征图上的分类结果,判断混合的信息是不是较优的)

改进2:Residual Feature Augumentation (残差特征增强):通过残差特征增强提取比率不变的上下文信息,减少特征映射在最高金字塔层次的信息丢失

        由于FPN特征融合之前需要先进行1x1的特征降维,这会导致M5的信息损失。为了避免这种信息损失,作者提出了一种很巧妙的办法。因为C5的信息是没有损失的,如果能够将C5的信息融合到M5上,就可以有效减少这种信息损失了。为此作者提出了ASF的结构,如Figure 3(a)所示。首先按照比例不变,对C5进行自适应池化操作,然后对每个尺度的特征图进行1*1降维,然后对降维后的特征进行上采样,对上采样之后的特征按照学习到的权重进行相加,把相加完之后的特征称之为M6,再将M6和M5进行相加作为最终的没有损失的M5。

改进3:Soft ROI Selection(软RoI选择):自适应地学习更好的RoI特征

        FPN中ROI对应的特征是根据ROI的尺度选择对应提取的层,一般小的ROI对应低级特征,大的ROI对应高级特征(我的理解,高级感受野更大,负责检测大的目标)。然而事实上,这并不是一种最优的办法。因为有时候两个相同大小的ROI可能会被分到不同层的特征,即使某个ROI被分到了某一层,但其实其它层的特征也包含着描述这个ROI的信息。因此,论文提出了一种Soft RoI Selection的办法。具体做法是,对于任意一个ROI,我们都会提出它在不同层的特征图上所对应的特征,然后利用网络本身学习权重参数,将这些不同层上的特征进行求和作为这个ROI最终的特征,这一结构和Residual Feature Augmentation中使用的自适应求和操作是一样的。(这一点与PANet很像,先后不作争辩,想想确实有道理。但这样计算也会相应增加吧。)

源论文:AugFPN

源代码:AugFPN源码

5. BiFPN

谷歌团队,与前面NAS-FPN一样,都是想要寻找有效的BLOCK,重复叠加,对比如图:

 BiFPN具体结构:

不得不说,这个和PANet差不并不大,主要是,作者说可以重复很多次(?),至于重复多少次就是速度与精度的权衡了,源论文笔者还没有细读,单从结构上来说就是多了一个向上的结构。另外一个小细节,特征融合是带权重进行融合的,权重生成方式是softmax,但是比较费时,于是去掉指数运算,简化为一个快速方式(fast normalized fusion)。简化了参数量,顺带优化了PANet,

源论文:BiFPN

6.Recursive-FPN(递归FPN)

递归FPN的DetectoRS是目前物体检测(COCO mAP 54.7)、实体分割和全景分割的SOTA。

idea很好理解:套娃,将传统FPN的融合后的输出,再输入给Backbone,进行二次循环:

展开看看,一目了然:

源论文:Recursive FPN

7. FPT(Transformer)

源论文:FPT

源代码:FPT源码pytorch

 

 

 

其次还有很多FPN变体,可谓数不胜数。。。Fully-FPN,Simple-PAN,Libra R-CNN等等等等,有空再更

最后,记录一下一些特征融合方式: CV中的特征融合SFAM、ASFF、BiFPN、Hyper column

 

 

 

 

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/bPKBneJ2.shtml

相关文章

目标检测中的各种FPN

早期的目标检测算法,无论是一步式的,还是两步式的,通常都是在Backbone的最后一个stage(特征图分辨率相同的所有卷积层归类为一个stage)最后一层的特征图,直接外接检测头做目标检测。此种目标检测算法&#…

FPN(在FasterRCNN里面是如何运用的)

FPN(Feature Pyramid Networks) FPN解决了什么问题? 答:FPN的提出是为了实现更好的feature maps融合,一般的网络都是直接使用最后一层的feature maps,虽然最后一层的feature maps 语义强,但是位置和分辨率都比较低&…

深度学习之FPN+PAN

一、FPN 检测不同尺度的物体具有挑战性,尤其是对于小物体,我们可以使用不同尺度的同一图像的金字塔来检测物体(下左图)但是,处理多尺度图像非常耗时并且内存需求太高而无法同时进行端到端训练,因此创建了一…

FPN全解-最全最详细

这篇论文是CVPR2017年的文章,采用特征金字塔做目标检测,有许多亮点,特来分享。 论文:feature pyramid networks for object detection 论文链接:https://arxiv.org/abs/1612.03144 论文概述: 作者提出的…

FPN和PAN的内容及区别

FPN和PAN都是用于解决在目标检测中特征金字塔网络(FPN)在多尺度检测任务上的不足的方法。下面分别详细介绍一下它们的原理和区别。 FPN FPN全称Feature Pyramid Network,是由FAIR在2017年提出的一种处理多尺度问题的方法。FPN的主要思路是通过构建金字塔式的特征图…

深度学习之FPN和PAN

注:借鉴整理,仅供自学,侵删 FPN是自顶向下,将高层的强语义特征传递下来,对整个金字塔进行增强,不过只增强了语义信息,对定位信息没有传递。PAN就是针对这一点,在FPN的后面添加一个自…

FPN网络介绍

目录 前言一.FPN网络二.网络创新点 前言 上一篇博文我们介绍了FCN结构,这篇博文我们来简答的介绍下FPN网络,FPN (Feature Pyramid Network) 是一种用于图像语义分割、物体检测等任务的神经网络结构。是针对目标检测提出的结构。 一.FPN网络 先来看下FP…

FPN+PAN结构,SPP结构

一、FPNPAN FPN 高维度向低维度传递语义信息(大目标更明确) PAN 低维度向高维度再传递一次语义信息(小目标也更明确) 二、SPP 深层的feature map携带有更强的语义特征,较弱的定位信息。而浅层的feature map携带有…

FPN+PAN结构学习

yolo4的neck结构采用该模式,我们将Neck部分用立体图画出来,更直观的看下两部分之间是如何通过FPN结构融合的。 如图所示,FPN是自顶向下的,将高层特征通过上采样和低层特征做融合得到进行预测的特征图。Neck部分的立体图像&#xf…

FPN网络理解

1.什么是FPN fpn设计动机:1.高层特征向低层特征融合,增加低层特征表达能力,提升性能 2.不同尺度的目标可以分配到不同层预测,达到分而治之。 fpn设计细节:1*1的卷积是让最左侧的三个特征图的通道保持一致,从…

FPN详述

简介 为了使用更多的语义信息,目标检测模型一般在卷积神经网络最后一层的特征图上进行后续操作(随着不断地下采样,语义信息更丰富,空间信息更稀少),而这一层对应的下采样率一般是比较大的,如16…

FPN与Unet的异同

来源:目标检测的FPN和Unet有差别吗? - 知乎 (zhihu.com) 作者:CW不要無聊的風格 链接:https://www.zhihu.com/question/351279839/answer/1598104355 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业…

FPN以及其他结构FPN——Bi-FPN重点(仅供自己学习使用)

FPN FPN特征金字塔结构。 由于目标检测中对小物体检测很困难,因为卷积过程中,大物体的像素点多,小物体的像素点少,随着卷积的深入,大物体的特征容易被保留,小物体的特征越往后越容易被忽略。所以产生了FPN结…

FPN(Feature Pyramid Networks)详解

图像金字塔结构 图a 图a是在传统的图像处理当中是比较常见的一个方法。针对我们要检测不同尺度的目标时,会将图片缩放成不同的尺度,然后将每个尺度的图片依次通过我们的算法进行预测。 优点是它创建的多尺度特征的所有层次都包含很强的语义特征&#xf…

FPN解读

前两篇博客中都说到了FPN这个神器,今天就花了点时间看了下这篇论文,喜欢这个很赞很干净的结构。 Motivation 凡是都要从motivation说起,哈哈哈。rcnn系列在单个scale的feature map做检测(b),尽管conv已经对scale有些鲁棒了&#…

目标检测之FPN网络详解

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达特征图金字塔网络FPN(Feature Pyramid Networks)是2017年提出的一种网络,FPN主要解决的是物体检测中的多尺度问题,通过简单…

FPN网络

论文是CVPR2017年的文章,采用特征金字塔做目标检测,有许多亮点,特来分享。 论文链接:https://arxiv.org/abs/1612.03144 译文:https://blog.csdn.net/quincuntial/article/details/80152314 FPN解决了什么问题&…

各种FPN:PANet、ASFF、NAS-FPN、BiFPN、Recursive-FPN...

早期的物体检测算法,无论是一步式的,还是两步式的,通常都是在Backbone的最后一个stage(特征图分辨率相同的所有卷积层归类为一个stage)最后一层的特征图,直接外接检测头做物体检测。此种物体检测算法&#…

FPN网络详解

特征图金字塔网络FPN(Feature Pyramid Networks)是2017年提出的一种网络,FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性…

FPN详解

论文题目:Feature Pyramid Networks for Object Detection 论文链接:论文链接 论文代码:Caffe版本代码链接 一、FPN初探 1. 图像金字塔 图1 图像金字塔 图2 高斯金字塔效果 如上图所示,这是一个图像金字塔,做CV的你…