YOLOv10:实时端到端目标检测

YOLOv10, released in May 2024 and built on the Ultralytics Python package by researchers at Tsinghua University, introduces a new approach to real-time object detection, addressing both the post-processing and model architecture deficiencies found in previous YOLO versions. By eliminating non-maximum suppression (NMS) and optimizing various model components, YOLOv10 achieved excellent performance with significantly reduced computational overhead at its time of release. Its NMS-free end-to-end design pioneered an approach that has been further developed in YOLO26.

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



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

概述

实时目标检测旨在以低延迟准确预测图像中的目标类别和位置。由于在性能和效率之间取得了平衡,YOLO 系列一直处于这项研究的最前沿。然而,对 NMS 的依赖和架构上的低效阻碍了性能的进一步优化。YOLOv10 通过引入用于无 NMS 训练的一致性双重分配以及全方位的效率-精度驱动模型设计策略来解决这些问题。

架构

YOLOv10 的架构建立在以往 YOLO 模型优势的基础上,同时引入了多项关键创新。模型架构包含以下组件:

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

主要特性

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

模型变体

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

  • YOLOv10n:适用于资源极其受限环境的 Nano 版本。
  • YOLOv10s:在速度和精度之间取得平衡的小型版本。
  • YOLOv10m:用于通用用途的中等版本。
  • YOLOv10b:通过增加宽度以获得更高精度的平衡版本。
  • YOLOv10l:以增加计算资源为代价换取更高精度的大型版本。
  • YOLOv10x:实现最大精度和性能的超大型版本。

性能

在精度和效率方面,YOLOv10 优于之前的 YOLO 版本及其他最先进的模型。例如,YOLOv10s 在 COCO 数据集上比 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 在训练期间采用双重标签分配,结合了多对一和一对一策略,以确保丰富的监督和高效的端到端部署。一致性匹配度量标准协调了两种策略之间的监督,增强了推理过程中的预测质量。

整体效率-精度驱动的模型设计

效率增强

  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 高 0.3 AP / 0.5 AP,同时参数减少 1.8 倍 / 2.3 倍
性能

以下是 YOLOv10 变体与其他最先进模型的详细对比:

模型参数量
(M)
FLOPs
(G)
mAPval
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.739.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.82.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.34.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.47.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 层并移除辅助的一对多检测头。预训练检查点保留了完整的训练架构,因此可能显示更高的计数值。

使用示例

用于使用 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)

支持的任务和模式

YOLOv10 模型系列提供了一系列模型,每个模型都针对高性能 Object Detection 进行了优化。这些模型满足了不同的计算需求和精度要求,使其在广泛的应用中具有多功能性。

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

导出 YOLOv10

由于 YOLOv10 引入了新操作,Ultralytics 提供的导出格式并非全部受支持。下表概述了哪些格式已使用 Ultralytics 成功转换为 YOLOv10。如果你能够 提供贡献更改 以增加对 YOLOv10 更多导出格式的支持,欢迎提交 pull request。

导出格式导出支持导出模型推理备注
TorchScript标准 PyTorch 模型格式。
ONNX部署广泛支持。
OpenVINO针对 Intel 硬件优化。
TensorRT针对 NVIDIA GPUs 优化。
CoreML仅限于 Apple 设备。
TF SavedModelTensorFlow 的标准模型格式。
TF GraphDef传统 TensorFlow 格式。
TF Lite针对移动端和嵌入式设备优化。
TF Edge TPU专用于 Google 的 Edge TPU 设备。
TF.js用于浏览器环境的 JavaScript 环境。
PaddlePaddle在中国流行;全球支持度较低。
NCNNtorch.topk 不存在或未注册

总结

YOLOv10 在发布时通过解决先前 YOLO 版本中的缺陷并整合创新设计策略,为实时目标检测设定了新标准。其无 NMS 的方法开创了 YOLO 系列中端到端目标检测的先河。有关性能更高且支持无 NMS 推理的最新 Ultralytics 模型,请参阅 YOLO26

引文与致谢

我们要感谢来自 Tsinghua University 的 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 research paperGitHub repository

常见问题 (FAQ)

什么是 YOLOv10,它与以前的 YOLO 版本有何不同?

YOLOv10 由 Tsinghua University 的研究人员开发,为实时目标检测引入了几项关键创新。它通过在训练期间采用一致的双重分配并优化模型组件,消除了对非极大值抑制(NMS)的需求,从而以更低的计算开销实现了卓越的性能。有关其架构和主要功能的更多详细信息,请查看 YOLOv10 overview 部分。

我该如何开始使用 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()

有关更多使用示例,请访问我们的 Usage Examples 部分。

YOLOv10 提供哪些模型变体以及它们的用例是什么?

YOLOv10 提供了几种模型变体,以满足不同的用例:

  • YOLOv10n:适用于资源极其受限的环境
  • YOLOv10s: 平衡速度与精度
  • YOLOv10m: 通用型
  • YOLOv10b: 通过增加宽度获得更高精度
  • YOLOv10l: 以计算资源为代价换取高精度
  • YOLOv10x: 最高精度与性能

每个版本都针对不同的计算需求和精度要求进行了设计,使其能广泛应用于各种场景。更多信息请查看 Model Variants 部分。

YOLOv10 的无 NMS 方法如何提升性能?

YOLOv10 通过在训练时采用一致的双重分配,消除了推理过程中对非极大值抑制(NMS)的需求。这种方法降低了推理延迟并提高了预测效率。该架构还包含一个用于推理的“一对一”检测头,确保每个物体只有一个最佳预测。详细说明请查看 Consistent Dual Assignments for NMS-Free Training 部分。

我在哪里可以找到 YOLOv10 模型的导出选项?

YOLOv10 支持多种导出格式,包括 TorchScript、ONNX、OpenVINO 和 TensorRT。然而,由于其采用了新的运算方式,Ultralytics 提供的部分导出格式目前尚不支持 YOLOv10。有关支持格式的详情及导出说明,请访问 Exporting YOLOv10 部分。

YOLOv10 模型的性能基准测试结果如何?

YOLOv10 在精度和效率方面均优于以往的 YOLO 版本及其他先进模型。例如,在 COCO 数据集上,YOLOv10s 在保持相似 AP 的情况下,速度比 RT-DETR-R18 快 1.8 倍。在性能相当的情况下,YOLOv10b 比 YOLOv9-C 的延迟降低了 46%,参数量减少了 25%。详细的基准测试结果可参阅 Comparisons 部分。

评论