YOLOX 与 YOLOv10#
实时计算机视觉模型的发展历程中,出现了多次重大的架构飞跃。YOLOX 和 YOLOv10 是其中两个关键里程碑。YOLOX 于 2021 年发布,通过引入高效的无锚框设计,成功弥合了学术研究与工业应用之间的差距。三年后,YOLOv10 通过在后处理中免去非极大值抑制(NMS),推动了该领域的发展,进一步拓展了效率和速度的边界。
这篇全面的技术对比将探讨这两个模型的架构、性能指标和理想用例,帮助你深入了解它们,并为下一个目标检测项目选择合适的工具。
模型起源与元数据#
了解这些模型的起源,有助于理解其架构选择和目标部署环境。
YOLOX 详情
- 作者:郑革、刘松涛、王峰、李泽明和孙剑
- 机构:旷视科技
- 日期:2021-07-18
- Arxiv: https://arxiv.org/abs/2107.08430
- GitHub: https://github.com/Megvii-BaseDetection/YOLOX
- 文档: https://github.com/Megvii-BaseDetection/YOLOX/tree/main/docs
YOLOv10 详情
- 作者: Ao Wang、Hui Chen、Lihao Liu、Kai Chen、Zijia Lin、Jungong Han 和 Guiguang Ding
- 组织: 清华大学
- 日期: 2024-05-23
- Arxiv: https://arxiv.org/abs/2405.14458
- GitHub: https://github.com/THU-MIG/yolov10
- 文档: https://docs.ultralytics.com/models/yolov10
架构创新#
YOLOX 和 YOLOv10 的核心区别在于它们处理边界框预测和后处理的方式。
YOLOX:开创无锚框设计#
YOLOX 通过将 YOLO 系列转向无锚框架构引起了广泛关注。YOLOX 预测目标中心,而不依赖预定义锚框,大幅减少了为自定义数据集所需的设计参数和启发式调优。此外,它还引入了解耦检测头,将分类和回归任务分离到不同的分支中。这种方法解决了识别目标是什么与判断目标在哪里之间的冲突,显著提升了收敛速度和精度。
YOLOv10:无 NMS 革命#
虽然 YOLOX 简化了检测头,但仍依赖 NMS 来过滤冗余的边界框预测。YOLOv10 解决了这一根本瓶颈。通过在训练期间采用一致的双重分配,YOLOv10 实现了原生端到端检测。它在训练时使用一对多检测头,确保丰富的监督信号;推理时则使用一对一检测头,直接输出最终预测结果。这种全面兼顾效率与准确率的设计彻底移除了 NMS,显著降低了嵌入式芯片上的推理延迟。
非极大值抑制在神经处理单元(NPUs)上通常难以加速。移除 NMS 后,YOLOv10 可以在专用硬件上无缝执行整个模型计算图,大幅提升与 OpenVINO 和 TensorRT 等优化框架的兼容性。
性能指标与对比#
评估用于生产环境的模型时,平衡准确率与计算开销至关重要。下表展示了 YOLOX 和 YOLOv10 不同规模模型之间的权衡。
| 模型 | 尺寸 (像素) | mAP验证集 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
| 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 |
数据分析#
各项指标清楚地展现了 YOLOv10 的代际飞跃。例如,YOLOv10-S 的平均精度均值为 46.3%,与 YOLOX-m 的 46.9% 相比略低,但其参数量不到后者的三分之一(7.2M 对比 25.3M),FLOPs 也显著更少。此外,顶级模型 YOLOv10-X 将 mAP 提升至 54.4%,在满足严苛准确率需求的同时,速度仍快于较早的 YOLOX-x 架构,竞争力十足。
Ultralytics 生态系统的优势#
YOLOX 仍然是可靠的开源研究实现,但采用 YOLOv10 可以立即使用 Ultralytics 提供的维护完善的生态系统。选择由 Ultralytics 支持的模型,可获得更顺畅的使用体验,包括简单易用的 API 和详尽的文档。
开发者能从该框架的低内存需求中获益良多;与 RT-DETR 等基于 Transformer 的大型替代方案相比,训练 Ultralytics 模型通常消耗的 CUDA 内存要少得多。这种高效的训练内存占用让你可以在消费级硬件上使用更大的批次,从而缩短从数据采集到模型部署的时间。此外,该框架还提供无与伦比的灵活性,只需极少的代码更改,用户就能在目标检测、实例分割和姿态估计之间无缝切换。
训练与推理示例#
统一 API 让验证想法变得极其迅速。以下代码片段展示了如何使用 PyTorch 后端轻松训练和部署 YOLOv10 模型:
from ultralytics import YOLO
# 加载预训练的 YOLOv10 nano 模型
model = YOLO("yolov10n.pt")
# 使用 COCO8 数据集训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 对示例图像运行推理
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# 导出模型以便部署到边缘设备
model.export(format="engine", quantize=16)借助内置的导出流程,只需一行代码,就能将模型转换为 TensorRT 或 ONNX 等格式,完全绕过复杂的编译难题。
理想应用与部署场景#
如何在这些架构之间做出选择,很大程度上取决于你的硬件限制和具体领域需求。
实时视频分析#
对于自动驾驶或实时交通监控等需要超低延迟的应用,YOLOv10 是更好的选择。其端到端无 NMS 设计可确保执行时间具有确定性,这对无法容忍后处理延迟波动的安全系统至关重要。该模型在 NVIDIA Jetson 系列等设备上也能轻松达到较高帧率。
学术基准测试与边缘微控制器#
对于希望使用简洁的解耦检测头基线来试验标签分配策略的研究者而言,YOLOX 在学术领域仍有价值。此外,极其小巧的 YOLOX-Nano(参数量不到 100 万)可以部署到内存极为有限的边缘设备上,前提是硬件支持标准卷积运算。
终极标准:Ultralytics YOLO26#
虽然 YOLOv10 移除 NMS,实现了巨大飞跃,但计算机视觉领域仍在快速发展。对于希望在今天实现顶尖性能的开发者,我们强烈建议探索 YOLO26。
作为最新的视觉 AI 标准发布,YOLO26 在前代模型的基础理念上进一步增强性能。它在性能方面实现了最佳平衡,并原生支持检测、分割、姿态估计和有向边界框。
以下是 YOLO26 成为现代计算机视觉流程推荐之选的原因:
- 端到端无 NMS 设计: YOLO26 在 YOLOv10 的突破基础上,支持原生端到端推理(
nms=False),无需 NMS 后处理,避免相关瓶颈,从而实现更快且耗时确定的推理。 - CPU 推理速度最高提升 43%: YOLO26 专为边缘计算进行了优化,可在移动处理器和没有独立 GPU 的设备上实现出色性能。
- MuSGD 优化器: YOLO26 借鉴大语言模型训练的经验(具体来说是 Moonshot AI 的 Kimi K2),采用 SGD 与 Muon 的混合方案,实现极其稳定的训练和快速收敛。
- ProgLoss + STAL: 这些高级损失函数显著提升了小目标识别能力,这对航拍图像和无人机导航等要求严苛的领域至关重要。
- 移除 DFL: 通过移除分布焦点损失,YOLO26 简化了模型计算图,让模型能够顺畅导出到边缘和低功耗设备。
- 针对具体任务的改进: 无论是使用残差对数似然估计(RLE)进行姿态估计,还是使用专门的角度损失处理 OBB,YOLO26 都针对每一类主要视觉任务进行了微调。
对于准备使用当前最高效训练与部署工具升级流程的开发者,切换到 Ultralytics Platform 并利用 YOLO26,可确保你始终走在人工智能前沿。对于关注较早但稳定的架构的用户,也可以了解 YOLO11 或 YOLOv8,它们拥有广泛的社区支持和经过验证的稳健性。