Ultralytics YOLO27:

YOLOv10:实时端到端目标检测#

YOLOv10 于 2024 年 5 月发布,由清华大学的研究人员基于 Ultralytics Python 软件包构建,引入了一种全新的实时目标检测方法,解决了以往 YOLO 版本在后处理和模型架构方面存在的不足。通过移除非极大值抑制(NMS)并优化各种模型组件,YOLOv10 在发布时以显著降低的计算开销实现了出色的性能。其无 NMS 端到端设计开创了一种方法,并在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:Small 版本,在速度和准确率之间取得平衡。
  • YOLOv10m:Medium 版本,适用于通用场景。
  • YOLOv10b:平衡版本,增加了网络宽度以获得更高准确率。
  • YOLOv10l:Large 版本,以增加计算资源为代价获得更高准确率。
  • YOLOv10x:Extra-large 版本,提供最高的准确率和性能。

性能#

YOLOv10 在准确率和效率方面均优于以往的 YOLO 版本及其他最先进模型。例如,在 COCO 数据集上,YOLOv10s 的速度是 RT-DETR-R18 的 1.8 倍,同时 AP 相近;YOLOv10b 在性能相同的情况下,比 YOLOv9-C 的延迟低 46%,参数量少 25%。

性能

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

模型输入尺寸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 采用双重标签分配策略,在训练过程中结合了一对多和一对一策略,以确保丰富的监督和高效的端到端部署。Ultralytics 的预测和验证默认使用带 NMS 的一对多预测头;设置 nms=False 即可选择无 NMS 预测头。一致的匹配指标使两种策略的监督保持一致,从而在推理过程中提高预测质量。

以整体效率-准确率为导向的模型设计#

效率提升#

  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 论文 的报告,并根据其自身协议测得,因此无法直接与 Ultralytics 模型页面上的数值进行比较:

模型参数量
(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 模型系列提供了一系列模型,每个模型都针对高性能目标检测进行了优化。这些模型可满足不同的计算需求和准确率要求,因此适用于广泛的应用场景。

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

导出 YOLOv10#

由于 YOLOv10 引入了新的操作,Ultralytics 提供的导出格式目前并非全部受支持。下表列出了使用 Ultralytics 为 YOLOv10 成功转换的格式。如果你能够通过提交贡献变更来增加对 YOLOv10 其他导出格式的支持,欢迎提交 pull request。

导出格式导出支持导出模型推理备注
TorchScript标准 PyTorch 模型格式。
ONNX广泛支持部署。
OpenVINO针对 Intel 硬件进行了优化。
TensorRT针对 NVIDIA GPU 进行了优化。
CoreML仅限 Apple 设备。
TF SavedModelTensorFlow 的标准模型格式。
TF GraphDef传统 TensorFlow 格式。
LiteRT针对移动设备、嵌入式设备和浏览器(LiteRT.js)进行了优化。
TF Edge TPU专用于 Google Edge TPU 设备。
PaddlePaddle在中国很受欢迎;全球支持较少。
NCNNtorch.topk 运算符不受 NCNN 运行时支持。

结论#

YOLOv10 在发布时通过解决之前 YOLO 版本的不足并融入创新的设计策略,为实时目标检测树立了新标准。其无需 NMS 的方法开创了 YOLO 系列中的端到端目标检测。有关性能改进且支持无需 NMS 推理的最新 Ultralytics 模型,请参阅 YOLO26

引用和致谢#

我们谨向 清华大学 的 YOLOv10 作者致谢,感谢他们开展的大量研究以及对 Ultralytics 框架作出的重要贡献:

引用
@inproceedings{wang2024yolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
  booktitle={Advances in Neural Information Processing Systems},
  doi = {10.52202/079017-3429},
  url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
  volume={37},
  pages={107984--108011},
  year={2024}
}

有关详细实现、架构创新和实验结果,请参阅清华大学团队发布的 YOLOv10 研究论文GitHub 代码库

常见问题#

  • 清华大学 研究人员开发的 YOLOv10,为实时目标检测引入了多项关键创新。它在训练过程中采用一致性双重分配,并优化模型组件,从而无需使用非极大值抑制 (NMS),以更低的计算开销实现更出色的性能。有关其架构和主要特性的更多详情,请查看 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()

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

  • YOLOv10 提供多种模型变体,以满足不同的使用场景:

    • YOLOv10n:适用于资源极其受限的环境
    • YOLOv10s:在速度和准确率之间取得平衡
    • YOLOv10m:适用于通用场景
    • YOLOv10b:通过增加宽度实现更高准确率
    • YOLOv10l:以更多计算资源为代价实现高准确率
    • YOLOv10x:最高准确率和性能

    每种变体都针对不同的计算需求和准确率要求进行设计,因此适用于各种应用。请查看 模型变体 部分以了解更多信息。

  • YOLOv10 采用一致的双重分配进行训练,使其一对一预测头为每个对象生成单个最佳预测,从而在推理时无需进行非极大值抑制(NMS)。Ultralytics 预测和验证默认使用带 NMS 的一对多预测头;设置 nms=False 以选择无 NMS 的预测头并去掉 NMS 步骤。有关详细解释,请参阅无 NMS 训练的一致双重分配一节。

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

  • YOLOv10 在准确率和效率方面均优于之前的 YOLO 版本及其他先进模型。例如,在 COCO 数据集上,YOLOv10s 的速度比 RT-DETR-R18 快 1.8 倍,同时 AP 相近。YOLOv10b 在性能相同的情况下,比 YOLOv9-C 的延迟低 46%,参数少 25%。详细基准结果请参阅 对比 部分。

评论