什么是FPN网络?

FPN,全称为Feature Pyramid Network(特征金字塔网络),并非一个完整的端到端目标检测器,而是一种用于在深度卷积神经网络(CNN)中构建特征金字塔的特定架构。它的核心思想是利用CNN不同层级的特征图来处理不同尺度的目标。简单来说,FPN旨在生成一个多尺度的特征图集合,其中每个层级的特征图都融合了高层语义信息和低层空间信息,从而在保持计算效率的同时,有效地提升网络处理不同尺寸目标的能力。

传统的处理多尺度目标的方法,要么是对输入图片构建图像金字塔(计算量大),要么是仅仅使用骨干网络最后一层(对小目标效果差),要么是使用骨干网络中不同层级的特征图但不进行有效融合(层级间信息割裂)。FPN通过一种巧妙的结构,在网络内部生成一个具有丰富语义信息的多尺度特征金字塔,克服了上述方法的缺点。

为什么需要FPN网络?

在目标检测等视觉任务中,目标的大小差异巨大。一个网络需要能够识别图像中可能非常小也可能非常大的物体。

传统方法的局限性

  • 图像金字塔: 最直观的方法是对原始图像进行不同尺度的缩放,然后将不同缩放版本的图像分别输入CNN进行特征提取和检测。这种方法虽然理论上能处理多尺度,但计算和内存开销巨大,因为每个尺度的图像都需要完整地通过骨干网络。
  • 单层特征图: 只使用骨干网络最后一层输出的特征图进行检测。这一层特征图具有最强的语义信息,适合分类,但空间分辨率低,特别是对于小目标,其信息可能在多次下采样中丢失殆尽。
  • 独立使用骨干网络不同层级特征: 直接使用骨干网络中不同下采样步长的层级输出作为多尺度特征。例如,使用步长8的特征图检测小目标,步长16的检测中目标,步长32的检测大目标。问题在于,浅层特征图(步长小)虽然空间分辨率高,但语义信息较弱,不足以准确识别复杂物体;深层特征图(步长大)语义信息强,但空间分辨率低,对精确定位小目标不利。这种方法没有有效结合高层语义信息与低层空间信息。

FPN提出的核心原因正是为了解决“深层特征语义强但分辨率低”和“浅层特征分辨率高但语义弱”之间的矛盾,并以一种计算高效的方式生成一个既有丰富语义信息又有较高分辨率的多尺度特征表示,供后续的检测器使用。

FPN网络是如何工作的?

FPN网络的核心在于构建一个结合了自下而上和自上而下路径的特征融合过程。它通常建立在一个预训练的骨干网络(如ResNet)之上。

核心组成部分:

  • 自下而上路径 (Bottom-up Pathway):

    这部分就是骨干网络的正向传播过程。随着网络层数的加深,特征图的空间分辨率逐渐降低(通过卷积或池化操作实现下采样),而每一层级的特征所包含的语义信息则越来越丰富。FPN会选取骨干网络中不同下采样倍数的层级的输出作为特征金字塔的“塔基”。例如,对于ResNet,通常选取conv2、conv3、conv4、conv5的输出,它们的总下采样倍数分别为4、8、16、32。这些层级记为C2、C3、C4、C5。越深的层级(C5)具有越强的语义信息但分辨率最低,越浅的层级(C2)分辨率最高但语义信息相对较弱。

  • 自上而下路径 (Top-down Pathway):

    这部分从自下而上路径的最深层(语义最丰富但分辨率最低)开始,逐步向上(向浅层)进行特征图的构建。具体操作是:

    1. 取自下而上路径的最深层特征图(例如C5)。
    2. 对其进行上采样(通常是最近邻插值或双线性插值),使其空间分辨率与其在自下而上路径中相邻的下一层(更浅一层)的特征图(例如C4)相同。

    通过这种方式,自上而下路径产生的特征图分辨率逐渐升高。

  • 横向连接 (Lateral Connections):

    这是FPN最关键的部分,用于融合自下而上路径的高分辨率特征图和自上而下路径的高语义特征图。在自上而下路径的每一个层级,将上采样后的特征图与自下而上路径中具有相同空间分辨率的特征图进行融合。具体做法是:

    1. 对自下而上路径中的对应层级特征图(例如C4),先通过一个1×1的卷积层来减少通道数,使其通道数与自上而下路径中上采样后的特征图通道数保持一致。这个1×1卷积层被称为“通道对齐层”。
    2. 将经过通道对齐的自下而上特征图与自上而下路径中上采样后的特征图进行逐元素相加(element-wise addition)。这个相加操作实现了语义信息和空间信息的融合。

    这个过程从最深层(C5与上采样后的C5融合构建P5,虽然C5没有对应的上一层,但这是起始点)开始,逐步向上(C4与上采样后的P5融合构建P4,C3与上采样后的P4融合构建P3,C2与上采样后的P3融合构建P2)。

  • 融合与输出:

    在完成逐元素相加融合后,通常会再对融合后的特征图应用一个3×3的卷积层。这个3×3卷积的目的是进一步处理融合后的特征,减少上采样带来的潜在的“棋盘格”效应或混叠现象,并生成最终用于后续任务(如目标检测)的特征金字塔层级。这些经过3×3卷积处理后的特征图构成了最终的FPN输出金字塔,记为P2、P3、P4、P5等。P_i层级的特征图对应于C_i层级的空间分辨率。

    有时,为了检测特别大的物体,还会基于最深层的P5特征图,通过一个MaxPooling操作生成P6层级,进一步扩大感受野。

最终,FPN输出的是一个由P2、P3、P4、P5(可能还有P6)等组成的特征图金字塔,其中P_i与输入图像的下采样倍数通常为2^i(例如P2对应4倍下采样,P3对应8倍,以此类推)。每个P层级都包含了自下而上路径的高分辨率信息和自上而下路径的高语义信息,使其能够同时有效地处理对应尺度的目标。

FPN网络通常在哪里使用?

FPN最主要的应用场景是目标检测实例分割。它作为骨干网络之上、检测头或分割头之下的一部分,为这些下游任务提供高质量、多尺度的特征表示。

  • 目标检测 (Object Detection):

    无论是在基于区域提议的检测器(如Faster R-CNN、Mask R-CNN)还是单阶段检测器(如SSD、RetinaNet)中,FPN都能显著提升性能,特别是对于小目标的检测。FPN为不同尺度的区域提议或预设的锚框提供了语义丰富且分辨率适宜的特征。

  • 实例分割 (Instance Segmentation):

    在如Mask R-CNN等需要进行像素级分割的任务中,FPN提供的多尺度特征图能够帮助更精确地预测不同大小物体的分割掩码。

  • 其他多尺度相关的视觉任务:

    虽然不如在检测和分割中普及,但FPN的思想或其变体也被探索应用于其他需要处理多尺度信息的任务,例如人体关键点检测、图像Caption生成等。

FPN网络涉及多少层级?

FPN涉及的层级数量取决于所使用的骨干网络以及下游任务的需求。

  • 骨干网络层级: FPN的自下而上路径通常会选取骨干网络中具有不同下采样步长的几个关键层级。对于常用的骨干网络如ResNet,通常选取总步长为4、8、16、32的层级(对应于原始图像尺寸的1/4、1/8、1/16、1/32)。这通常对应于ResNet的conv2、conv3、conv4、conv5的输出。因此,自下而上路径通常提供4个主要层级。
  • 输出金字塔层级: FPN会从这4个骨干网络层级以及自上而下和横向连接构建出对应的4个融合后的特征金字塔层级,记为P2、P3、P4、P5。P_i层级具有与骨干网络C_i层级相同的空间分辨率。
  • 额外层级: 为了覆盖更大范围的物体或匹配某些检测框架(如RetinaNet),有时会在P5的基础上通过一个MaxPooling操作生成一个P6层级(通常总步长为64),用于检测更大的物体。因此,最终的FPN输出金字塔通常包含P2、P3、P4、P5,或P2、P3、P4、P5、P6,共4到5个层级。

每个输出层级(P2, P3, P4, P5, P6)都用于处理特定尺度范围内的目标,例如P2处理最小的目标,P5或P6处理最大的目标。这种多层级输出是FPN能够有效处理多尺度目标的直接体现。

FPN网络如何集成到目标检测器中?

FPN作为一种通用的特征提取模块,可以灵活地集成到各种目标检测框架中。其集成方式主要取决于检测器是基于区域提议的还是单阶段的。

与基于区域提议的方法集成 (如 Faster R-CNN):

在Faster R-CNN这类方法中,首先需要一个区域提议网络(RPN)来生成可能包含目标的候选区域。FPN的输出金字塔(P2-P5或P2-P6)为RPN提供了多尺度的特征输入。

  • RPN在FPN上: RPN的头部(包括分类分支判断前景/背景和回归分支预测边界框偏移)会并行地连接到FPN的每一个输出层级(P2, P3, P4, P5, P6)。
  • 多尺度锚框: 在每个FPN层级上,RPN使用对应尺度的锚框。例如,在P2层级使用较小的锚框,在P3使用中等大小的锚框,以此类推,在P5或P6使用较大的锚框。
  • 区域提议生成: 每个FPN层级的RPN独立地生成针对该层级特征图尺度的区域提议。这些来自不同FPN层级的提议会被合并、去重(非极大值抑制)并筛选出一定数量的候选区域。
  • RoI Pooling/Align: 生成的区域提议会被映射回相应的FPN层级上。对于一个特定的候选区域,根据其在原图中的大小和位置,它会被分配到最适合处理该尺度的FPN层级上(例如,小区域分配到P2,大区域分配到P5)。然后,在该层级上进行RoI Pooling或RoI Align操作,提取固定大小的特征向量。
  • 检测头: 提取出的RoI特征向量被送入后续的分类头和回归头,进行最终的类别预测和边界框精修。

通过这种方式,FPN使得RPN能够在多个尺度上生成高质量的区域提议,并确保每个提议都能从最适合其尺度的、语义丰富的特征图中提取特征,极大地提升了Faster R-CNN处理多尺度目标的能力。

与单阶段检测器集成 (如 RetinaNet):

单阶段检测器直接在特征图上预测目标的类别和边界框,没有独立的区域提议阶段。FPN的输出金字塔天然适合这种结构。

  • 检测头连接到FPN的每个层级: 分类和回归两个检测头(通常是小的全卷积网络)会并行地连接到FPN的每一个输出层级(P3、P4、P5、P6、P7等,RetinaNet通常使用P3-P7,其中P6、P7由P5通过卷积和ReLU/Pooling生成)。
  • 锚框与预测: 在FPN的每个层级上,预设不同尺寸和宽高比的锚框。每个层级上的检测头负责预测该层级上锚框对应的目标类别概率和边界框偏移量。不同层级负责检测不同尺度的目标。
  • 端到端预测: 所有FPN层级上的预测结果合并,经过非极大值抑制(NMS)后,得到最终的检测结果。

在这种结构下,FPN为单阶段检测器提供了语义丰富且分辨率适宜的多尺度特征图,使得网络可以直接在这些特征图上进行密集的目标预测,从而提升了检测精度,特别是对小目标的检测性能。

总而言之,FPN通过在骨干网络内部构建一个高效的多尺度特征金字塔,为后续的目标检测或实例分割任务提供了强大的特征表示,是现代许多高性能物体检测器的重要组成部分。它的核心价值在于巧妙地融合了不同层级特征的优点,实现了对图像中各种大小物体的鲁棒检测。


fpn网络

By admin

发表回复