Object Detection Architectures
探索目标检测架构,从骨干网到检测头。学习 Ultralytics YOLO26 如何为实时计算机视觉提供卓越的速度和精度。
目标检测架构是用于识别和定位视觉数据中项目的神经网络结构蓝图。在计算机视觉 (CV) 的广阔领域中,这些架构定义了机器如何通过将原始像素数据处理为有意义的洞察来“看”世界。与仅标记图像的基础分类模型不同,目标检测架构旨在为它发现的每个不同对象输出一个边界框 (Bounding Box) 以及类别标签和置信度分数 (Confidence Score)。这种结构设计决定了模型的速度、准确性和计算效率,使其成为选择实时推理或高精度分析模型时的关键因素。
Link to this section架构的核心组件#
While specific designs vary, most modern architectures share three fundamental components: the backbone, the neck, and the head. The backbone acts as the primary feature extractor. It is typically a Convolutional Neural Network (CNN) pre-trained on a large dataset like ImageNet, responsible for identifying basic shapes, edges, and textures. Popular choices for backbones include ResNet and CSPDarknet.
颈部 (Neck) 将主干连接到最终输出层。它的作用是混合并结合来自主干不同阶段的特征,以确保模型能够检测出各种尺寸的对象——这一概念被称为多尺度特征融合。架构通常在此处利用特征金字塔网络 (FPN) 或路径聚合网络 (PANet) 来丰富传递给预测层的语义信息。最后,检测头 (Detection Head) 处理这些融合后的特征,以预测每个对象的具体类别和坐标位置。
Link to this section演变:两阶段与单阶段#
历史上,架构分为两大类。两阶段检测器(例如 R-CNN 系列)首先提出可能存在对象的感兴趣区域 (RoIs),然后在第二步中对这些区域进行分类。虽然通常很准确,但它们对于边缘设备来说往往计算量过大。
相比之下,单阶段检测器将检测视为一个简单的回归问题,在单次传递中将图像像素直接映射到边界框坐标和类别概率。这种由 YOLO (You Only Look Once) 系列开创的方法,通过实现实时性能彻底改变了行业。现代进步最终产生了像 YOLO26 这样的模型,它们不仅提供了卓越的速度,还采用了端到端、无需 NMS 的架构。通过消除对非极大值抑制 (NMS) 后处理的需求,这些较新的架构减少了延迟变异,这对于安全关键型系统至关重要。
Link to this section实际应用#
架构的选择直接影响 AI 解决方案在各行各业的成功。
- 零售自动化: 在智能超市中,高效的单阶段架构支持自动结账系统,能够瞬间识别传送带上或购物车中的商品,从而减少等待时间和人为错误。
- 医疗诊断: 高精度架构被用于医学图像分析,以检测 X 射线或 MRI 扫描中的肿瘤等异常。在这里,架构保留细粒度细节的能力比原始处理速度更为关键。
Link to this section区分相关术语#
区分检测架构与类似的计算机视觉任务非常重要:
- 与图像分类的对比: 图像分类架构(如 VGG 或 EfficientNet)为整张图像分配单个标签(例如“猫”)。它不会告诉你猫在哪里,或者是否有多个猫,而这正是检测架构的主要功能。
- 与实例分割的对比: 虽然检测是在对象周围放置一个方框,但实例分割会识别每个对象精确的像素级轮廓(掩码)。分割架构通常是检测架构的扩展(例如,在检测头上添加一个掩码分支)。
Link to this section使用 Ultralytics 进行实现#
现代框架已经抽象了这些架构的复杂性,允许开发者以最少的代码利用尖端设计。使用 ultralytics 软件包,你可以加载预训练的 YOLO26 模型并立即运行推理。对于希望在云端管理数据集并训练自定义架构的团队,Ultralytics Platform 简化了整个 MLOps 流水线。
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Run inference on an image source
# This uses the model's architecture to detect objects
results = model("https://ultralytics.com/images/bus.jpg")
# Display the results
results[0].show()





