Ultralytics YOLO27:
Get Started

YOLOv10:实时端到端目标检测#

YOLOv10 于 2024 年 5 月发布,由清华大学的研究人员基于 Ultralytics Python 包构建,提出了一种全新的实时目标检测方法,解决了以往 YOLO 版本在后处理和模型架构方面的不足。通过移除非极大值抑制 (NMS) 并优化多个模型组件,YOLOv10 在发布时以显著降低的计算开销实现了出色的性能。其无需 NMS 的端到端设计开创了一种新方法,并在 YOLO26 中得到进一步发展。

YOLOv10 用于无 NMS 训练的一致双重分配策略



观看: 如何使用 Ultralytics 在 SKU-110k 数据集上训练 YOLOv10 | 零售数据集

概述#

实时目标检测旨在以较低延迟准确预测图像中物体的类别和位置。YOLO 系列因在性能与效率之间取得平衡,一直处于这项研究的前沿。然而,对 NMS 的依赖和架构效率低下的问题阻碍了性能达到最佳水平。YOLOv10 通过引入一致双重分配来支持无 NMS 训练,并采用以效率和精度为导向的整体模型设计策略,从而解决了这些问题。

架构#

YOLOv10 的架构在发挥以往 YOLO 模型优势的基础上,引入了多项关键创新。模型架构由以下组件构成:

  1. 主干网络:负责特征提取;YOLOv10 的主干网络采用增强版 CSPNet(跨阶段局部网络),以改善梯度流并减少计算冗余。
  2. 颈部网络:颈部网络旨在聚合不同尺度的特征,并将其传递给检测头。它包含 PAN(路径聚合网络)层,用于有效融合多尺度特征。
  3. 一对多检测头:在训练过程中为每个物体生成多个预测结果,以提供丰富的监督信号并提高学习精度。
  4. 一对一检测头:在推理期间为每个目标生成一个最佳预测,无需使用 NMS,从而降低延迟并提高效率。

主要功能#

  1. 无 NMS 训练:使用一致的双重分配策略,无需使用 NMS,从而降低推理延迟。
  2. 整体模型设计:从效率和准确率两个角度全面优化各个组件,包括轻量级分类头、空间与通道解耦下采样,以及秩引导的模块设计。
  3. 增强模型能力:采用大核卷积和部分自注意力模块,在不显著增加计算成本的情况下提升性能。

模型变体#

YOLOv10 提供多种模型规模,以满足不同应用需求:

  • YOLOv10n:Nano 版本,适用于资源极其受限的环境。
  • YOLOv10s:Small 版本,兼顾速度与准确率。
  • YOLOv10m:Medium 版本,适用于通用场景。
  • YOLOv10b:加宽的平衡版本,可实现更高准确率。
  • YOLOv10l:Large 版本,以增加计算资源为代价实现更高准确率。
  • YOLOv10x:Extra-large 版本,提供最高准确率和性能。

性能#

在准确率和效率方面,YOLOv10 优于之前的 YOLO 版本和其他先进模型。例如,在 COCO 数据集上,YOLOv10s 的速度比 RT-DETR-R18 快 1.8 倍,AP 相近;YOLOv10b 的延迟比 YOLOv9-C 低 46%,参数量少 25%,性能相同。

性能

延迟是在 T4 GPU 上使用 TensorRT FP16 测得的。

模型输入尺寸APvalFLOPs (G)延迟 (ms)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

方法#

用于无 NMS 训练的一致双重分配策略#

YOLOv10 使用双重标签分配策略,在训练期间结合一对多和一对一策略,以确保充分监督并实现高效的端到端部署。Ultralytics 的预测和验证默认使用带 NMS 的一对多检测头;设置 nms=False 即可选择无 NMS 检测头。一致的匹配指标使两种策略的监督保持一致,从而提升推理时预测的质量。

整体效率-准确率驱动的模型设计#

效率提升#

  1. 轻量级分类头:通过使用深度可分离卷积,降低分类头的计算开销。
  2. 空间与通道解耦下采样:将空间缩减与通道调制解耦,以尽量减少信息损失和计算成本。
  3. 秩引导的模块设计:根据各阶段的内在冗余程度调整模块设计,确保参数得到最佳利用。

准确率提升#

  1. 大核卷积:扩大感受野,增强特征提取能力。
  2. 部分自注意力 (PSA):引入自注意力模块,以极低的额外开销提升全局表征学习能力。

实验与结果#

YOLOv10 已在 COCO 等标准基准上进行了广泛测试,展现出卓越的性能和效率。该模型的不同变体均取得了先进水平的结果;与之前的版本和其他同期检测器相比,延迟和准确率均有显著提升。

比较#

YOLOv10 与 SOTA 目标检测器的比较

与其他先进检测器相比:

  • 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 论文,是在该论文自身的评测协议下测得,因此不能直接与 Ultralytics 模型页面上的数值比较:

模型参数
(M)
FLOPs
(G)
mAP验证集
50-95
延迟
(ms)
前向延迟
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.738.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.32.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.14.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.27.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.60

参数量和 FLOPs 数值针对执行 model.fuse() 后的融合模型;此操作会合并 Conv 和 BatchNorm 层,并移除辅助的一对多检测头。预训练检查点保留完整的训练架构,因此显示的数值可能更高。

使用示例#

你也可以通过 Ultralytics Platform 使用云端 GPU 训练模型。使用 YOLOv10 对新图像进行预测:

示例
from ultralytics import YOLO

# 加载预训练的 YOLOv10n 模型
model = YOLO("yolov10n.pt")

# 对图像执行目标检测
results = model("image.jpg")

# 显示结果
results[0].show()

在自定义数据集上训练 YOLOv10:

示例
from ultralytics import YOLO

# 从头开始加载 YOLOv10n 模型
model = YOLO("yolov10n.yaml")

# 训练模型
model.train(data="coco8.yaml", epochs=100, imgsz=640)

支持的任务和模式#

YOLOv10 系列提供多种模型,每种都针对高性能目标检测进行了优化。这些模型可满足不同的计算需求和准确率要求,适用于广泛的应用场景。

模型文件名任务训练验证推理导出
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.pt目标检测✅✅✅✅

导出 YOLOv10#

由于 YOLOv10 引入了新的运算,目前 Ultralytics 提供的导出格式并非全部受支持。下表列出了已使用 Ultralytics 成功转换为 YOLOv10 的格式。如果你能为 YOLOv10 增加其他格式的导出支持,欢迎提交拉取请求来贡献代码。

导出格式导出支持导出模型推理备注
TorchScript✅✅标准的 PyTorch 模型格式。
ONNX✅✅广泛支持部署。
OpenVINO✅✅针对 Intel 硬件进行了优化。
TensorRT✅✅针对 NVIDIA GPU 进行了优化。
CoreML✅✅仅适用于 Apple 设备。
TF SavedModel✅✅TensorFlow 的标准模型格式。
TF GraphDef✅✅旧版 TensorFlow 格式。
TF Edge TPU✅✅专用于 Google Edge TPU 设备。
LiteRT✅✅针对移动设备、嵌入式设备和浏览器 (LiteRT.js) 进行了优化。
PaddlePaddle❌❌在中国广受欢迎;全球支持较少。
NCNN✅❌NCNN 运行时不支持 torch.topk 运算符。

结论#

YOLOv10 发布时,通过解决之前 YOLO 版本的不足并采用创新的设计策略,为实时目标检测树立了新标准。其无 NMS 方法开创了 YOLO 系列的端到端目标检测。要了解性能更出色且支持无 NMS 推理的最新 Ultralytics 模型,请参阅 YOLO26。

引用与致谢#

我们谨此感谢来自清华大学的 YOLOv10 作者,他们进行了广泛研究,并为 Ultralytics 框架作出了重要贡献:

引用格式
@inproceedings{wang2024yolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
  booktitle={Advances in Neural Information Processing Systems},
  doi = {10.52202/079017-3429},
  url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
  volume={37},
  pages={107984--108011},
  year={2024}
}

如需了解详细实现、架构创新和实验结果,请参阅清华大学团队撰写的 YOLOv10 研究论文和 GitHub 代码库。

常见问题#

  • 由清华大学研究人员开发的 YOLOv10,为实时目标检测带来了多项关键创新。它在训练期间采用一致的双重分配策略,并优化模型组件,从而无需使用非极大值抑制 (NMS),以更低的计算开销实现卓越性能。有关其架构和主要特性的更多详情,请查看 YOLOv10 概述部分。

  • 为了便于推理,你可以使用 Ultralytics YOLO Python 库或命令行界面(CLI)。下面是使用 YOLOv10 对新图像进行预测的示例:

    示例
    from ultralytics import YOLO
    
    # 加载预训练的 YOLOv10n 模型
    model = YOLO("yolov10n.pt")
    results = model("image.jpg")
    results[0].show()

    如需查看更多用法示例,请访问用法示例部分。

  • YOLOv10 提供多种模型变体,以适应不同的使用场景:

    • YOLOv10n:适用于资源极其受限的环境
    • YOLOv10s:兼顾速度与精度
    • YOLOv10m:适用于通用场景
    • YOLOv10b:通过增加网络宽度来提升精度
    • YOLOv10l:以增加计算资源消耗为代价,实现高精度
    • YOLOv10x:精度和性能最高

    每种变体都针对不同的计算需求和精度要求进行设计,因此适用于多种应用场景。请参阅模型变体部分,了解更多信息。

  • YOLOv10 采用一致的双重分配方式进行训练,使其一对一检测头能够为每个目标生成唯一的最佳预测结果,因此推理时无需进行非极大值抑制(NMS)。Ultralytics 的预测和验证默认使用带有 NMS 的一对多检测头;设置 nms=False 即可选择免 NMS 检测头并跳过 NMS 步骤。如需详细说明,请参阅用于免 NMS 训练的一致双重分配部分。

  • YOLOv10 支持多种导出格式,包括 TorchScript、ONNX、OpenVINO 和 TensorRT。不过,由于 YOLOv10 使用了新的操作,目前 Ultralytics 提供的导出格式并非全部都受支持。如需了解支持的格式和导出说明,请访问导出 YOLOv10部分。

  • YOLOv10 在精度和效率方面都优于以往的 YOLO 版本和其他先进模型。例如,在 COCO 数据集上,YOLOv10s 的速度比 RT-DETR-R18 快 1.8 倍,同时 AP 相近。YOLOv10b 在性能相同的情况下,延迟降低 46%,参数量减少 25%,优于 YOLOv9-C。详细基准数据请参阅对比部分。

评论