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

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

YOLOv10的主要特点如下:
- 利用一致的双重分配来消除对
NMS的需求,从而减少推理延迟。 - 从推理效率和准确性的角度出发全面优化各种组件,包括轻量级分类头、空间通道去耦下采样和等级引导块设计。
- 引入大核卷积和部分自注意模块,在不增加大量计算成本的情况下提高性能。
官方发布了从N到X各种型号的模型,以满足不同应用的需求:
YOLOv10-N:用于资源极其有限环境的超小型版本。YOLOv10-S:兼顾速度和精度的小型版本。YOLOv10-M:通用的中型版本。YOLOv10-B:平衡型,宽度增加,精度更高。YOLOv10-L:大型版本,精度更高,但计算资源增加。YOLOv10-X:超大型版本,可实现最高的精度和性能。
本文主要介绍如何基于ONNXRuntime框架部署onnx格式的YOLOv10模型,以及YOLOv10与RT-DETR等算法的性能对比。
1. 准备工作
首先把代码从GitHub上clone下来
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";如果有
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



