深圳Yolo 视觉
深圳
立即加入
词汇表

特征金字塔网络(FPN)

探索特征金字塔网络(FPN)如何提升多尺度目标检测能力。Ultralytics 运用先进的FPN技术实现detect 目标的detect 。

特征金字塔网络(FPN)是现代计算机视觉(CV)中使用的专用架构组件。 计算机视觉(CV)系统 系统中用于 提升多尺度物体检测能力的专用架构组件。它有效解决了图像分析领域的长期难题: 在同一图像中同时识别大型显着结构与微小远距离细节。通过生成 输入的多尺度表示——概念上类似金字塔结构——FPN使神经网络能在 每个分辨率层级提取丰富的语义信息。该架构通常位于 主干网络(提取原始特征)与 检测头之间,后者负责预测物体类别及边界框。

特征金字塔网络的工作原理

FPN的核心创新在于其信息处理方式。传统 卷积神经网络(CNN) 会自然形成分层特征结构,输入图像在此过程中逐步被降采样。虽然这种机制深化了 语义理解(识别图像内容),却往往导致空间分辨率下降(精确定位物体位置),使微小物体消失不见。

浮点数通过三步过程解决这个问题:

  1. 自底向上路径:这是网络的标准前向传播路径,例如残差网络(ResNet)。 残差网络(ResNet)。当网络处理图像时,会生成 特征图 的特征图,其尺寸逐渐缩小 但语义价值持续提升。
  2. 自上而下路径:网络通过对深层语义丰富的特征进行上采样,构建出更高分辨率的金字塔结构。此步骤将强上下文信息"幻化"回更大空间范围的映射图中。
  3. 侧向连接:为恢复下采样过程中丢失的清晰细节,FPN通过侧向连接将上采样后的特征与自底向上路径中原始的高分辨率图融合。

这种组合形成了一个金字塔结构,其中每个层级都具备强大的语义和良好的本地化特性, 显著提升了 精确度召回率

目标检测架构中的重要性

FPNs是现代 物体检测架构的基石。在引入该技术之前,模型必须在速度(仅使用最终层)和精度(处理图像金字塔,速度极慢)之间做出取舍。FPN提供了兼顾两者的解决方案,实现了 实时推理 同时 不牺牲对微小物体的检测能力。

这种效率对于像YOLO26这样的先进模型至关重要。 YOLO26这类先进模型至关重要。该模型借鉴FPN原理(如PANet)构建了精密的聚合网络,从而实现了 顶尖性能。其架构确保模型无论部署在边缘设备还是通过 Ultralytics ,都能在多样化数据集上保持高精度。

实际应用

FPN的多尺度能力使其在安全与精度至关重要的行业中不可或缺。

  • 汽车领域的AI:自动驾驶车辆必须同时track 近处的track 卡车与远处的微型交通信号灯或行人。FPN(全局感知网络)使感知层能够一次性处理这些不同尺度的目标,确保决策及时性。诸如 nuScenes 常用于评估这些能力。
  • 医学影像分析:在诊断成像中,检测病理需要发现尺寸差异极大的异常。配备FPN的模型能够同时识别大型器官结构和微小早期肿瘤 ,协助放射科医生做出精准诊断。
  • 农业人工智能:精准农业依赖于通过无人机影像识别作物与害虫。由于无人机飞行高度可能变化,影像中植物的尺寸也会随之改变。故障点网络(FPNs)能帮助模型实现良好的泛化能力,准确执行 物体计数

FPN与其他特征聚合器

区分标准FPN及其在新架构中演变的变体是有帮助的。

  • FPN与PANet:FPN通过添加自上而下的路径来丰富特征, 路径聚合网络(PANet) 则在FPN基础上额外添加 自下而上的路径。这缩短了低级特征的信息传递路径,进一步提升了 定位精度——该技术常被YOLO 所采用。
  • FPN 与 BiFPN:见于 EfficientDet, 双向特征金字塔网络(BiFPN) 为不同特征引入可学习权重,并移除仅有一个输入的节点,从而优化网络 效率。

实例

高级库如 ultralytics 内部处理FPN构建的复杂性。当加载YOLO26等模型时,架构会自动包含这些特征聚合层以实现性能最大化。

from ultralytics import YOLO

# Load the YOLO26 model, which uses advanced feature pyramid principles internally
# The 'n' suffix indicates the nano version, optimized for speed
model = YOLO("yolo26n.pt")

# Perform inference on an image containing objects of various sizes
# The model's neck (FPN-based) aggregates features to detect small and large items
results = model("https://ultralytics.com/images/bus.jpg")

# Display results to see bounding boxes around buses (large) and people (small)
results[0].show()

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入