跳转至内容

YOLOv10:实时端到端物体检测

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

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



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

概述

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

架构

YOLOv10 的架构借鉴了以往YOLO 模型的优势,同时引入了几项关键创新。模型架构由以下部分组成:

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

主要功能

  1. NMS 训练:利用一致的双重分配来消除对NMS 的需求,从而减少推理延迟
  2. 整体模型设计:从效率和准确性的角度对各种组件进行全面优化,包括轻量级分类 Head、空间通道解耦下采样和秩引导块设计。
  3. 增强的模型功能: 结合了大内核卷积和部分自注意力模块,以提高性能,而无需显着的计算成本。

模型变体

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

  • YOLOv10n: 适用于资源极其受限环境的 Nano 版本。
  • YOLOv10s: 平衡速度和精度的小型版本。
  • YOLOv10m: 适用于通用用途的中型版本。
  • YOLOv10b: 平衡版本,宽度增加,精度更高。
  • YOLOv10l: 大型版本,精度更高,但会增加计算资源消耗。
  • YOLOv10x: 超大型版本,可实现最高的精度和性能。

性能

在准确性和效率方面,YOLOv10 优于以前的YOLO 版本和其他最先进的模型。例如,在COCO 数据集上,YOLOv10s 比具有类似AP 的RT-DETR快 1.8 倍;在性能相同的情况下,YOLOv10b 比YOLOv9减少了 46% 的延迟和 25% 的参数。

性能

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

模型输入尺寸APFLOPs (G)延迟 (ms)
YOLOv10n64038.56.71.84
YOLOv10s64046.321.62.49
YOLOv10m64051.159.14.74
YOLOv10b64052.592.05.74
YOLOv10l64053.2120.37.28
YOLOv10x64054.4160.410.70

方法

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

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

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

效率提升

  1. 轻量级分类 Head:通过使用深度可分离卷积来减少分类 Head 的计算开销。
  2. 空间通道解耦下采样:解耦空间缩减和通道调制,以最大限度地减少信息丢失和计算成本。
  3. 秩引导块设计:基于内在阶段冗余调整块设计,确保最佳参数利用率。

精度提升

  1. 大卷积核:扩大感受野以增强特征提取能力。
  2. Partial Self-Attention (PSA):结合自注意力模块以提高全局表示学习能力,同时最大限度地减少开销。

实验与结果

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

对比

YOLOv10 与 SOTA 物体探测器的比较

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

  • 在相似的精度下,YOLOv10s / x 比 RT-DETR-R18 / R101 快 1.8 倍 / 1.3 倍
  • 与YOLOv9 相比,在精度相同的情况下,YOLOv9 的参数减少了 25%,延迟降低了 46
  • YOLOv10l / x 的性能比YOLOv8l / x高 0.3AP / 0.5AP ,参数少 1.8× / 2.3×

性能

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

模型参数量
(M)
FLOPs
(G)
mAPval
50-95
延迟
(ms)
延迟-前向
(毫秒)
YOLOv6.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.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.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.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

使用示例

使用YOLOv10 预测新图像:

示例

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()
# 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 提供的所有导出格式。如果您能为YOLOv10 增加Ultralytics 其他格式的导出支持做出贡献,请随时提出申请。

导出格式导出支持导出的模型推理备注
TorchScript标准 PyTorch 模型格式。
ONNX被广泛支持用于部署。
OpenVINO针对 Intel 硬件进行了优化。
TensorRT针对 NVIDIA GPU 进行了优化。
CoreML仅限于苹果设备。
TF SavedModelTensorFlow 的标准模型格式。
TF GraphDef传统的 TensorFlow 格式。
TF Lite针对移动和嵌入式设备优化。
TF Edge TPU专门用于 Google 的 Edge TPU 设备。
TF.js用于浏览器的 JavaScript 环境。
PaddlePaddle在中国很受欢迎;但全球支持较少。
NCNNtorch.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 pretrained YOLOv10n 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 提供多种型号,以满足不同的使用情况:

  • YOLOv10n: 适用于资源极其受限的环境
  • YOLOv10s: 平衡速度和精度
  • YOLOv10m: 通用
  • YOLOv10b: 宽度增加,精度更高
  • YOLOv10l: 高精度,但会消耗计算资源
  • YOLOv10x: 最高的精度和性能

每个变体都针对不同的计算需求和精度要求而设计,使其能够适用于各种应用。请浏览模型变体部分以获取更多信息。

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

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

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

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

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

YOLOv10 在准确性和效率方面都优于以前的YOLO 版本和其他最先进的模型。例如,在COCO 数据集上,YOLOv10s 比具有类似AP 的RT-DETR 快 1.8 倍。在性能相同的情况下,YOLOv10b 比YOLOv9 减少了 46% 的延迟和 25% 的参数。详细基准可参见比较部分。



📅 1 年前创建 ✏️ 0 天前更新
glenn-jocherRizwanMunawarpderrengerleonnilY-T-GLaughing-qMatthewNoyceUltralyticsAssistanthasanghaffari93zhixuweiabirami-vinaBurhan-Q

评论