Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Feature Pyramid Network (FPN)

特征金字塔网络(FPN)将深层语义特征与精细的高分辨率特征融合,让检测器能同时发现大物体和小物体。

特征金字塔网络(FPN)是一种颈部架构,可将骨干网络的多分辨率特征图转换为金字塔结构,使每个层级都包含丰富的语义信息,并对应一定范围的物体尺寸。该架构由 Facebook AI Research 在论文 Feature Pyramid Networks for Object Detection(CVPR 2017)中提出。它在标准卷积神经网络(CNN)中加入自顶向下路径和横向连接,让模型能够在高分辨率层级检测小物体,同时保留深层对物体外观的认知。在大多数现代目标检测架构和实例分割模型中,FPN 及其衍生架构都位于骨干网络与检测头之间。

为什么检测器需要多尺度特征#

CNN 骨干网络越深入,下采样程度越高,因此最后一张特征图语义信息丰富,但分辨率较粗:在步幅为 32 时,一个 20 像素大小的物体在网格上占不到一个单元。早期特征图保留了精细的空间细节,主要对边缘和纹理产生响应。在 FPN 出现之前,检测器有三种选择,但各有代价。在多个尺度上对图像金字塔运行网络,精度高,但速度会慢好几倍。像原版 Faster R-CNN 那样只根据最后一张特征图预测,速度快,但对小物体的检测效果较弱。像 SSD 那样根据骨干网络的多个阶段进行预测,会从网络较深处开始,以避开较弱的低层特征,因此会错过小物体所需的高分辨率特征图。FPN 通过单次前向传播实现了图像金字塔的多尺度覆盖;采用 FPN 的 Faster R-CNN 在 COCO 检测任务上创下单模型的新纪录,同时在 GPU 上达到每秒 5 帧。

FPN 的工作原理#

FPN 分三步构建金字塔:

  1. 自底向上路径: 骨干网络的常规前向传播。在 ResNet 中,FPN 会取每个阶段的最后一张特征图,分别标记为 C2 到 C5,对应步幅 4、8、16 和 32。
  2. 自顶向下路径: 从最粗糙的层级开始,使用最近邻插值将每张特征图放大 2 倍,把高层语义信息传递到更精细的层级。
  3. 横向连接: 使用 1×1 卷积将每张骨干网络特征图转换为统一的 256 通道宽度,再将结果与上一级放大后的特征图逐元素相加,并使用 3×3 卷积平滑求和结果,以减少上采样伪影。输出 P2 到 P5 均有 256 个通道,因此一个共享权重的预测头即可处理所有层级。

Torchvision 自带现成的 FeaturePyramidNetwork 模块,可接收按顺序排列的字典形式的骨干网络特征图。

from collections import OrderedDict

import torch
from torchvision.ops import FeaturePyramidNetwork

# 640x640 图像在步幅 8、16 和 32 处的骨干网络输出(ResNet-50 通道数)
features = OrderedDict(
    c3=torch.randn(1, 512, 80, 80),
    c4=torch.randn(1, 1024, 40, 40),
    c5=torch.randn(1, 2048, 20, 20),
)

# 横向 1x1 卷积加上自顶向下路径,使每个层级都具有相同的 256 个通道
fpn = FeaturePyramidNetwork(in_channels_list=[512, 1024, 2048], out_channels=256)
pyramid = fpn(features)

for name, level in pyramid.items():
    print(name, tuple(level.shape))

它会打印 c3 (1, 256, 80, 80)、c4 (1, 256, 40, 40) 和 c5 (1, 256, 20, 20):每个层级都保留了自己的空间尺寸,而现在三者的通道宽度也相同,因此一个预测头就能处理所有尺度。

应用场景#

  • 航空和卫星影像: 在卫星图像分析和无人机影像中,车辆、人员和建筑物往往只有几个像素大小,因此检测器会依赖金字塔中的步幅 4 和步幅 8 层级。
  • 实例分割: 在 Detectron2 中提供的 Mask R-CNN 会根据区域大小将其分配到金字塔的相应层级,然后预测边界框和掩码。
  • 全景分割: Panoptic FPN 在同一个金字塔上增加语义分割分支,为道路、天空等不可计数区域以及可计数物体标注类别。
  • 自动驾驶车辆: 单张相机画面中,既可能有占据半幅图像的近处卡车,也可能有只有几像素高的远处行人和交通信号灯。

FPN 与 PANet、BiFPN 及其他颈部架构的比较#

FPN 的自顶向下路径开创了一系列颈部架构,它们改变了层级之间的信息流动方式:

  • PANet: 在 FPN 的自顶向下路径之后增加一条自底向上路径,缩短从精细且定位准确的特征到高层级的传递路径。PANet 在 COCO 2017 实例分割挑战赛中获得第一名。
  • BiFPN: EfficientDet 的颈部架构会多次重复自顶向下和自底向上的特征融合,移除只有一个输入的节点,并为融合的每个输入学习一个权重。
  • NAS-FPN: 通过神经架构搜索找到的一种金字塔布局,并会重复堆叠多次。
  • U-Net: 同样通过跳跃连接融合粗略和精细特征,然后在完整分辨率下进行一次预测,因此更适合逐像素分割,而非多尺度检测。

YOLO26 使用通过拼接融合层级的 FPN 加 PAN 颈部架构:两次上采样将步幅 32 的上下文信息传递到步幅 8 层级,两次步幅卷积则将细节传回高层级,而检测头会根据步幅分别为 8、16 和 32 的 P3、P4 和 P5 进行预测。其 yolo26-p2.yaml 变体通过步幅 4 的 P2 层级扩展金字塔,以处理极小物体,这会使 YOLO26n 的未融合计算量从 6.1 增至 9.5 GFLOPs。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来