跳至内容

YOLOv10: Real-Time End-to-End Object Detection

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

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



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

概述

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

建筑学

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

  1. Backbone: Responsible for feature extraction, the backbone in YOLOv10 uses an enhanced version of CSPNet (Cross Stage Partial Network) to improve gradient flow and reduce computational redundancy.
  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%。

模型输入尺寸APvalFLOP (G)延迟(毫秒)
YOLOv10-N64038.56.71.84
YOLOv10-S64046.321.62.49
YOLOv10-M64051.159.14.74
YOLOv10-B64052.592.05.74
YOLOv10-L64053.2120.37.28
YOLOv10-X64054.4160.410.70

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

方法

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

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

Holistic Efficiency-Accuracy Driven Model Design

提高效率

  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
延迟
(毫秒)
Latency-forward
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
金色-YOLO-N5.612.139.62.921.82
YOLOv8-N3.28.737.36.161.77
YOLOv10-N2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
金色-YOLO-S21.546.045.43.822.73
YOLOv8-S11.228.644.97.072.33
YOLOv10-S7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
金色-YOLO-M41.387.549.86.385.45
YOLOv8-M25.978.950.69.505.09
YOLOv10-M15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
金色-YOLO-L75.1151.751.810.659.78
YOLOv8-L43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10-L24.4120.353.47.287.21
YOLOv8-X68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10-X29.5160.454.410.7010.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 型号系列提供一系列型号,每种型号都针对高性能 目标检测进行了优化。这些模型可满足不同的计算需求和精度要求,使其适用于各种应用。

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

导出 YOLOv10

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

导出格式Export SupportExported Model Inference说明
TorchScriptStandard PyTorch model format.
ONNXWidely supported for deployment.
OpenVINOOptimized for Intel hardware.
TensorRTOptimized for NVIDIA GPUs.
CoreMLLimited to Apple devices.
TF SavedModelTensorFlow's standard model format.
TF GraphDefLegacy TensorFlow format.
TF 轻型Optimized for mobile and embedded.
TF 边缘TPUSpecific to Google's Edge TPU devices.
TF.jsJavaScript environment for browser use.
PaddlePaddlePopular in China; less global support.
NCNNLayer 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% 的参数。详细的基准测试结果请参见 "比较"部分。

📅 Created 5 months ago ✏️ Updated 28 days ago

评论