YOLOv10:实时端到端物体检测
YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv10 在显著降低计算开销的同时实现了最先进的性能。大量实验证明,YOLOv10 在多个模型尺度上实现了卓越的精度-延迟权衡。
观看: 如何使用Ultralytics | 零售数据集在 SKU-110k 数据集上训练 YOLOv10
概述
实时物体检测旨在以较低的延迟准确预测图像中的物体类别和位置。YOLO 系列在性能和效率之间取得了平衡,因此一直处于这项研究的前沿。然而,对 NMS 的依赖和架构上的低效阻碍了最佳性能的实现。YOLOv10 通过为无 NMS 训练引入一致的双重分配和以效率-准确性为导向的整体模型设计策略,解决了这些问题。
建筑学
YOLOv10 的结构建立在以前YOLO 模型的基础上,同时引入了几项关键创新。模型架构由以下部分组成:
- 主干网YOLOv10 中的主干网负责特征提取,它使用了增强版的 CSPNet(跨阶段部分网络),以改善梯度流并减少计算冗余。
- 颈部颈部设计用于汇聚不同尺度的特征,并将其传递到头部。它包括 PAN(路径聚合网络)层,可实现有效的多尺度特征融合。
- 一对多头:在训练过程中为每个对象生成多个预测,以提供丰富的监督信号并提高学习准确性。
- 一对一磁头:在推理过程中为每个对象生成一个最佳预测,无需 NMS,从而减少延迟并提高效率。
主要功能
- 无 NMS 训练:利用一致的双重分配来消除对 NMS 的需求,从而减少推理延迟。
- 整体模型设计:从效率和准确性的角度全面优化各种组件,包括轻量级分类头、空间通道解耦向下采样和等级引导块设计。
- 增强的模型功能:纳入大核卷积和部分自注意模块,在不增加大量计算成本的情况下提高性能。
型号
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 采用双重标签分配,在训练过程中将一对多和一对一策略结合起来,以确保丰富的监督和高效的端到端部署。一致匹配度量使两种策略之间的监督保持一致,从而提高了推理过程中的预测质量。
效率-精度驱动的整体模型设计
提高效率
- 轻量级分类头:通过使用深度可分离卷积,减少分类头的计算开销。
- 空间信道解耦向下采样:将空间缩减与信道调制解耦,最大限度地减少信息损失和计算成本。
- 梯级引导程序块设计:根据固有级冗余调整模块设计,确保参数的最佳利用。
精度提升
- 大核卷积扩大感受野,增强特征提取能力。
- 部分自我关注(PSA):纳入自我关注模块,以最小的开销改进全局表征学习。
实验和结果
YOLOv10 在 COCO 等标准基准上进行了广泛测试,显示出卓越的性能和效率。与以前的版本和其他当代探测器相比,YOLOv10 在延迟和准确性方面都有显著提高。
比较
与其他最先进的探测器相比:
- 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 预测新图像:
示例
用于在自定义数据集上训练 YOLOv10:
示例
支持的任务和模式
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框架做出的重要贡献:
有关详细实现、架构创新和实验结果,请参阅清华大学团队的 YOLOv10研究论文和GitHub 存储库。
常见问题
什么是 YOLOv10?它与以前的YOLO 版本有何不同?
由清华大学研究人员开发的 YOLOv10 为实时目标检测引入了多项关键创新。它通过在训练过程中采用一致的双重分配和优化的模型组件,消除了对非最大抑制(NMS)的需求,从而在降低计算开销的同时实现了卓越的性能。有关其架构和主要功能的详细信息,请查看YOLOv10 概述部分。
如何开始使用 YOLOv10 进行推理?
为了方便推理,您可以使用Ultralytics YOLO Python 库或命令行界面 (CLI)。以下是使用 YOLOv10 预测新图像的示例:
示例
有关更多使用示例,请访问我们的 "使用示例"部分。
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% 的参数。详细的基准测试结果请参见 "比较"部分。