[具身智能-659]:RDK Model Zoo 使用完整教程(实例:RDK X5 + YOLOv8 目标检测)
选用 RDK X5(rdk_x5 分支) 作为实操案例;
全程区分两大使用模式:
✅ 模式 A:直接运行官方预编译模型(新手验证硬件,最快上手)
✅ 模式 B:基于模板转换自己训练的 ONNX 模型(工程落地)
前置重要前提
- 仓库地址:
https://github.com/D-Robotics/rdk_model_zoo - 分支绝对不能切错
- RDK X3 →
git checkout rdk_x3 - RDK X5 →
git checkout rdk_x5
- RDK X3 →
- 环境区分:
- PC 电脑(Ubuntu/Docker OE 工具链):用来把 ONNX → 量化编译生成
.bin - RDK X5 开发板:运行推理代码、加载
.bin模型;板子上没有 hb_mapper 编译工具
- PC 电脑(Ubuntu/Docker OE 工具链):用来把 ONNX → 量化编译生成
- 关键常识:X5 只能使用
bayes-e架构的.bin,不支持 J5/S100 的.hbm
一、目录结构快速看懂(rdk_x5 分支)
plaintext
rdk_model_zoo/
└── samples/vision/ultralytics_yolo/ # YOLOv8/v10通用demo
├── conversion/ # PC端模型转换工程(yaml、导出脚本)
├── model/ # 存放预编译 *.bin
├── python/ # Python推理代码
├── cpp/ # C++推理代码
├── resource/ # 测试图片、类别文件
└── download.sh # 一键下载官方预编译模型
模式 A:开箱即用,运行官方预编译 YOLOv8(推荐新手第一步)
步骤 1:PC / 开发板拉取仓库,切换硬件分支
bash
运行
git clone https://github.com/D-Robotics/rdk_model_zoo.git
cd rdk_model_zoo
# RDK X5必须切换分支!
git checkout rdk_x5
步骤 2:进入 YOLO 工程目录,下载预编译模型
bash
运行
cd samples/vision/ultralytics_yolo
# 执行下载脚本,自动拉取适配X5的 nv12格式.bin模型
bash download.sh
执行完毕后,model/文件夹生成: yolov8s_640x640_nv12.bin
命名解读:640 输入分辨率、NV12 输入格式(摄像头原生格式)
步骤 3:RDK X5 开发板执行推理(Python)
bash
运行
# 进入python推理目录
cd python
# 运行图片推理demo
python3 infer.py \
--model_file ../model/yolov8s_640x640_nv12.bin \
--image ../resource/bus.jpg
运行成功后:
- 控制台打印 FPS、推理耗时;
- 输出画检测框的图片; ✅ 验证:BPU 环境正常、推理链路全部打通。
常见踩坑: 不要用 X3 的 bin 放到 X5;不要把 RGB 图片直接喂给
nv12.bin模型。
模式 B:使用自己训练的模型(完整工程流程)
完整链路:Pytorch训练 → 导出ONNX → PC量化编译 → 拷贝.bin到X5部署 所有模板直接复用 Model Zoo conversion目录内文件。
步骤 1:导出兼容地平线的 ONNX(PC 端)
进入conversion/,参考仓库自带export_onnx.py。 重点约束:
- opset=11
- 固定输入尺寸 640×640
- YOLO 系列调整输出顺序为 NHWC,适配 BPU 输出得到
my_yolov8.onnx
步骤 2:修改量化编译 yaml(核心文件)
打开conversion/yolov8_ptq.yaml,关键参数:
yaml
model_parameters:
onnx_model: './my_yolov8.onnx'
march: "bayes-e" # ⭐RDK X5固定,绝对不能写成bernoulli2
output_model_file_prefix: "my_yolov8_640x640_nv12"
input_parameters:
input_type_rt: 'nv12' # 板端推理输入格式
input_type_train: 'rgb'
norm_type: 'data_scale'
scale_value: 0.0039215686 # 1/255
calibration_parameters:
cal_data_dir: './calibration' # 校准图片文件夹(30~200张真实场景图)
步骤 3:PC 端 OpenExplorer (OE) 工具链编译.bin
在 OE docker 环境执行:
bash
运行
hb_mapper makertbin --config yolov8_ptq.yaml
编译完成,输出目录得到:my_yolov8_640x640_nv12.bin
步骤 4:部署到 RDK X5
- 将生成的
.bin上传至开发板; - 复制
python/infer.py推理代码; - 修改代码内类别数量、类别名称;
- 执行推理,测试精度。
步骤 5(可选):C++ 部署
复用cpp目录源码,修改模型路径、类别参数,cmake 编译运行。
二、两条使用路线对比
表格
| 使用路线 | 适用人群 | 操作内容 |
|---|---|---|
| 路线 A:下载预编译模型直接跑 | 新手、硬件验证 | 只执行 download.sh + python 推理,不需要 PC 工具链 |
| 路线 B:自行转换 ONNX 生成 bin | 算法工程师、项目落地 | 需要 OE 工具链、校准数据集、修改 yaml 配置 |
三、高频工具命令(调试必备)
- 校验模型是否为合法 X5 bin(最重要) 在 RDK X5 板端执行:
bash
运行
hrt_model_exec model_info --model_file yolov8s_640x640_nv12.bin
✅ 正常:打印输入输出张量信息 ❌ 报错:模型是 X3 的 bin 或者文件损坏,无法使用
- 测速基准测试
bash
运行
hrt_model_exec infer --model_file xxx.bin --loop 100
四、典型踩坑清单(结合你之前.bin/hbm 知识)
- 不切换 git 分支:下载 X3 代码,在 X5 运行,模型加载失败
- march 参数写错:X5 yaml 写成
bernoulli2,编译出 X3 模型,X5 无法加载 - 格式不匹配:nv12 模型输入 RGB 图像,检测结果完全错乱
- 概念陷阱:X5 python 包名叫
hbm_runtime,不能加载.hbm 文件,仅支持.bin - 混淆产品线:Model Zoo(rdk_x5)≠ S100 rdk_model_zoo_s;二者模型不互通
五、通俗总结一句话
Model Zoo 提供一套标准化模板流水线: 想快速验证硬件 → 下载预编译 bin 直接运行; 想部署自己算法 → 复制仓库内 yaml、前后处理、推理代码模板,替换自己的 ONNX 重新编译。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)