紅葉~
L
O
A
D
I
N
G
紅葉
模型转换

模型转换

🔄 本文内容
把 YOLOv8 训练出来的 best.pt 一路转换下去:.pt → ONNX → OpenVINO IR。
1
best.pt  ──(ultralytics export)──▶  best.onnx  ──(OpenVINO mo)──▶  best.xml + best.bin

📦 1. 安装 ultralytics

YOLOv8 官方提供了 pip 包,装好之后可以直接用终端指令导出模型。

快速安装:

1
pip install ultralytics

或者从源码安装:

1
2
3
4
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
pip install -r requirements.txt
pip install -e .

测试是否安装成功,在 Python 里运行:

1
2
import ultralytics
ultralytics.checks()

出现类似下面的结果,说明安装成功:

🧩 2. .pt 转 ONNX

进入环境,打开终端:

1
yolo mode=export model=/home/sweet/vs/yolov8/runs/detect/train2/weights/best.pt format=onnx device=0
参数 含义
mode 模式,这里是 export 导出
model 模型路径,换成你自己的
format 导出的格式
device 设备,0 为电脑上的第一张显卡,填 cpu 则用 CPU 导出

也可以用 Python 脚本导出:

需要更多选项时,在 export 里继续加下面这些键值就行:

⚡ 3. ONNX 转 OpenVINO IR

先安装 OpenVINO 的 Python 版:

1
pip install openvino

找到 OpenVINO 的安装位置,寻找 mo_onnx.py,然后在终端运行:

1
python3 mo_onnx.py --input_model <onnx模型路径> --output_dir <IR模型输出路径> --input_shape [输入形状] --compress_to_fp16

--input_shape 在不知道输入形状时可以用 Netron 查看。从下面的 INPUTS 可以看出,data_type 是 FP16,shape 是 [1,3,640,640]:

其他常用参数

参数 作用
--mean_values 指定输入图像各通道的均值
--scale_values 指定输入图像各通道的缩放因子
--compress_to_fp16 把权重压缩为 FP16,模型更小
本文作者:紅葉
本文链接:https://swe-et.github.io/model-change/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可