跳至内容

YOLOv10:实时端到端物体检测

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

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 有多种型号,可满足不同的应用需求:

  • 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 标准 PyTorch模型格式。
ONNX 广泛支持部署。
OpenVINO 针对Intel 硬件进行了优化。
TensorRT 针对NVIDIA GPU 进行了优化。
CoreML 仅限于苹果设备。
TF SavedModel TensorFlow的标准模型格式。
TF GraphDef 传统的TensorFlow 格式。
TF 轻型 针对移动和嵌入式进行了优化。
TF 边缘TPU 专用于Google'EdgeTPU 设备。
TF.js 供浏览器使用的 JavaScript 环境。
PaddlePaddle 在中国很受欢迎;全球支持较少。
NCNN 层数 torch.topk 不存在或未登记

结论

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% 的参数。详细的基准测试结果请参见 "比较"部分。

📅创建于 6 个月前 ✏️已更新 2 个月前

评论