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

Anchor-Based Detectors

基于锚框的检测器会将物体预测为相对于预设锚框的偏移量,Faster R-CNN、SSD、RetinaNet 和 YOLOv5 都采用了这种方法。本文介绍其工作原理和对比。

基于锚框的检测器是目标检测模型,会在图像上平铺预定义的锚框,并针对每个锚框预测类别分数和偏移量,以将其调整为贴合目标的边界框。这一类模型包括两阶段模型,例如 Faster R-CNN,其区域提议网络会为锚框打分以生成候选区域;也包括单阶段模型,例如 SSD、RetinaNet 以及 YOLOv2 到 YOLOv5,它们会直接对每个锚框进行分类和调整。从 2015 年 Faster R-CNN 问世起,锚框一直是目标定位的标准方法,直到 2019 年 FCOS 等无锚框检测器达到同等准确率。

基于锚框的检测如何工作#

骨干网络和颈部网络会将图像转换为特征图,每张特征图的每个单元格都设有一组固定锚框,涵盖多种尺寸和宽高比。对于每个锚框,检测头会预测每个类别的一个分数、YOLOv2 到 YOLOv5 中的一个目标置信度分数,以及四个回归值。Faster R-CNN提出的广泛使用的编码方式,会按锚框宽度和高度的比例移动其中心点,并以指数方式缩放其宽度和高度:

import torch

# One anchor as (center x, center y, width, height) in pixels
anchor = torch.tensor([320.0, 240.0, 64.0, 128.0])

# Offsets (tx, ty, tw, th) that the regression branch predicts for this anchor
tx, ty, tw, th = torch.tensor([0.25, -0.10, 0.20, -0.05])

# Faster R-CNN decoding: shift the center in units of anchor size, scale width and height exponentially
cx = anchor[0] + tx * anchor[2]
cy = anchor[1] + ty * anchor[3]
w = anchor[2] * torch.exp(tw)
h = anchor[3] * torch.exp(th)
print(f"anchor 64x128 at (320, 240) -> box {w:.1f}x{h:.1f} at ({cx:.1f}, {cy:.1f})")

锚框变为一个以 (336.0, 227.2) 为中心、大小为 78.2 × 121.8 像素的框:它向右移动了 16 像素,向上移动了 12.8 像素,宽度增加了 22%(exp(0.2)),高度缩小了 5%(exp(−0.05))。由于偏移量是相对于锚框大小计算的,因此小锚框和大锚框都可以使用相同的预测值。

推理时,检测器会按这种方式解码每个锚框,丢弃低于置信度阈值的边界框,然后运行非极大值抑制(NMS),去除相邻锚框产生的重复结果。

训练:为每个锚框标注#

训练时,会根据每个锚框与标注框的交并比(IoU)为锚框打标签。RetinaNet使用以下阈值:

Faster R-CNN 的区域提议网络使用更严格的阈值:0.7 和 0.3。RetinaNet 在五个金字塔层级的每个位置使用 9 个锚框,每张图像总计约 100,000 个,其中几乎全是负样本;其焦点损失会降低这些容易负样本的权重,避免它们主导训练。

主要的基于锚框的架构#

  • 两阶段检测器:Faster R-CNN 的区域提议网络会为锚框打分,将其判定为目标或背景,并将其细化为每张图像约 300 个候选区域;第二个检测头则对每个候选区域进行分类和细化。使用 VGG-16 骨干网络时,它在 GPU 上的运行速度为 5 FPS;Mask R-CNN 在相同设计中增加了一个掩码分支。
  • 单阶段目标检测器:SSD、RetinaNet 以及 YOLOv2 到 YOLOv5 的模型会在一次前向处理中对每个锚框进行分类和细化。YOLOv2 用对训练边界框的宽度和高度进行 k-means 聚类,取代了人工挑选锚框的方式。

Ultralytics YOLOv5采用基于锚框的设计,在三个输出层级上各使用 3 个锚框,并根据形状将标注与锚框匹配:当标注的宽度和高度都在锚框对应数值的 4 倍范围内时,该锚框就是候选锚框。Ultralytics 软件包的 YOLOv5u 变体将该检测头替换为无锚框分离头;这一设计最初由 YOLOv8引入,并由 YOLO26延续。

基于锚框与无锚框检测器#

无锚框检测器会从每个网格点预测边界框(以到四条边的距离表示),或从关键点(例如目标中心点)预测边界框,因此无需调节锚框尺寸、宽高比或 IoU 阈值,并且每个位置只生成一个候选框,而不是每种锚框形状各生成一个。ATSS追溯了 RetinaNet 与无锚框 FCOS 之间的准确率差距,发现差距来自两者选择正训练样本的方式:采用相同的选择规则后,两者准确率相同;RetinaNet 在 COCO minival 上每个位置使用 9 个锚框时的 AP为 39.2,使用 1 个时则为 COCO39.3 AP。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 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 的未来!

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