YOLOv10来啦!ONNX模型部署和性能对比了解一下

本文首发于公众号【DeepDriving】,欢迎关注。

0. YOLOv10简介

YOLOv10是清华大学最近开源的一个实时端到端的目标检测算法,解决了以往版本YOLO系列目标检测算法在后处理和模型架构方面的不足。通过消除非极大值抑制(NMS)操作和优化模型架构,YOLOv10在显著降低计算开销的同时还实现了最先进的性能。

YOLOv10的模型架构由以下几个部分组成:

  • 主干网络:使用增强版的CSPNet来提取图像特征,它能改善梯度流并减少计算量。
  • 颈部:采用PAN结构汇聚不同尺度的特征,有效地实现多尺度特征融合。
  • 一对多预测头:在训练过程中为每个对象生成多个预测,用来提供丰富的监督信号从而提高学习的准确性;在推理阶段不生效,从而减少计算量。
  • 一对一预测头:在推理过程中为每个对象生成一个最佳预测,无需NMS操作,从而减少延迟并提高推理效率。

YOLOv10的主要特点如下:

  • 利用一致的双重分配来消除对NMS的需求,从而减少推理延迟。
  • 从推理效率和准确性的角度出发全面优化各种组件,包括轻量级分类头、空间通道去耦下采样和等级引导块设计。
  • 引入大核卷积和部分自注意模块,在不增加大量计算成本的情况下提高性能。

官方发布了从NX各种型号的模型,以满足不同应用的需求:

  • YOLOv10-N:用于资源极其有限环境的超小型版本。
  • YOLOv10-S:兼顾速度和精度的小型版本。
  • YOLOv10-M:通用的中型版本。
  • YOLOv10-B:平衡型,宽度增加,精度更高。
  • YOLOv10-L:大型版本,精度更高,但计算资源增加。
  • YOLOv10-X:超大型版本,可实现最高的精度和性能。

本文主要介绍如何基于ONNXRuntime框架部署onnx格式的YOLOv10模型,以及YOLOv10RT-DETR等算法的性能对比。

1. 准备工作

首先把代码从GitHubclone下来

git clone https://github.com/THU-MIG/yolov10.git

然后执行下面的命令用conda创建Python环境并安装相关的依赖库和YOLOv10

conda create -n yolov10 python=3.9
conda activate yolov10
pip install -r requirements.txt
pip install -e .

这里需要注意的是,如果使用的是低版本的pip,可能会报类似下面的错误:

ERROR: File "setup.py" or "setup.cfg" not found. Directory cannot be installed in editable mode: /path/to/yolov10
(A "pyproject.toml" file was found, but editable mode currently requires a setuptools-based build.)

这种情况需要升级pip的版本,最新版本24.0实测是没有问题的。

pip install --upgrade pip

安装成功后,从GitHub的release中下载PyTorch格式的模型权重,然后执行下面的命令就可以导出onnx模型了。

yolo export model=yolov10n/s/m/b/l/x.pt format=onnx opset=13 simplify

2. onnx模型部署

2.1 加载onnx模型

首先导入onnxruntime包,然后调用其API加载模型即可:

import onnxruntime as ort

session = ort.InferenceSession("yolov10m.onnx", providers=["CUDAExecutionProvider"])

这里的providers参数根据自己的实际情况设置,我使用的是GPU所以设置的是"CUDAExecutionProvider"。如果用CPU进行推理,则需设置为"CPUExecutionProvider";如果有

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeepDriving

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值