Meet YOLO26: next-gen vision AI.

Link to this sectionYOLOv10:实时端到端目标检测#

YOLOv10 于 2024 年 5 月发布,基于 Ultralytics Python package,由清华大学的研究人员开发,引入了一种实时目标检测的新方法,解决了之前 YOLO 版本在后处理和模型架构方面的缺陷。通过消除非极大值抑制(NMS)并优化各种模型组件,YOLOv10 在发布时以显著降低的计算开销实现了出色的性能。其 NMS-free 端到端设计开创了一种在 YOLO26 中得到进一步发展的方法。

YOLOv10 用于 NMS-free 训练的一致性双重分配



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Link to this section概述#

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

Link to this section架构#

YOLOv10 的架构建立在之前 YOLO 模型优势的基础上,同时引入了多项关键创新。模型架构包含以下组件:

  1. Backbone:负责特征提取,YOLOv10 中的骨干网络使用了 CSPNet(跨阶段局部网络)的增强版本,以改善梯度流并减少计算冗余。
  2. Neck:该颈部结构旨在聚合来自不同尺度的特征并将其传递给头部。它包含用于有效多尺度特征融合的 PAN(路径聚合网络)层。
  3. One-to-Many Head:在训练期间为每个物体生成多个预测,以提供丰富的监督信号并提高学习准确度。
  4. One-to-One Head:在推理期间为每个物体生成单个最佳预测,从而消除对 NMS 的需求,进而降低延迟并提高效率。

Link to this section主要特性#

  1. NMS-Free Training:利用一致性双重分配消除对 NMS 的需求,从而降低推理延迟
  2. Holistic Model Design:从效率和准确度角度对各种组件进行全面优化,包括轻量级分类头、空间通道解耦下采样和基于等级引导的块设计。
  3. Enhanced Model Capabilities:结合了大核卷积和部分自注意力模块,在不增加显著计算成本的情况下提高性能。

Link to this section模型变体#

YOLOv10 提供多种模型尺度,以满足不同的应用需求:

  • YOLOv10n:适用于资源极其受限环境的 Nano 版本。
  • YOLOv10s:平衡速度和准确度的 Small 版本。
  • YOLOv10m:适用于通用目的的 Medium 版本。
  • YOLOv10b:通过增加宽度以获得更高准确度的平衡版本。
  • YOLOv10l:以增加计算资源为代价获得更高准确度的 Large 版本。
  • YOLOv10x:用于实现最大准确度和性能的 Extra-large 版本。

Link to this section性能#

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

性能

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

模型输入大小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

Link to this section方法论#

Link to this section用于 NMS-Free 训练的一致性双重分配#

YOLOv10 采用双标签分配,在训练期间结合了一对多(one-to-many)和一对一(one-to-one)策略,以确保丰富的监督和高效的端到端部署。一致的匹配度量标准协调了两种策略之间的监督,增强了推理期间的预测质量。

Link to this section整体效率-准确度驱动的模型设计#

Link to this section效率提升#

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

Link to this section准确度提升#

  1. 大核卷积:扩大感受野以增强特征提取能力。
  2. 部分自注意力 (PSA):结合自注意力模块以在最小开销下改进全局表征学习。

Link to this section实验与结果#

YOLOv10 已在 COCO 等标准基准测试上进行了广泛测试,展现了卓越的性能和效率。该模型在不同变体中实现了最先进的结果,与以前的版本和其他当代检测器相比,在延迟和准确度方面有了显著改进。

Link to this section对比#

YOLOv10 与 SOTA 目标检测器的对比

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

  • YOLOv10s / x 比 RT-DETR-R18 / R101 快 1.8 倍 / 1.3 倍,且准确度相似
  • YOLOv10b 在相同准确度下,参数比 YOLOv9-C 少 25%,延迟降低 46%
  • YOLOv10l / x 优于 YOLOv8l / x,AP 高出 0.3 / 0.5,且参数减少 1.8 倍 / 2.3 倍
性能

以下是 YOLOv10 变体与其他最先进模型的详细对比:

模型参数
(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 层并移除辅助的一对多检测头。预训练检查点保留完整的训练架构,可能会显示更高的统计数值。

Link to this section使用示例#

用于使用 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)

Link to this section支持的任务和模式#

YOLOv10 模型系列提供了一系列模型,每个模型都针对高性能 目标检测 进行了优化。这些模型满足了不同的计算需求和精度要求,使其能够灵活应用于广泛的场景。

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

Link to this section导出 YOLOv10#

由于 YOLOv10 引入了新的操作,Ultralytics 提供的导出格式目前并未全部支持。下表列出了已使用 Ultralytics 成功为 YOLOv10 转换的格式。如果你能提供贡献更改以添加对 YOLOv10 更多格式的导出支持,欢迎提交拉取请求 (Pull Request)。

导出格式导出支持导出模型推理注意事项
TorchScript标准 PyTorch 模型格式。
ONNX部署支持广泛。
OpenVINO针对 Intel 硬件优化。
TensorRT针对 NVIDIA GPU 优化。
CoreML仅限 Apple 设备。
TF SavedModelTensorFlow 的标准模型格式。
TF GraphDef旧版 TensorFlow 格式。
TF Lite针对移动端和嵌入式设备优化。
TF Edge TPU专门针对 Google 的 Edge TPU 设备。
TF.js用于浏览器环境的 JavaScript。
PaddlePaddle在中国流行;全球支持较少。
NCNNtorch.topk 不存在或未注册

Link to this section结论#

YOLOv10 在发布时通过解决先前 YOLO 版本的不足并融入创新的设计策略,树立了实时目标检测的新标准。其无 NMS (NMS-free) 方法引领了 YOLO 系列端到端目标检测的先河。关于具备更高性能和无 NMS 推理的最新 Ultralytics 模型,请参阅 YOLO26

Link to this section引用与致谢#

我们感谢来自 清华大学 的 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 仓库

Link to this section常见问题解答#

Link to this section什么是 YOLOv10,它与之前的 YOLO 版本有何不同?#

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

Link to this section如何开始使用 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()

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

Link to this sectionYOLOv10 提供哪些模型变体,它们的用途是什么?#

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

  • YOLOv10n:适用于资源极其受限的环境
  • YOLOv10s:速度与精度的平衡
  • YOLOv10m:通用用途
  • YOLOv10b:更高的精度,增加了宽度
  • YOLOv10l:以计算资源为代价的高精度
  • YOLOv10x:极致的精度与性能

每个变体都专为不同的计算需求和精度要求而设计,使其能够灵活应用于各种场景。探索 模型变体 部分以获取更多信息。

Link to this sectionYOLOv10 中的无 NMS 方法如何提高性能?#

YOLOv10 通过在训练时采用一致的双重分配,消除了推理期间对非极大值抑制 (NMS) 的需求。这种方法降低了推理延迟并提高了预测效率。该架构还包含一个用于推理的一对一 (one-to-one) 检测头,确保每个目标仅得到一个最佳预测。有关详细解释,请参阅 针对无 NMS 训练的一致双重分配 部分。

Link to this section在哪里可以找到 YOLOv10 模型的导出选项?#

YOLOv10 支持多种导出格式,包括 TorchScript、ONNX、OpenVINO 和 TensorRT。然而,由于 YOLOv10 引入了新操作,Ultralytics 提供的并非所有导出格式目前都受到支持。有关支持的格式详情及导出说明,请访问 导出 YOLOv10 部分。

Link to this sectionYOLOv10 模型的性能基准是什么?#

YOLOv10 在精度和效率上均超越了以往的 YOLO 版本和其他先进模型。例如,在 COCO 数据集上,YOLOv10s 比 RT-DETR-R18 快 1.8 倍且具有相似的 AP。与 YOLOv9-C 相比,YOLOv10b 在性能相同的情况下,延迟降低了 46%,参数量减少了 25%。详细的基准测试可以在 比较 部分找到。

评论