跳至内容

YOLOv10:实时端到端物体检测

YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv10 在显著降低计算开销的同时实现了最先进的性能。大量实验证明,YOLOv10 在多个模型尺度上实现了卓越的精度-延迟权衡。

YOLOv10 为无 NMS 培训提供一致的双重分配

概述

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

建筑学

YOLOv10 的结构建立在以前YOLO 模型的基础上,同时引入了几项关键创新。模型架构由以下部分组成:

  1. 主干网YOLOv10 中的主干网负责特征提取,它使用了增强版的 CSPNet(跨阶段部分网络),以改善梯度流并减少计算冗余。
  2. 颈部颈部设计用于汇聚不同尺度的特征,并将其传递到头部。它包括 PAN(路径聚合网络)层,可实现有效的多尺度特征融合。
  3. 一对多头:在训练过程中为每个对象生成多个预测,以提供丰富的监督信号并提高学习准确性。
  4. 一对一磁头:在推理过程中为每个对象生成一个最佳预测,无需 NMS,从而减少延迟并提高效率。

主要功能

  1. 无 NMS 训练:利用一致的双重分配来消除对 NMS 的需求,从而减少推理延迟。
  2. 整体模型设计:从效率和准确性的角度全面优化各种组件,包括轻量级分类头、空间通道去耦向下采样和等级引导块设计。
  3. 增强的模型功能:纳入大核卷积和部分自注意模块,在不增加大量计算成本的情况下提高性能。

型号

YOLOv10 有多种型号,可满足不同的应用需求:

  • YOLOv10-N:用于资源极其有限环境的纳米版本。
  • YOLOv10-S:兼顾速度和精度的小型版本。
  • YOLOv10-M:通用中型版本。
  • YOLOv10-B:平衡型,宽度增加,精度更高。
  • YOLOv10-L:大型版本,精度更高,但计算资源增加。
  • YOLOv10-X:超大型版本可实现最高精度和性能。

性能

在准确性和效率方面,YOLOv10 优于YOLO 以前的版本和其他最先进的模型。例如,在 COCO 数据集上,YOLOv10-S 的速度是RT-DETR-R18 的 1.8 倍,而 YOLOv10-B 与 YOLOv9-C 相比,在性能相同的情况下,延迟减少了 46%,参数减少了 25%。

模型 输入尺寸 APval FLOP (G) 延迟(毫秒)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

使用TensorRT FP16 在 T4GPU 上测量的延迟。

方法

一致的双重任务分配,实现无 NMS 培训

YOLOv10 采用双重标签分配,在训练过程中将一对多和一对一策略结合起来,以确保丰富的监督和高效的端到端部署。一致匹配度量使两种策略之间的监督保持一致,从而提高了推理过程中的预测质量。

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

提高效率

  1. 轻量级分类头:通过使用深度可分离卷积,减少分类头的计算开销。
  2. 空间信道解耦向下采样:将空间缩减与信道调制解耦,最大限度地减少信息损失和计算成本。
  3. 梯级引导程序块设计:根据固有阶段冗余调整模块设计,确保参数的最佳利用。

精度提升

  1. 大核卷积扩大感受野,增强特征提取能力。
  2. 部分自我关注(PSA):纳入自我关注模块,以最小的开销改进全局表征学习。

实验和结果

YOLOv10 在 COCO 等标准基准上进行了广泛测试,显示出卓越的性能和效率。与以前的版本和其他当代探测器相比,YOLOv10 在延迟和准确性方面都有显著提高。

比较

YOLOv10 与 SOTA 物体探测器的比较

与其他最先进的探测器相比:

  • YOLOv10-S / X 比RT-DETR-R18 / R101 å¿« 1.8 倍 / 1.3 倍,精度相似
  • 在精度相同的情况下,YOLOv10-B 比 YOLOv9-C 减少了 25% 的参数,延迟时间缩短了 46%
  • YOLOv10-L / X 的性能比YOLOv8-L / X 高 0.3 AP / 0.5 AP,参数少 1.8× / 2.3×

以下是 YOLOv10 变体与其他先进机型的详细比较:

模型 参数
(M)
FLOPs
(G)
mAPval
50-95
延迟
(毫秒)
延迟-前向
(毫秒)
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
金色-YOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
金色-YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 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
金色-YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
金色-YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 29.5 160.4 54.4 10.70 10.60

使用示例

使用 YOLOv10 预测新图像:

示例

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

用于在自定义数据集上训练 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)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

支持的任务和模式

YOLOv10 型号系列提供一系列型号,每种型号都针对高性能 目标检测进行了优化。这些模型可满足不同的计算需求和精度要求,使其适用于各种应用。

模型 文件名 任务 推论 验证 培训 出口
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt 物体检测 ✅ ✅ ✅ ✅

导出 YOLOv10

由于 YOLOv10 引入了新操作,并非所有导出格式都由 Ultralytics 目前受支持。下表概述了已成功转换的格式 Ultralytics 对于 YOLOv10。如果您能够 提供贡献更改 以添加对 YOLOv10 的其他格式的导出支持,请随时打开拉取请求。

导出格式 支持
TorchScript ✅
ONNX ✅
OpenVINO ✅
TensorRT ✅
CoreML ❌
TF SavedModel ❌
TF GraphDef ❌
TF 轻型 ❌
TF 边缘TPU ❌
TF.js ❌
PaddlePaddle ❌
NCNN ❌

结论

YOLOv10 解决了以前YOLO 版本的不足之处,并采用了创新的设计策略,为实时目标检测设定了新标准。YOLOv10 能够以较低的计算成本实现较高的精确度,是各种实际应用的理想选择。

引文和致谢

我们要感谢清华大学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 存储库。

常见问题

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

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

如何开始使用 YOLOv10 进行推理?

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

示例

from ultralytics import YOLO

# Load the pre-trained YOLOv10-N model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

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

YOLOv10 提供哪些型号,它们有哪些用途?

YOLOv10 提供多种型号,以满足不同的使用情况:

  • YOLOv10-N:适用于资源极其有限的环境
  • YOLOv10-S:兼顾速度与精度
  • YOLOv10-M:一般用途
  • YOLOv10-B:宽度增加,精度更高
  • YOLOv10-L:以计算资源为代价实现高精度
  • YOLOv10-X:最高精度和性能

每个变体都针对不同的计算需求和精度要求而设计,因此可用于各种应用。了解更多信息,请浏览模型变体部分。

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

YOLOv10 通过在训练中采用一致的双重分配,消除了推理过程中对非最大抑制(NMS)的需求。这种方法减少了推理延迟,提高了预测效率。该架构还包括一对一的推理头,确保每个对象都能获得单一最佳预测。有关详细解释,请参阅 "无 NMS 训练的一致双分配"部分。

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

YOLOv10 支持多种导出格式,包括TorchScript,ONNX,OpenVINO 和TensorRT 。不过,由于Ultralytics 提供的新操作,YOLOv10 目前并不支持所有导出格式。有关支持格式和导出说明的详细信息,请访问导出 YOLOv10部分。

YOLOv10 型号的性能基准是什么?

YOLOv10 在准确性和效率方面都优于YOLO 以前的版本和其他最先进的模型。例如,在 COCO 数据集上,YOLOv10-S 的速度是RT-DETR-R18 的 1.8 倍,而 AP 却与之相似。在性能相同的情况下,YOLOv10-B 比 YOLOv9-C 减少了 46% 的延迟和 25% 的参数。详细的基准测试结果请参见 "比较"部分。



创建于 2024-05-25,更新于 2024-07-04
作者:glenn-jocher(5)、zhixuwei(1)、abirami-vina(1)、RizwanMunawar(3)、Burhan-Q(1)

评论