YOLOv10 与 YOLOv9#
实时计算机视觉不断发展,在速度、精度和架构效率方面稳步提升。为下一次部署评估模型时,对比 YOLOv10 和 YOLOv9,可以看到解决深度学习瓶颈的两种不同思路。YOLOv9 专注于最大化训练期间的梯度信息流,而 YOLOv10 引入了端到端设计,移除了 NMS 后处理。
本指南分析了两者的架构创新、性能指标和理想应用场景,帮助开发者和研究人员为计算机视觉任务选择合适的模型。
YOLOv10:无需 NMS 的实时检测#
YOLOv10 旨在解决传统目标检测器的延迟瓶颈,它采用端到端架构,无需执行非极大值抑制(NMS)。
技术详情与沿革:
- 作者: Ao Wang、Hui Chen、Lihao Liu 等
- 组织:清华大学
- 日期: 2024 年 5 月 23 日
- 链接:arXiv 出版物、GitHub 仓库、Ultralytics 文档
架构与优势#
YOLOv10 对该领域最重要的贡献,是用于无 NMS 训练的一致双重分配策略。通过消除 NMS,该模型降低了推理延迟,尤其适用于后处理可能成为整个流程瓶颈的边缘设备。它从效率和精度两个方面优化多个组件,实现了出色的速度与参数量权衡。例如,YOLOv10-S 在搭载 TensorRT 的 T4 GPU 上仅需 2.49 毫秒,非常适合高速视频分析和实时机器人导航。
缺点#
无 NMS 设计是边界框检测领域的一项重要进展,但 YOLOv10 本质上只是目标检测器。它不像更新的模型那样开箱即用地支持实例分割或姿态估计,因此功能不够全面。
准备将 YOLOv10 用于生产环境时,请将模型导出为 TensorRT 或 ONNX 等优化格式,并使用 nms=False 选择无 NMS 的一对一检测头。在部署中直接运行原始 PyTorch 权重,可能会因计算图操作未优化而导致推理速度低于预期。
YOLOv9:可编程梯度信息#
在 YOLOv10 之前,YOLOv9 引入了新颖的架构概念,用以解决深度神经网络固有的信息瓶颈问题,从而实现对参数的高效利用。
技术详情与沿革:
- 作者:Chien-Yao Wang 和 Hong-Yuan Mark Liao
- 机构:台湾中央研究院信息科学研究所
- 日期: 2024 年 2 月 21 日
- 链接:arXiv 出版物、GitHub 仓库、Ultralytics 文档
架构与优势#
YOLOv9 引入了可编程梯度信息(PGI)以及广义高效层聚合网络(GELAN)。PGI 确保关键目标信息在数据经过网络深层时不会丢失,从而为权重更新生成可靠的梯度。GELAN 最大限度地提升网络参数的效率。这些创新共同使 YOLOv9 的平均精度均值(mAP)在 MS COCO 数据集 上达到较高水平,并且往往能以更少的 FLOPs 超越更庞大的模型。对于专注于最大限度提升精度指标的研究人员来说,这是一款实力强劲的模型。
缺点#
尽管精度很高,YOLOv9 仍依赖标准 NMS 后处理。这意味着神经网络运算虽然很快,但最终的边界框过滤会根据场景中的目标密度产生不同的延迟。此外,与后续模型相比,它的训练过程可能更占用内存,使用自定义数据集进行微调时需要更强大的 GPU 资源。
性能对比#
下表展示了两款模型的核心指标。请注意,YOLOv10 通常通过 TensorRT 实现更低延迟,而 YOLOv9 则在最大规格配置中突破了精度上限。
| 模型 | 尺寸 (像素) | mAPval50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 38.5 | - | 1.84 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.3 | - | 2.49 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.1 | - | 4.74 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.5 | - | 5.74 | 19.1 | 92.0 |
| YOLOv10l | 640 | 53.2 | - | 7.28 | 24.4 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 10.70 | 29.5 | 160.4 |
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.2 | 26.7 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.1 | 76.8 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.5 | 102.8 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 58.1 | 192.5 |
新一代模型:为何推荐 YOLO26#
YOLOv9 和 YOLOv10 都是重要的里程碑,但机器学习领域发展迅速。对于生产环境,许多开发者会使用集成完善且维护活跃的 Ultralytics Platform。截至 2026 年,Ultralytics 面向研究和企业场景的推荐模型都是 YOLO26。
YOLO26 在前代模型理念的基础上,提供更流畅的用户体验、简洁的 API,且训练时的内存需求低于基于 Transformer 的架构。
YOLO26 的关键创新#
- 端到端无 NMS 设计:YOLO26 在 YOLOv10 的基础上支持可选的端到端推理,使用
nms=False跳过 NMS 后处理,从而简化部署并使延迟更可预测。 - CPU 推理速度最高提升 43%:YOLO26n 的 CPU 速度最高可比 YOLO11n 快 43%,因此 YOLO26 非常适合边缘 AI以及没有专用 GPU 的嵌入式系统。
- MuSGD 优化器:结合 SGD 和 Muon 的混合优化器(灵感来自大语言模型优化技术),可实现稳定训练和快速收敛。
- 移除 DFL:移除分布焦点损失后,YOLO26 简化了模型导出流程,提升了与低功耗设备及各种边缘部署框架的兼容性。
- 针对特定任务的改进:与单任务检测器不同,YOLO26 支持检测、实例分割、语义分割、深度估计、分类、姿态估计和 OBB。它使用语义分割损失来改进实例分割,使用残差对数似然估计(RLE)提升姿态估计精度,并使用专用角度损失解决 OBB(定向边界框)的边界问题。
实际实现#
使用 Ultralytics Python 软件包训练和部署这些模型非常简单。以下示例展示了 Ultralytics 的训练工作流,该工作流会自动处理学习率调度和数据增强。
from ultralytics import YOLO
# 加载推荐的 YOLO26 模型
model = YOLO("yolo26n.pt") # 也兼容 'yolov10n.pt' 或 'yolov9c.pt'
# 使用 COCO8 示例数据集训练模型
train_results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0, batch=16)
# 运行推理
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# 导出为 ONNX,简化边缘部署
model.export(format="onnx")用例与建议#
选择 YOLOv10 还是 YOLOv9,取决于你的具体项目需求、部署限制和生态系统偏好。
何时选择 YOLOv10#
以下场景适合使用 YOLOv10:
- 无 NMS 的实时检测:适用于需要从端到端检测中获益、无需使用非极大值抑制并能降低部署复杂度的应用。
- 均衡权衡速度与准确率:适用于需要在不同模型规模下兼顾推理速度和检测准确率的项目。
- 延迟稳定的应用:适用于推理时间可预测性至关重要的部署场景,例如机器人或自主系统。
何时选择 YOLOv9#
以下场景推荐使用 YOLOv9:
- 信息瓶颈研究:研究可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 架构的学术项目。
- 梯度流优化研究:重点研究如何理解并缓解训练期间深层网络层中的信息损失。
- 高准确率检测基准测试:需要将 YOLOv9 在 COCO 基准测试中的出色表现作为架构对比参照的场景。
何时选择 Ultralytics (YOLO26)#
对于大多数新项目,Ultralytics YOLO26 能提供性能与开发者体验的最佳组合:
- 无 NMS 的边缘部署:适用于要求推理延迟稳定且较低,同时不希望增加非极大值抑制后处理复杂度的应用。
- 仅使用 CPU 的环境:没有专用 GPU 加速的设备。在这类设备上,YOLO26n 的 CPU 运行速度最高可比 YOLO11n 快 43%。
- 小目标检测:具有挑战性的场景,例如无人机航拍图像或 IoT 传感器分析。在这些场景中,ProgLoss 和 STAL 可以提升微小目标的检测精度。
结论#
YOLOv9 和 YOLOv10 各有优势。YOLOv9 最大限度地提升了参数效率和梯度流表现,而 YOLOv9e 在本次比较中准确率最高。YOLOv10 将端到端边界框检测引入 YOLO 系列,同时避免了 NMS 带来的延迟开销。
对于希望兼顾性能、多功能性和易用性的开发者,升级到更新的模型值得考虑。YOLO26 配备 MuSGD 优化器、用于提升小目标检测能力的 ProgLoss + STAL,以及多任务支持,是实际计算机视觉项目的推荐选择。
评论
提出问题、分享结果,或帮助其他人。