YOLOv10: 实时端到端目标检测

论文: YOLOv10: Real-Time End-to-End Object Detection (2024)
作者: 清华大学 (王敖等)
代码: github.com/THU-MIG/yolov10


革命性贡献: NMS-Free!

YOLOv10 是首个真正消除 NMS 后处理的 YOLO 版本,实现端到端推理。


核心创新

1. 一致双重分配 (Consistent Dual Assignments)

这是实现 NMS-Free 的关键。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
训练阶段:
┌─────────────────────┐
│ One-to-Many Head │ → 每个目标 → 多个预测 (丰富监督)
│ (一对多) │
├─────────────────────┤
│ One-to-One Head │ → 每个目标 → 唯一最佳预测 (模拟推理)
│ (一对一) │
└─────────────────────┘

两 Head 共享一致的匹配度量 → 训练出的 One-to-One Head
在推理时无需 NMS 即可生成干净预测

推理阶段:
仅使用 One-to-One Head → 无冗余框 → 无需 NMS!

为什么之前做不到?

  • 传统训练只用 One-to-Many,推理产生大量冗余框 → 必须 NMS
  • YOLOv10 同时在训练中学习 One-to-One,推理时自然无冗余

2. 整体效率-准确度驱动设计

不是在某一个组件上优化,而是系统性审视每个组件。

优化点 方法 效果
轻量级分类 Head 大幅减少分类分支的参数量 计算 ↓
空间-通道解耦下采样 先通道变换再空间缩减 减少信息丢失
秩引导块设计 根据各阶段冗余度自适应调整 精度 ↑ 计算 ↓
大核卷积 部分层用 7×7 卷积 感受野 ↑
部分自注意力 (PSA) 在关键层引入注意力但降低复杂度 精度 ↑ 可控成本

架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
输入

┌──────────────────────────────┐
│ Backbone: CSPNet (增强版) │
│ + 空间-通道解耦下采样 │
│ + 秩引导块设计 │
└──────────┬───────────────────┘

┌──────────────────────────────┐
│ Neck: PAN (增强版) │
│ + 大核卷积 │
│ + PSA (部分自注意力) │
└──────────┬───────────────────┘

┌──────────────────────────────┐
│ Dual Head: │
│ ├─ One-to-Many (训练用) │
│ └─ One-to-One (推理用) │ ← NMS-Free!
└──────────────────────────────┘

性能基准

YOLOv10 在所有模型尺度上超越了之前的版本:

模型 参数量 mAP (COCO) 延迟
YOLOv10-N 2.3M 38.5% 1.84ms
YOLOv10-S 7.2M 46.3% 2.49ms
YOLOv10-M 15.4M 51.1% 4.74ms
YOLOv10-L 24.4M 53.2% 7.28ms
YOLOv10-X 29.5M 54.4% 10.70ms

对比 YOLOv8: 参数更少,精度更高,推理更快 + NMS-Free!


NMS-Free 为什么重要?

1
2
3
4
5
6
7
传统流程:
模型 → NMS 后处理 → 最终输出

额外步骤,增加延迟,调参敏感,可能漏检

YOLOv10:
模型 → 直接输出! (端到端)

收益:

  • 低延迟: 消除 NMS 瓶颈
  • 部署简单: 减少流水线复杂度
  • 端到端优化: 整个系统可以联合调优

相关链接

  • 📝 [[YOLO 系列总览]]
  • 📝 [[YOLOv8 详解]]
  • 📝 [[YOLOv11 详解]]
  • 📋 [[10.clippings/感知算法/2D检测/单阶段/YOLO/YOLO 详解:从 v1 到 v11]]