检测算法概览
目标检测是 YOLO-Toys 的基础任务。本节介绍三大检测范式:锚框式、无锚框式和基于 Transformer 的检测。
检测问题
给定一张图像,目标检测需要:
- 定位:目标在哪里?(边界框)
- 分类:目标是什么?(类别标签)
挑战在于每张图像中目标数量不固定,且目标可能出现在任意位置和尺度。
三大范式
锚框式检测
2014–2022 年的主流范式:
- 在每个空间位置放置锚框(先验框)
- 预测相对于锚框的偏移
- 应用 NMS 去除重复
代表模型:YOLOv2–v5、Faster R-CNN、SSD、RetinaNet
优点:
- 优化空间成熟,易于理解
- 锚框设计得当则性能优异
缺点:
- 锚框设计对超参数敏感
- 大量重复预测
- 对异常长宽比效果差
无锚框式检测
将检测视为关键点估计:
- 直接预测目标中心
- 从中心特征回归尺寸
- 无需锚框
代表模型:YOLOv8、CenterNet、FCOS
优点:
- 无锚框超参数
- 更少重复预测
- 对异常目标泛化更好
缺点:
- 较新,成熟度较低
- 训练可能不稳定
基于 Transformer 的检测
将检测视为集合预测:
- 学习目标查询
- 查询关注图像特征
- 直接输出集合,无需 NMS
代表模型:DETR、Deformable DETR
优点:
- 端到端,无手工设计组件
- 架构清晰
- 适合研究
缺点:
- 收敛慢
- 小目标检测困难
- 计算成本较高
模型选择指南
[任务需求?]
│
├─ 实时边缘设备? ──────▶ YOLOv8n(无锚框,最快)
│
├─ 生产 API? ──────────▶ YOLOv8s/m(无锚框,均衡)
│
├─ 最高精度? ──────────▶ YOLOv8l/x 或 DETR
│
├─ 密集场景? ──────────▶ DETR(处理重叠)
│
├─ 新类别? ────────────▶ OWL-ViT(开放词汇)
│
└─ 文本条件? ──────────▶ OWL-ViT 或 Grounding DINO