513 字
3 分钟
1,207 次阅读
RDK-x5 量化部署YOLO v8模型推理摄像头视频流
x86端准备模型
首先在x86端准备好你训练好的YOLO模型,下载此py,将模型导出为onnx格式。
脚本会使用
ultralytics.YOLO类对YOLO的pt模型进行加载, 使用猴子补丁(Monkey Patch)的方法对模型在PyTorch层面进行替换, 进行并调用ultralytics.YOLO.export方法对模型进行导出. 导出的ONNX模型会保存在pt模型同级目录下.
python export_monkey_patch.py --pt best.pt然后需要一个性能较强的docker环境用于生成专为RDK优化的二进制文件,以下是compose文件
version: '3.8'
services: ai-toolchain-x5: image: openexplorer/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8
container_name: rdk-toolchain
volumes: - ./rdk_ws:/rdk_ws
working_dir: /rdk_ws stdin_open: true tty: true将导出的onnx放入./rdk_ws目录中,将一些验证集的图片(约几十张)放入./rdk_ws/cal目录中,然后进入docker交互终端并下载一键YOLO转换脚本
sudo docker-compose up -dsudo docker exec -it rdk-toolchain /bin/bashwget https://github.com/D-Robotics/rdk_model_zoo/raw/refs/heads/main/demos/Vision/ultralytics_YOLO/x86/mapper.py脚本的参数如下
- —onnx 指定输入的原始 ONNX 模型文件路径
- —cal-images 指定用于校准的图片数据集路径,以减少精度损失
- —quantized 设置量化策略
- —optimize-level 设置编译优化的等级,可选-O0 -O1 -O2 -O3,数字越大越好越慢
- —jobs 编译线程
- —save-cache 保留缓存
我的命令如下,可根据实际修改
python3 mapper.py --onnx best.onnx --cal-images cal --jobs 64 --optimize-level O3然后会输出一个.bin的二进制文件,这就是ARM端所需要的特制模型
RDK端推理模型
可以先安装uv用于环境管理
curl -LsSf https://astral.sh/uv/install.sh | sh拉取官方SDK
git clone https://github.com/D-Robotics/rdk_model_zoo.gitcd rdk_model_zoo/demos/Vision/ultralytics_YOLO创建一个虚拟环境并激活,以及安装需要的依赖包
uv venv --python 3.10 venvsource venv/bin/activateuv pip install ultralyticsuv pip install hobot_dnn_rdkx5uv pip install "numpy<2.0"运行测试脚本
python3 py/Ultralytics_YOLO_Detect_YUV420SP.py
调用免驱摄像头检测
下载此脚本,用于调用摄像头并推理模型的示例文件
python realtime_camera_yolo.py --model-path best_bayese_640x640_nv12.bin参考文档
官方教程 rdk_model_zoo/demos/Vision/ultralytics_YOLO/README_cn.md at main · D-Robotics/rdk_model_zoo
RDK-x5 量化部署YOLO v8模型推理摄像头视频流
https://nvcc-v.com/2025/09/22/yolo-v8-rdk-x5-deployment/ KEEP EXPLORING