一句话定义
单阶段检测把检测压缩为对整图的一次前向:网络在稠密网格(或锚框/锚点)上同时预测类别、置信度与框,以少量精度换取数十 FPS 的实时性,YOLO 系列是其代表谱系。
为什么重要
工业落地里「实时」往往是硬指标:视频流 30 FPS、边缘设备个位数瓦特功耗,两阶段架构的候选区开销难以承受;YOLO 把检测变成「可训练的稠密回归 + 后处理」,是理解所有实时检测器(YOLO、SSD、FCOS、RetinaNet)的共同骨架。
直观类比
两阶段像先圈出「可能有人的区域」再逐一细看(慢而准),单阶段像一张考卷上每道网格题都直接作答(快而需要更多训练技巧);FPN 多尺度检测头则像给近视考官配上三副不同度数的眼镜,远的小目标用高分辨率那副看。
前置知识
kp-017(IoU/mAP/NMS 与两阶段流程);kp-005(多尺度思想)。
核心概念
- 网格划分:把图像分 S×S 格,物体中心所在格负责预测该物体(YOLOv1 原始设计)。
- 锚框(Anchor):预设不同长宽比的参考框,网络回归相对修正;v1 无锚框,v2–v7 主流用锚框。
- Anchor-free:FCOS/YOLOv8 式直接在每个位置回归到边界的距离或中心度。
- 多尺度检测头:P3/P4/P5 三级特征分别负责小/中/大目标(FPN 思想)。
- 标签分配(Assignment):决定哪个位置/锚框对哪个真值负责(IoU 阈值法 → 动态分配如 TAL)。
- 损失组合:框回归(CIoU/IoU)+ 分类(BCE)+ 置信度/目标ness。
- NMS 后处理:与 kp-017 相同,阈值决定密集场景表现。
原理与机制
单阶段范式把「候选区生成」并入稠密预测:每个网格点(或锚框/锚点)输出 C 类分数 + 4 个框参数 + 1 个目标置信度,训练用标签分配决定监督对象——正样本稀缺(中心点附近才有)曾是单阶段召回低的主因,RetinaNet 用 Focal Loss 压制易负样本、动态分配(v8 的 TAL)按「分类分 × IoU」综合挑正样本后,单阶段精度已与两阶段同档。版本谱系(概览):v1(2015,网格回归开山)→ v2/v3(锚框 + 多尺度 + 更强骨干)→ v4/v5(训练技巧集成与工程化,v5 为社区实现未发正式论文)→ v6/v7(重参数化与高效骨干)→ v8(anchor-free + 解耦头 + 动态标签分配,成为当前工程默认)。推理时延与 mAP 的权衡由「骨干宽度/深度缩放系数 + 输入分辨率」三要素控制(v3 起的 s/m/l/x 命名)。
公式与模型
CIoU 损失(v4 起常用):
L_CIoU = 1 − IoU + ρ²(b, b_gt)/c² + α·v
(ρ 中心点距离,c 最小包围框对角线,v 衡量长宽比一致性)
Focal Loss(RetinaNet):
FL = −α (1 − p)^γ log p (γ=2 压制易分负样本)图示
实例与案例
边缘部署基线:YOLOv8n 在 640 输入下 COCO mAP@0.5 约 52.6%,TensorRT INT8 后在 Orin 级设备可跑实时;安防场景常用 s/m 档位。训练实操:小目标占比高时把输入分辨率提到 960 并提高 P3 头权重,比换更大骨干收益更直接。选型经验:有稠密小目标(人群、远距车辆)优先验证 P3 头与分辨率;吞吐优先则降分辨率比缩骨干更有效。
from ultralytics import YOLO # 社区工程库,本地安装使用,无网络调用
model = YOLO('yolov8n.pt')
model.train(data='custom.yaml', epochs=100, imgsz=640, mosaic=1.0)
results = model.predict('frame.jpg', conf=0.25, iou=0.5)常见误区
- 版本号当官方标准:v5、v6、v8、v9、v10 分属不同团队,无统一「官方版」;对比实验必须锁定同一实现仓库。
- 默认 NMS 阈值用于密集场景:人群、车流需调高 IoU 阈值或换 Soft-NMS,否则误删相邻真目标。
- 以为单阶段天然精度低:动态标签分配与 Focal Loss 之后,单阶段与两阶段在 COCO 上已同档,差距更多来自工程细节。
- 小目标靠堆骨干:小目标瓶颈在特征分辨率与标签分配,优先升分辨率与 P3 头,而非换大骨干。
与其他知识点的关系
评测完全复用 kp-017;多尺度头继承 kp-005 金字塔思想;部署与量化的实战在 kp-027 展开;实例分割头(kp-019)就是在同一检测框架上加掩码分支。
自测题
- YOLOv1 的核心思想与两阶段的本质差异是什么?
答案要点:把候选区生成并入稠密网格回归,一次前向同时输出全部框,省去候选阶段的开销。
- Focal Loss 解决什么问题?
答案要点:稠密预测中易分负样本数量巨大、主导损失,(1−p)^γ 因子压低其贡献,使训练聚焦难样本。
- 小目标检测效果差,第一步该调什么?
答案要点:优先提高输入分辨率并检查 P3 头与标签分配,其次才考虑更大骨干或更大模型。
延伸阅读
- Redmon 2016《You Only Look Once: Unified, Real-Time Object Detection》
- Lin 2017《Feature Pyramid Networks for Object Detection》