YOLOv10 与 YOLOX 对比#
计算机视觉领域由实时目标检测架构的快速发展推动。这篇详尽的技术比较探讨了两个推动检测器效率和设计进步的重要模型:YOLOv10 和 YOLOX。通过分析它们的架构差异、性能指标和训练方法,开发者和研究人员可以为部署可靠的视觉系统做出明智决策。
模型背景与起源#
了解这些深度学习模型的起源,有助于深入理解其架构目标和面向的应用场景。
YOLOv10:消除 NMS,实现真正的端到端检测#
YOLOv10 旨在解决长期存在的延迟瓶颈,为 YOLO 系列引入了原生端到端方法。
- 作者: Ao Wang、Hui Chen、Lihao Liu 等
- 组织: 清华大学
- 日期: 2024 年 5 月 23 日
- arXiv:2405.14458
- GitHub: THU-MIG/yolov10
- 文档: Ultralytics YOLOv10 文档
YOLOX:弥合研究与工业应用之间的差距#
YOLOX 是传统 YOLO 设计的无锚框版本,采用更简单的方法,同时保持有竞争力的性能,尤其面向工业领域,旨在简化部署。
- 作者:郑革、刘松涛、王峰、李泽明和孙剑
- 机构:旷视科技
- 日期: 2021 年 7 月 18 日
- arXiv:2107.08430
- GitHub: Megvii-BaseDetection/YOLOX
- 文档: YOLOX 官方文档
架构亮点与创新#
这两个框架都不同于传统的基于锚框的检测器,但它们解决的是目标检测流程中的不同问题。
YOLOX 架构#
YOLOX 在 2021 年为 YOLO 设计带来了几项重要更新。它最主要的贡献是转向无锚框检测器设计。通过移除预定义的锚框,YOLOX 减少了针对不同数据集所需的设计参数数量和启发式调优工作。
此外,YOLOX 采用解耦头,将分类任务与回归任务分开。这解决了两个目标之间的冲突,并加快了训练期间的收敛速度。它还使用 SimOTA 进行动态标签分配,从而更好地处理COCO 数据集中常见的拥挤场景和遮挡情况。
无锚框设计(例如 YOLOX 所采用的设计)降低了模型调优的复杂度。开发者无需再对自定义数据集执行 k-means 聚类来确定最佳锚框尺寸,从而节省准备时间。
YOLOv10 架构#
YOLOX 改进了检测头,但推理期间仍依赖非极大值抑制 (NMS),这会导致延迟波动。YOLOv10 专门针对这一局限,引入了用于无 NMS 训练的一致双重分配策略。训练期间,它同时使用一对多和一对一标签分配;推理期间,则可以完全移除一对多检测头,并在不进行 NMS 后处理的情况下输出预测结果(在 Ultralytics 软件包中,使用 nms=False 选择此检测头)。
YOLOv10 还采用了以效率和准确率为核心的整体模型设计。它引入轻量级分类头和空间-通道解耦下采样,在不牺牲准确率的前提下减少参数量和 FLOPs。
性能对比#
在 NVIDIA T4 GPU 等硬件上评估这些模型,可以发现它们在不同规模下各有优势。下表对比了这两个模型系列。
| 模型 | 尺寸 (像素) | mAP验证集 50-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 |
| 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 |
如上所示,YOLOv10 具有良好的扩展性。YOLOv10x 变体准确率最高(54.4 mAP),而 YOLOv10n 变体的 TensorRT 推理速度报告值最快。相比之下,YOLOX-Nano 的体积最小(在 416 像素下有 0.91M 个参数),适合资源极其受限的环境。
训练方法与资源需求#
在将模型投入生产时,训练生态系统和资源需求与原始推理速度同样重要。
YOLOX 使用较旧的代码库,其依赖项和环境配置在当前软件栈上可能难以管理。
相比之下,YOLOv10 已集成到 Ultralytics 生态系统中,简化了开发者的使用体验。与基于 RT-DETR 等 Transformer 的架构相比,Ultralytics YOLO 模型在训练期间也使用更少的 CUDA 内存。
代码示例:简化训练流程#
使用统一的 Ultralytics API,只需几行 Python 代码就能训练模型,无需手动编译 C++ 算子或编辑复杂的配置文件。
from ultralytics import YOLO
# 初始化一个预训练的 YOLOv10 模型
model = YOLO("yolov10s.pt")
# 使用 COCO8 数据集训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 验证模型性能
metrics = model.val()
# 将优化后的模型导出为 ONNX 格式
model.export(format="onnx")这种简洁的语法让你开箱即用地使用自动混合精度、自动数据增强以及与 Weights & Biases 等工具的集成。
用例与建议#
选择 YOLOv10 还是 YOLOX,取决于你的具体项目需求、部署限制和生态系统偏好。
何时选择 YOLOv10#
以下场景适合使用 YOLOv10:
- 无 NMS 的实时检测:适用于需要从端到端检测中获益、无需使用非极大值抑制并能降低部署复杂度的应用。
- 均衡权衡速度与准确率:适用于需要在不同模型规模下兼顾推理速度和检测准确率的项目。
- 延迟稳定的应用:适用于推理时间可预测性至关重要的部署场景,例如机器人或自主系统。
何时选择 YOLOX#
以下情况推荐使用 YOLOX:
- 无锚框检测研究:学术研究使用 YOLOX 简洁的无锚框架构作为基线,以试验新的检测头或损失函数。
- 超轻量级边缘设备:部署到微控制器或旧款移动硬件时,YOLOX-Nano 变体极小的体积(0.91M 个参数)至关重要。
- SimOTA 标签分配研究:研究项目用于探索基于最优传输的标签分配策略及其对训练收敛的影响。
何时选择 Ultralytics (YOLO26)#
对于大多数新项目,Ultralytics YOLO26在性能与开发体验之间实现了最佳平衡:
- 无 NMS 的边缘部署:适用于要求推理延迟稳定且较低,同时不希望增加非极大值抑制后处理复杂度的应用。
- 仅使用 CPU 的环境:没有专用 GPU 加速的设备。在这类设备上,YOLO26n 的 CPU 运行速度最高可比 YOLO11n 快 43%。
- 小目标检测:具有挑战性的场景,例如无人机航拍图像或 IoT 传感器分析。在这些场景中,ProgLoss 和 STAL 可以提升微小目标的检测精度。
视觉 AI 的未来:YOLO26 登场#
YOLOv10 和 YOLOX 虽然是重要的里程碑,但该领域仍在不断发展。对于启动新项目的开发者,推荐使用 Ultralytics YOLO26。
Ultralytics YOLO26 于 2026 年 1 月发布,在 YOLOv10 引入 YOLO 模型的端到端、无需 NMS 的设计基础上进行了改进,并将其作为可选的一对一检测头(nms=False)。
YOLO26 还带来了其他几项改进:
- CPU 推理速度最高提升 43%:移除分布焦点损失 (DFL) 后,YOLO26n 在 CPU 上的运行速度比 YOLO11n 最多快 43%,这有助于在没有 GPU 的边缘设备上运行。
- MuSGD 优化器:受 LLM 训练启发,这种 SGD 与 Muon 的混合优化器能够加快收敛,并使训练过程更加稳定。
- ProgLoss + STAL:渐进式损失和小目标感知标签分配能够提升小目标识别能力,这对航空影像和 IoT 传感器至关重要。
- 多功能性:与纯粹用于目标检测的 YOLOX 不同,YOLO26 在单一统一的库中原生支持实例分割、语义分割、深度估计、图像分类、姿态估计和 OBB 检测。
若要以最简单的方式投入生产,开发者可以使用 Ultralytics Platform 标注数据集、在云端训练 YOLO26 模型,并以最少的配置完成导出或部署。
实际应用#
合适的模型取决于部署场景和行业。
高速视频分析#
对于处理密集视频流的场景(例如智慧城市交通管理),YOLOv10 凭借无 NMS 设计具有优势。移除 NMS 瓶颈可以保持延迟稳定,因此 YOLOv10 很适合与 BoT-SORT 等跟踪算法搭配使用。
旧版边缘设备部署#
对于较早期的学术环境,或基于 YOLOX 构建的旧版 Android 应用,如果维护较旧的 PyTorch 环境是可以接受的权衡,那么较小的模型(例如 YOLOX-Tiny)仍可能有用。
现代边缘设备与 IoT 设备#
对于新一代硬件部署场景,例如机器人、无人机和零售货架分析,推荐使用 YOLO26。它更低的 CPU 延迟和更强的小目标检测能力,使其非常适合自主导航和精细化库存管理。
如果想进一步拓展你的深度学习工具箱,也可以了解这些模型与其他方案的对比,例如灵活的 YOLO11 或基于 Transformer 的 RT-DETR。