Link to this sectionYOLOv10:实时端到端目标检测#
YOLOv10 于 2024 年 5 月发布,基于 Ultralytics Python package,由清华大学的研究人员开发,引入了一种实时目标检测的新方法,解决了之前 YOLO 版本在后处理和模型架构方面的缺陷。通过消除非极大值抑制(NMS)并优化各种模型组件,YOLOv10 在发布时以显著降低的计算开销实现了出色的性能。其 NMS-free 端到端设计开创了一种在 YOLO26 中得到进一步发展的方法。

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Link to this section概述#
实时目标检测旨在以低延迟准确预测图像中的物体类别和位置。YOLO 系列因其在性能和效率之间的平衡,一直处于该研究的前沿。然而,对 NMS 的依赖和架构上的低效阻碍了其实现最佳性能。YOLOv10 通过引入用于 NMS-free 训练的一致性双重分配以及整体效率与准确度驱动的模型设计策略,解决了这些问题。
Link to this section架构#
YOLOv10 的架构建立在之前 YOLO 模型优势的基础上,同时引入了多项关键创新。模型架构包含以下组件:
- Backbone:负责特征提取,YOLOv10 中的骨干网络使用了 CSPNet(跨阶段局部网络)的增强版本,以改善梯度流并减少计算冗余。
- Neck:该颈部结构旨在聚合来自不同尺度的特征并将其传递给头部。它包含用于有效多尺度特征融合的 PAN(路径聚合网络)层。
- One-to-Many Head:在训练期间为每个物体生成多个预测,以提供丰富的监督信号并提高学习准确度。
- One-to-One Head:在推理期间为每个物体生成单个最佳预测,从而消除对 NMS 的需求,进而降低延迟并提高效率。
Link to this section主要特性#
- NMS-Free Training:利用一致性双重分配消除对 NMS 的需求,从而降低推理延迟。
- Holistic Model Design:从效率和准确度角度对各种组件进行全面优化,包括轻量级分类头、空间通道解耦下采样和基于等级引导的块设计。
- Enhanced Model Capabilities:结合了大核卷积和部分自注意力模块,在不增加显著计算成本的情况下提高性能。
Link to this section模型变体#
YOLOv10 提供多种模型尺度,以满足不同的应用需求:
- YOLOv10n:适用于资源极其受限环境的 Nano 版本。
- YOLOv10s:平衡速度和准确度的 Small 版本。
- YOLOv10m:适用于通用目的的 Medium 版本。
- YOLOv10b:通过增加宽度以获得更高准确度的平衡版本。
- YOLOv10l:以增加计算资源为代价获得更高准确度的 Large 版本。
- YOLOv10x:用于实现最大准确度和性能的 Extra-large 版本。
Link to this section性能#
YOLOv10 在准确度和效率方面优于以前的 YOLO 版本和其他最先进的模型。例如,YOLOv10s 比 RT-DETR-R18 快 1.8 倍,且在 COCO 数据集上具有相似的 AP;而 YOLOv10b 在性能相同的情况下,比 YOLOv9-C 的延迟降低了 46%,参数减少了 25%。
延迟是在 T4 GPU 上使用 TensorRT FP16 测量的。
| 模型 | 输入大小 | APval | FLOPs (G) | 延迟 (ms) |
|---|---|---|---|---|
| [YOLOv10n][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
Link to this section方法论#
Link to this section用于 NMS-Free 训练的一致性双重分配#
YOLOv10 采用双标签分配,在训练期间结合了一对多(one-to-many)和一对一(one-to-one)策略,以确保丰富的监督和高效的端到端部署。一致的匹配度量标准协调了两种策略之间的监督,增强了推理期间的预测质量。
Link to this section整体效率-准确度驱动的模型设计#
Link to this section效率提升#
- 轻量级分类头:通过使用深度可分离卷积来减少分类头的计算开销。
- 空间通道解耦下采样:将空间缩减和通道调制解耦,以最大限度地减少信息丢失和计算成本。
- 等级引导的块设计:根据内在的阶段冗余调整块设计,确保最佳的参数利用率。
Link to this section准确度提升#
- 大核卷积:扩大感受野以增强特征提取能力。
- 部分自注意力 (PSA):结合自注意力模块以在最小开销下改进全局表征学习。
Link to this section实验与结果#
YOLOv10 已在 COCO 等标准基准测试上进行了广泛测试,展现了卓越的性能和效率。该模型在不同变体中实现了最先进的结果,与以前的版本和其他当代检测器相比,在延迟和准确度方面有了显著改进。
Link to this section对比#

与其他最先进的检测器相比:
- YOLOv10s / x 比 RT-DETR-R18 / R101 快 1.8 倍 / 1.3 倍,且准确度相似
- YOLOv10b 在相同准确度下,参数比 YOLOv9-C 少 25%,延迟降低 46%
- YOLOv10l / x 优于 YOLOv8l / x,AP 高出 0.3 / 0.5,且参数减少 1.8 倍 / 2.3 倍
以下是 YOLOv10 变体与其他最先进模型的详细对比:
| 模型 | 参数 (M) | FLOPs (G) | mAPval 50-95 | 延迟 (ms) | 前向延迟 (ms) |
|---|---|---|---|---|---|
| YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
| Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
| YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
| YOLOv10n | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
| YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
| Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
| YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
| YOLOv10s | 7.2 | 21.6 | 46.8 | 2.49 | 2.39 |
| RT-DETR-R18 | 20.0 | 60.0 | 46.5 | 4.58 | 4.49 |
| YOLOv6-3.0-M | 34.9 | 85.8 | 49.1 | 5.63 | 4.56 |
| Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
| YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
| YOLOv10m | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
| YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
| Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
| YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
| RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
| YOLOv10l | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
| YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
| RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
| YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
参数和 FLOPs 数值基于 model.fuse() 后的融合模型,该操作会合并 Conv 和 BatchNorm 层并移除辅助的一对多检测头。预训练检查点保留完整的训练架构,可能会显示更高的统计数值。
Link to this section使用示例#
用于使用 YOLOv10 对新图像进行预测。模型也可以通过 Ultralytics Platform 在云端 GPU 上进行训练:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()用于在自定义数据集上训练 YOLOv10:
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)Link to this section支持的任务和模式#
YOLOv10 模型系列提供了一系列模型,每个模型都针对高性能 目标检测 进行了优化。这些模型满足了不同的计算需求和精度要求,使其能够灵活应用于广泛的场景。
| 模型 | 文件名 | 任务 | 推理 | 验证 | 训练 | 导出 |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | 目标检测 | ✅ | ✅ | ✅ | ✅ |
Link to this section导出 YOLOv10#
由于 YOLOv10 引入了新的操作,Ultralytics 提供的导出格式目前并未全部支持。下表列出了已使用 Ultralytics 成功为 YOLOv10 转换的格式。如果你能提供贡献更改以添加对 YOLOv10 更多格式的导出支持,欢迎提交拉取请求 (Pull Request)。
| 导出格式 | 导出支持 | 导出模型推理 | 注意事项 |
|---|---|---|---|
| TorchScript | ✅ | ✅ | 标准 PyTorch 模型格式。 |
| ONNX | ✅ | ✅ | 部署支持广泛。 |
| OpenVINO | ✅ | ✅ | 针对 Intel 硬件优化。 |
| TensorRT | ✅ | ✅ | 针对 NVIDIA GPU 优化。 |
| CoreML | ✅ | ✅ | 仅限 Apple 设备。 |
| TF SavedModel | ✅ | ✅ | TensorFlow 的标准模型格式。 |
| TF GraphDef | ✅ | ✅ | 旧版 TensorFlow 格式。 |
| TF Lite | ✅ | ✅ | 针对移动端和嵌入式设备优化。 |
| TF Edge TPU | ✅ | ✅ | 专门针对 Google 的 Edge TPU 设备。 |
| TF.js | ✅ | ✅ | 用于浏览器环境的 JavaScript。 |
| PaddlePaddle | ❌ | ❌ | 在中国流行;全球支持较少。 |
| NCNN | ✅ | ❌ | 层 torch.topk 不存在或未注册 |
Link to this section结论#
YOLOv10 在发布时通过解决先前 YOLO 版本的不足并融入创新的设计策略,树立了实时目标检测的新标准。其无 NMS (NMS-free) 方法引领了 YOLO 系列端到端目标检测的先河。关于具备更高性能和无 NMS 推理的最新 Ultralytics 模型,请参阅 YOLO26。
Link to this section引用与致谢#
我们感谢来自 清华大学 的 YOLOv10 作者们,感谢他们对 Ultralytics 框架所做的广泛研究和重大贡献:
@article{THU-MIGyolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Ao Wang, Hui Chen, Lihao Liu, et al.},
journal={arXiv preprint arXiv:2405.14458},
year={2024},
institution={Tsinghua University},
license = {AGPL-3.0}
}有关详细的实现、架构创新和实验结果,请参阅清华大学团队撰写的 YOLOv10 研究论文 和 GitHub 仓库。
Link to this section常见问题解答#
Link to this section什么是 YOLOv10,它与之前的 YOLO 版本有何不同?#
YOLOv10 由 清华大学 的研究人员开发,为实时目标检测引入了多项关键创新。它通过在训练过程中采用一致的双重分配 (consistent dual assignments) 以及优化的模型组件,消除了对非极大值抑制 (NMS) 的需求,从而在降低计算开销的同时实现了卓越的性能。有关其架构和关键功能的更多详细信息,请查看 YOLOv10 概览 部分。
Link to this section如何开始使用 YOLOv10 进行推理?#
为了方便推理,你可以使用 Ultralytics YOLO Python 库或命令行界面 (CLI)。以下是使用 YOLOv10 预测新图像的示例:
from ultralytics import YOLO
# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()如需更多使用示例,请访问我们的 使用示例 部分。
Link to this sectionYOLOv10 提供哪些模型变体,它们的用途是什么?#
YOLOv10 提供多种模型变体以满足不同的使用场景:
- YOLOv10n:适用于资源极其受限的环境
- YOLOv10s:速度与精度的平衡
- YOLOv10m:通用用途
- YOLOv10b:更高的精度,增加了宽度
- YOLOv10l:以计算资源为代价的高精度
- YOLOv10x:极致的精度与性能
每个变体都专为不同的计算需求和精度要求而设计,使其能够灵活应用于各种场景。探索 模型变体 部分以获取更多信息。
Link to this sectionYOLOv10 中的无 NMS 方法如何提高性能?#
YOLOv10 通过在训练时采用一致的双重分配,消除了推理期间对非极大值抑制 (NMS) 的需求。这种方法降低了推理延迟并提高了预测效率。该架构还包含一个用于推理的一对一 (one-to-one) 检测头,确保每个目标仅得到一个最佳预测。有关详细解释,请参阅 针对无 NMS 训练的一致双重分配 部分。
Link to this section在哪里可以找到 YOLOv10 模型的导出选项?#
YOLOv10 支持多种导出格式,包括 TorchScript、ONNX、OpenVINO 和 TensorRT。然而,由于 YOLOv10 引入了新操作,Ultralytics 提供的并非所有导出格式目前都受到支持。有关支持的格式详情及导出说明,请访问 导出 YOLOv10 部分。
Link to this sectionYOLOv10 模型的性能基准是什么?#
YOLOv10 在精度和效率上均超越了以往的 YOLO 版本和其他先进模型。例如,在 COCO 数据集上,YOLOv10s 比 RT-DETR-R18 快 1.8 倍且具有相似的 AP。与 YOLOv9-C 相比,YOLOv10b 在性能相同的情况下,延迟降低了 46%,参数量减少了 25%。详细的基准测试可以在 比较 部分找到。