转换yolo模型为Hailo支持的hef格式

陈暗魔 发布于 2025-01-03 最后更新于 2025-01-03


系统: Ubuntu 24.04.1 LTS

转换模型为onnx

from ultralytics import YOLO

# 加载本地yolo模型
model = YOLO("best.pt")

# 导出模型为onnx格式,输入图像为640*640像素, 版本11
model.export(format="onnx", imgsz=640, opset=11 ) 

安装Python3.10

创建虚拟环境

mkdir onnx-to-hef
cd onnx-to-hef
# 创建python虚拟环境
python3.10 -m venv venv

复制一份yolo训练集到onnx-to-hef目录

# 格式
data/
├── images
│   ├── c1c0bfb4-6fd07b4fa73690154fb0634fa98a924bfe2cfa82ead18f22b1beeef895a60723.jpg
│   ├── c3f494c9-ad773bb9490bcd5f458554524fb99e9230e007ed36c6e8f8f7dfe43af4f56699.jpg
│   ├── c82936b0-759545a2009065a82d4c2d75db17a94d8dedbf8b17cd92d0d1d0ab70784e5a9c.jpg
│   ├── c8c1fc30-d8d2bb1e5338dea249f1020e63e71245c3252c1e16c11896cea5ed181dd4557a.jpg
│   ├── cadb45eb-8f937abbfd8050bfdbc65193dfcc6f7c641719d086c68a43183aa798ecfa0be5.jpg
│   ├── cc593c4e-f50650aa0cee83fbbeb09746e01a56dda052fc9050f2a80d1c80f953c5a4912f.jpg
│   ├── cf0da961-f5d0dd71389ca07c2399fd3d8a2db7a27b9749053b9f6b776cecb25cee44b6aa.jpg
└── labels
    ├── c1c0bfb4-6fd07b4fa73690154fb0634fa98a924bfe2cfa82ead18f22b1beeef895a60723.txt
    ├── c3f494c9-ad773bb9490bcd5f458554524fb99e9230e007ed36c6e8f8f7dfe43af4f56699.txt
    ├── c82936b0-759545a2009065a82d4c2d75db17a94d8dedbf8b17cd92d0d1d0ab70784e5a9c.txt
    ├── c8c1fc30-d8d2bb1e5338dea249f1020e63e71245c3252c1e16c11896cea5ed181dd4557a.txt
    ├── cadb45eb-8f937abbfd8050bfdbc65193dfcc6f7c641719d086c68a43183aa798ecfa0be5.txt
    ├── cc593c4e-f50650aa0cee83fbbeb09746e01a56dda052fc9050f2a80d1c80f953c5a4912f.txt
    ├── cf0da961-f5d0dd71389ca07c2399fd3d8a2db7a27b9749053b9f6b776cecb25cee44b6aa.txt
    ├── classes.txt

下载官方whl包

复制到onnx-to-hef目录, 终端中打开onnx-to-hef目录

# 激活python虚拟环境
source venv/bin/activate
# 拉取 hailo_model_zoo
git clone https://github.com/hailo-ai/hailo_model_zoo
# 安装 hailo_dataflow_compiler
pip install hailo_dataflow_compiler-3.30.0-py3-none-linux_x86_64.whl -q
# 安装 hailo_model_zoo
cd hailo_model_zoo
pip install -e . -q
# 检测是否安装成功
hailomz info mobilenet_v1

输出

<Hailo Model Zoo INFO> Start run for network mobilenet_v1 ...
<Hailo Model Zoo INFO> 
	task:                    classification
	input_shape:             224x224x3
	output_shape:            1001
	operations:              1.14G
	parameters:              4.22M
	framework:               tensorflow
	training_data:           imagenet train
	validation_data:         imagenet val
	eval_metric:             Accuracy (top1)
	full_precision_result:   70.97
	source:                  https://github.com/tensorflow/models/tree/v1.13.0/research/slim
	license_url:             https://github.com/tensorflow/models/blob/master/LICENSE

复制转换好的onnx模型到onnx-to-hef目录

# 检查目录位置
pwd
# 输出 /home/cam/桌面/onnx-to-hef/hailo_model_zoo
# 开始转换onnx模型为hef
python hailo_model_zoo/main.py compile yolov8m --ckpt ../best.onnx --hw-arch hailo8  --calib-path ../data/images/ --classes 1 --performance

解释:
yolov8m: 为转换后的模型名字
../best.onnx: 需要转换的onnx 模型文件
hailo8: 买的加速套件类型, 有hailo8和hailo8l
../data/images/: 训练集的位置
1: 模型中标签类的数量