Anchor Boxes
学习锚框(anchor boxes)如何作为目标检测的参考模板。了解它们如何提高准确性,以及 Ultralytics YOLO26 等模型如何利用无锚设计。
锚框是预定义的参考矩形,具有特定的宽高比和尺度,它们分布在图像中,用于辅助目标检测模型定位和分类物体。模型并非从零开始要求神经网络预测物体的大小和位置(由于物体形状的多样性,这样做可能不稳定),而是使用这些固定模板作为起点。通过学习如何调整或“回归”这些初始框以拟合真实标注,系统可以实现更快的收敛和更高的准确率。这种技术通过将复杂的定位任务简化为更易于处理的优化问题,从根本上改变了 计算机视觉 (CV) 领域。
Link to this section锚框的工作机制#
在经典的 基于锚框的检测器 中,输入图像被划分为单元格网格。在每个单元格位置,网络会生成多个具有不同几何形状的锚框。例如,为了同时检测高个行人及宽大的车辆,模型可能会在同一个中心点提出一个高而窄的框和一个矮而宽的框。
在 模型训练 过程中,这些锚框会通过一种称为 交并比 (IoU) 的指标与实际物体进行匹配。与标注物体有显著重叠的锚框被指定为“正”样本。随后,网络会学习两个并行的任务:
-
分类: 为锚框分配一个概率得分,指示其包含特定类别(例如“狗”或“自行车”)的可能性。这使用标准的 监督学习 目标,如交叉熵损失。
-
框回归: 计算将通用锚框转换为紧密拟合的 边界框 (BBox) 所需的精确偏移值(坐标位移和缩放因子)。
这种方法使模型能够处理彼此靠近的多种不同大小的物体,因为每个物体都可以分配给最符合其形状的锚框。
Link to this section实际应用#
尽管较新的架构正转向无锚框设计,但在许多目标特征可预测的成熟生产系统中,锚框仍然至关重要。
- 零售与库存管理: 在 AI 驱动的零售解决方案 中,摄像头会监控货架库存。由于麦片盒或汽水罐等产品具有标准化的尺寸,锚框可以针对这些特定的宽高比进行调整。这种先验知识有助于模型即使在杂乱的环境中也能保持较高的 召回率。
- 自动驾驶: 自动驾驶车辆 中的感知堆栈依赖于检测行人、车辆和交通标志。由于远处的车辆相对于道路而言形状轮廓相对一致,使用针对这些形状定制的锚框可以确保稳健的 目标跟踪 和距离估计。
Link to this section基于锚框与无锚框对比#
区分传统的基于锚框的方法和现代的 无锚框检测器 非常重要。
- 基于锚框: 像最初的 Faster R-CNN 或早期的 YOLO 版本(例如 YOLOv5)等模型使用这些预定义的模板。它们很稳健,但通常需要手动调整超参数(锚框大小/比例)或使用 k-means 聚类 等聚类算法来适应新数据集。
- 无锚框: 包括 YOLO26 在内的高级模型通常采用无锚框或端到端的方法。这些网络直接预测物体中心或关键点,无需手动配置锚框。这简化了架构并通过消除处理数千个空背景锚框所需的计算,从而加快了 推理 速度。
Link to this section示例:访问锚框信息#
虽然现代的高级 API(如 Ultralytics Platform)在训练过程中抽象了这些细节,但在处理旧模型架构或分析模型配置文件时,了解锚框仍然很有用。以下代码片段展示了如何加载模型并检查其配置,其中锚框设置(如果存在)通常会在该处定义。
from ultralytics import YOLO
# Load a pre-trained YOLO model (YOLO26 is anchor-free, but legacy configs act similarly)
model = YOLO("yolo26n.pt")
# Inspect the model's stride, which relates to grid cell sizing in detection
print(f"Model strides: {model.model.stride}")
# For older anchor-based models, anchors might be stored in the model's attributes
# Modern anchor-free models calculate targets dynamically without fixed boxes
if hasattr(model.model, "anchors"):
print(f"Anchors: {model.model.anchors}")
else:
print("This model architecture is anchor-free.")Link to this section挑战与注意事项#
尽管有效,但锚框引入了复杂性。生成的庞大锚框数量(通常每张图像有数万个)会造成类别不平衡问题,因为大多数锚框仅覆盖背景。像 Focal Loss 这样的技术被用来通过降低简单背景样本的权重来缓解这一问题。此外,最终输出通常需要 非极大值抑制 (NMS) 来过滤掉多余的重叠框,确保每个物体只保留置信度最高的检测结果。






