地平线rdk x5部署yolo11
# 下载OE-v1.2.8交付包
wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.8_release/horizon_x5_open_explorer_v1.2.8-py310_20240926.tar.gz --ftp-password=x5ftp@123$%
#地平线旭日5 算法工具链 用户开发文档(按需下载)
wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.8_release/x5_doc-v1.2.8-py310-cn.zip --ftp-password=x5ftp@123$%
#Ubuntu20.04 CPU Docker镜像
wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.8_release/docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz --ftp-password=x5ftp@123$%
安装docker镜像:
sudo docker load -i docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz
执行 sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
openexplorer/ai_toolchain_ubuntu_20_x5_cpu v1.2.8-py310 86481e1a065b 7 months ago 5.16GB
进入docker:
sudo docker run -it --name my_ai_toolchain openexplorer/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8-py310 /bin/bash
或者:
sudo docker exec -it horizon /bin/bash horizon是容器names
sudo docker run -it -d -v /home/yao/workspace/projects/rdk/docker:/data --name horizon 86481e1a065b
查询正在运行的容器:
sudo docker ps -a
Container is not running解决:
sudo docker start 5fcc8a9e438d容器ID
sudo docker run -it -d -v /home/yao/workspace/projects/rdk/docker:/data --name horizon e9307ee87b1a
sudo docker images 查镜像ID
容器文件夹映射到本机文件夹目录:
docker run -it -v /宿主机目录:/容器目录 镜像名:版本号
docker run -it -v /home/sunrise:/workspace openexplorer/ai_toolchain_ubuntu_20_xj3_cpu:v2.6.4
注意 执行完以上命令后进入到容器的是openexplorer文件夹,要后退一步才行。
进去容器,把模型放入文件夹:
#根据自己的模型路径修改--model参数:以下命令对我们的模型进行检查
hb_mapper checker --model-type onnx --march bayes-e --model yolo11n-seg.onnx
主要输出:
2025-05-09 10:34:04,719 INFO Input ONNX Model Information:
ONNX IR version: 6
Opset version: ['ai.onnx v11', 'horizon v1']
Producer: pytorch v2.1.0
Domain: None
Version: None
Graph input:
images: shape=[1, 3, 640, 640], dtype=FLOAT32
Graph output:
output0: shape=[1, 80, 80, 80], dtype=FLOAT32
output1: shape=[1, 80, 80, 64], dtype=FLOAT32
520: shape=[1, 80, 80, 32], dtype=FLOAT32
542: shape=[1, 40, 40, 80], dtype=FLOAT32
528: shape=[1, 40, 40, 64], dtype=FLOAT32
550: shape=[1, 40, 40, 32], dtype=FLOAT32
572: shape=[1, 20, 20, 80], dtype=FLOAT32
558: shape=[1, 20, 20, 64], dtype=FLOAT32
580: shape=[1, 20, 20, 32], dtype=FLOAT32
490: shape=[1, 160, 160, 32], dtype=FLOAT32
准备校准数据:
generate_calibration_data.py脚本,只需设置图片输入和保存目录即可:
脚本所在目录rdk_model_zoo/demos/tools/generate_calibration_data/
生成的数据保存在calibration_data_rgb_f32_640文件夹,在config_yolo11_seg_bayese_640x640_nv12.yaml文件中需要填写cal_data_dir
执行模型转换,得到.bin文件:
hb_mapper makertbin --model-type onnx --config config_yolo11_seg_bayese_640x640_nv12.yaml
config_yolo11_seg_bayese_640x640_nv12.yaml文件是在rdk_model_zoo/demos/Seg/YOLO11-Seg/YOLO11-Seg_YUV420SP/路径下
执行过程中可能遇到报错,先不管:[E:onnxruntime:, sequential_executor.cc:183 Execute] N...input_shape.Size()) == size was false. The input tensor cannot be reshaped to the requested shape. Input shape:{8,256,20,20}, requested shape:{1,2,128,400}
查看可删除的节点:
hb_model_modifier yolo11n_seg_bayese_640x640_nv12.bin
生成的节点文件为hb_model_modifier.log
删除以下节点:
hb_model_modifier yolo11n_seg_bayese_640x640_nv12.bin \
-r "490_HzDequantize" \
-r "/model.23/cv2.0/cv2.0.2/Conv_output_0_HzDequantize" \
-r "/model.23/cv4.0/cv4.0.2/Conv_output_0_HzDequantize" \
-r "/model.23/cv2.1/cv2.1.2/Conv_output_0_HzDequantize" \
-r "/model.23/cv4.1/cv4.1.2/Conv_output_0_HzDequantize" \
-r "/model.23/cv2.2/cv2.2.2/Conv_output_0_HzDequantize" \
-r "/model.23/cv4.2/cv4.2.2/Conv_output_0_HzDequantize"
得到修改后的yolo11n_seg_bayese_640x640_nv12_modified.bin文件。