YOLOv8分割模型转换ONNX并部署推理

ONNX 转换并部署说明

1. ONNX特性

  • 框架无关性: 仅在ONNX Runtime上运行分割推理,无需导入PyTorch。

  • 高效推理: 支持ONNX模型的FP32和FP16精度,满足不同的计算需求。

  • 易于使用: 使用简单的命令行参数执行模型。

  • 广泛兼容: 利用Numpy和OpenCV进行图像处理,确保与各种环境的广泛兼容性。

2. 安装

使用pip安装所需的包。你需要用于导出YOLOv8-seg ONNX模型和使用一些实用功能,用于GPU加速推理,以及用于图像处理的ultralytics、onnxruntime-gpu、opencv-python。

pip install ultralytics
pip install onnxruntime-gpu  # 用于支持GPU
# pip install onnxruntime    # 如果你没有NVIDIA GPU,请使用这个
pip install numpy
pip install opencv-python

注意一点,onnxruntime-gpu对应自己的cuda版本,如下:

使用nvcc -v查看自己cuda版本:

我的cuda11.4对应的ONNX Runtime版本为1.9-1.12:

pip install onnxruntime-gpu==1.12 -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 导出模型

1.使用提供的ultralytics包将YOLOv8分割模型导出为ONNX格式:

yolo export model=yolov8s-seg.pt imgsz=640 format=onnx opset=12 simplify

2.转换还需要安装以下几个库:

pip install onnx>=1.12.0 onnxslim>=0.1.31 onnxruntime

3.转换后版本为10,并且无法在opset=12上修改为自己的版本,如下:

4.根据上面的onnx版本对应,我的ONNX Runtime最多为1.12,也就是支持ONNX IR version 8,使用下述代码查看转换后的onnx版本:

import onnx

# 加载指定的 ONNX 模型文件
model_path = r"I:\onnx\best4.onnx"
model = onnx.load(model_path)

# 获取模型的版本信息
ir_version = model.ir_version

print(f"ONNX IR version of the model: {ir_version}")

5.使用如下代码转换版本为8:

import onnx
from onnx import version_converter, helper

model = onnx.load(r"I:\onnx\best4.onnx")
model.ir_version = 8
onnx.save_model(model, "best4_01.onnx")
并使用上述代码检查转换后版本:


6.使用onnx测试推理图片如下:

4. 部署ONNX-Runtime

ONNX推理需要很多后处理步骤,具体操作及代码如下:

1.模型推理输出的处理,代码如下:

2.后处理函数,代码如下:

3.掩码处理,代码如下:

4.缩放掩码,代码如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值