YOLOv10 简介

YOLOv10,由清华大学的研究人员基于 Ultralytics Python 包构建,引入了一种全新的实时目标检测方法,该方法解决了以往 YOLO 版本中后处理和模型架构方面的不足。通过消除非极大值抑制(NMS)并优化各种模型组件,YOLOv10 在显著降低计算开销的同时,达到了最先进的性能水平。广泛的实验证明了其在多个模型规模下,在准确性与延迟之间的卓越权衡能力。

 一、概述

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

二、架构

YOLOv10 的架构在继承以往 YOLO 模型优势的基础上,引入了多项关键创新。模型架构由以下组件构成:

  • 主干网络(Backbone):负责特征提取,YOLOv10 采用增强的 CSPNet(跨阶段部分网络)版本,以改善梯度流动并减少计算冗余。
  • 颈部(Neck):设计用于聚合不同尺度的特征并将其传递给头部。它包括 PAN(路径聚合网络)层,以实现有效的多尺度特征融合。
  • 一对多头部(One-to-Many Head):在训练过程中为每个物体生成多个预测,以提供丰富的监督信号并提高学习准确性。
  • 一对一头部(One-to-One Head):在推理过程中为每个物体生成单个最佳预测,从而消除对NMS的需求,减少延迟并提高效率。

三、关键特性

  • 无 NMS 训练:利用一致双重分配策略消除对 NMS 的需求,降低推理延迟。
  • 整体模型设计:从效率和精度两个角度对各个组件进行全面优化,包括轻量级分类头部、空间-通道解耦下采样以及基于排名的块设计。
  • 增强的模型能力:融入大核卷积和部分自注意力模块,以不显著增加计算成本的方式提升性能。

四、模型变体

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

  • YOLOv10-N:纳米版,专为资源极度受限的环境设计。
  • YOLOv10-S:小型版,在速度和准确性之间取得平衡。
  • YOLOv10-M:中型版,适用于通用用途。
  • YOLOv10-B:平衡版,通过增加宽度来提高准确性。
  • YOLOv10-L:大型版,以增加计算资源为代价,换取更高的准确性。
  • YOLOv10-X:超大型版,追求最高准确度和性能。

五、性能

YOLOv10 在准确性和效率方面均超越了以往的 YOLO 版本以及其他最先进的模型。例如,在COCO 数据集上,YOLOv10-S 在达到与 RT-DETR-R18 相似平均精度(AP)的同时,速度是其 1.8 倍;而 YOLOv10-B 在保持与 YOLOv9-C 相同性能的情况下,延迟降低了 46%,参数减少了 25%。

ModelInput SizeAPvalFLOPs (G)Latency (ms)
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

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

1. 实验与结果

YOLOv10 已在 COCO 等标准基准测试集上进行了广泛测试,展示了卓越的性能和效率。该模型在不同变体上均取得了最先进的成果,与以往版本和其他当代检测器相比,在延迟和准确性方面均实现了显著提升。

2.对比

3.与其他最先进的检测器相比
  • YOLOv10-S / X 在相似精度下,分别比 RT-DETR-R18 / R101 快 1.8 倍 / 1.3 倍。
  • YOLOv10-B 在相同精度下,比 YOLOv9-C 的参数少 25%,延迟低 46%。
  • YOLOv10-L / X 在参数比 YOLOv8-L / X 少 1.8 倍 / 2.3 倍的情况下,平均精度(AP)高出0.3 / 0.5。
ModelParams
(M)
FLOPs
(G)
mAPval
50-95
Latency
(ms)
Latency-forward
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8-N3.28.737.36.161.77
YOLOv9t2.07.738.3
YOLOv10-N2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8-S11.228.644.97.072.33
YOLOv9s7.226.746.8
YOLOv10-S7.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
YOLOv8-M25.978.950.69.505.09
YOLOv9m20.176.851.4
YOLOv10-M15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8-L43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv9c25.5102.853.0
YOLOv10-L24.4120.353.47.287.21
YOLOv8-X68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv9e58.1192.555.6
YOLOv10-X29.5160.454.410.7010.60

六、使用示例

1.使用 YOLOv10 预测新图像:
  • 命令行:

# 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

  • Python 编程:
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()
2.在自定义数据集上训练 YOLOv10
  • 命令行:

        # 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

  • Python 编程:
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 通过解决之前 YOLO 版本的不足并融入创新的设计策略,在实时目标检测领域树立了新的标准。它以低计算成本实现高准确度的能力,使其成为众多实际应用场景中的理想选择。

                                                                                 老徐,2024/9/21

### YOLOv10 改进的卷积神经网络架构和实现细节 #### SPD-Conv 空间深度转换卷积简介 SPD-Conv(空间到深度卷积)是一种高效的改进方法,旨在提升卷积神经网络(CNN)对于小物体以及低分辨率图像处理的能力。该技术通过特定的方式重新排列输入特征图的空间维度至通道维度,从而增强模型捕捉局部结构信息的能力[^3]。 #### 解决细粒度信息丢失问题 传统的CNN采用步长卷积与池化操作,在降低计算复杂度的同时也带来了细粒度视觉信息的损失。而SPD-Conv则能够有效地缓解这个问题,使得网络可以在保持较高精度的情况下更好地识别较小的目标对象[^4]。 #### 实现过程中的关键技术点 为了使YOLOv10能更精准地检测各类大小不同的目标,特别是在面对低质量图片时仍具备良好的鲁棒性,引入了如下几个方面的优化措施: - **多尺度融合**:利用不同层次的感受野特性来综合考虑全局上下文关系; - **自适应调整感受野尺寸**:根据不同场景需求动态改变卷积核大小; - **轻量化设计原则下的参数共享机制**:减少冗余运算并加速推理速度; ```yaml # yolov10n-SPDConv.yaml配置文件片段展示 model: backbone: type: CSPDarknet # 主干网选用CSPDarknet作为基础框架 out_indices: (2, 3, 4) # 输出指定阶段的结果供后续模块使用 neck: type: PAN # 使用PANet进行特征金字塔构建 head: type: YOLOXHead # 头部组件沿用了YOLOX的设计思路 num_classes: 80 # 类别数量设定为常见的80类 ``` 上述代码展示了如何在YOLOv10中集成SPD-Conv的相关设置示例。其中`backbone`部分指定了主干网络类型及其输出索引位置;`neck`定义了颈部连接方式;最后`head`描述了头部的具体属性,包括分类数目等关键参数[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值