RDK X5 工具链完整使用教程(保姆级)
既然 hb_mapper 已验证成功,下面给你从模型到板端部署的完整流程:
一、准备工作
1. 在宿主机准备项目目录
# 创建项目目录
mkdir -p ~/x5_project/{models,onnx,config,output}
cd ~/x5_project
# 准备你的 ONNX 模型(放到 onnx 目录)
cp your_model.onnx ~/x5_project/onnx/
2. 启动 Docker 容器
docker run -it --name x5_dev \
-v ~/x5_project:/workspace \
-w /workspace \
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8 \
bash
二、模型转换流程
步骤 1:检查模型兼容性
cd /workspace/onnx
# 检查模型是否支持 X5 BPU
hb_mapper checker \
--model your_model.onnx \
--output-dir ../output/check_result
查看 ../output/check_result 下的检查报告,确认:
算子是否都支持
是否有算子需要 CPU fallback
是否有不支持的算子
步骤 2:创建转换配置文件
在 /workspace/config 下创建 x5_config.json:
{
"model_parameters": {
"input_name": ["input"],
"input_shape": [[1, 3, 640, 640]],
"input_type": ["uint8"],
"output_name": ["output"]
},
"compiler_parameters": {
"target_chip": "X5",
"core_type": "BPU",
"optimization_level": 2
}
}
参数说明:
input_name:模型输入节点名(用netron查看 ONNX 结构)input_shape:输入形状 [batch, channel, height, width]input_type:输入数据类型(uint8/float32)target_chip:目标芯片(X5)
步骤 3:执行模型转换
cd /workspace
# 转换模型
hb_mapper convert \
--model onnx/your_model.onnx \
--config config/x5_config.json \
--output-dir output/converted
成功后会生成:
output/converted/your_model.bin(BPU 模型文件)output/converted/your_model.prototxt(模型描述文件)
三、量化流程(PTQ)
如果需要量化(推荐,提升推理速度):
步骤 1:准备校准数据
# 创建校准数据目录
mkdir -p /workspace/calib_data/images
# 放入 100-500 张代表性图片(jpg/png 格式)
# 图片应与实际推理场景一致
步骤 2:创建量化配置文件
/workspace/config/quant_config.json:
{
"model_parameters": {
"input_name": ["input"],
"input_shape": [[1, 3, 640, 640]],
"input_type": ["uint8"],
"output_name": ["output"]
},
"compiler_parameters": {
"target_chip": "X5",
"core_type": "BPU",
"optimization_level": 2
},
"quantization_parameters": {
"calibration_data_dir": "/workspace/calib_data/images",
"calibration_method": "minmax",
"quantization_type": "asymmetric"
}
}
步骤 3:执行量化
hb_mapper quant \
--model onnx/your_model.onnx \
--config config/quant_config.json \
--output-dir output/quantized
四、板端部署
步骤 1:传输文件到 X5 板子
# 在宿主机执行(退出容器后)
# 将转换后的模型文件传到 X5 板子
scp -r ~/x5_project/output/converted user@x5_ip:/home/user/models/
或者用 U 盘拷贝:
your_model.binyour_model.prototxt
步骤 2:在 X5 板子上推理
X5 板子上需要安装 Horizon ROS2 包 或使用 hb_rt 推理库:
# 在 X5 板子上
cd /home/user/models
# 使用 hb_rt 推理(需要安装 runtime)
hb_rt --model your_model.bin --input input.jpg --output result.jpg
或者用 C++/Python SDK:
# 示例:Python 推理
from horizon_inference import BpuPredictor
predictor = BpuPredictor("your_model.bin")
result = predictor.predict(input_image)
五、完整示例(YOLO 检测)
参考社区教程:RDK YOLO Toolkit
# 1. 准备 YOLO ONNX 模型
cd /workspace/onnx
# 从 Ultralytics 导出:yolo export model=yolov8n.onnx
# 2. 检查模型
hb_mapper checker --model yolov8n.onnx --output-dir ../output/check
# 3. 创建 X5 配置文件
cat > /workspace/config/yolo_config.json << 'EOF'
{
"model_parameters": {
"input_name": ["images"],
"input_shape": [[1, 3, 640, 640]],
"input_type": ["uint8"],
"output_name": ["output0"]
},
"compiler_parameters": {
"target_chip": "X5",
"core_type": "BPU"
}
}
EOF
# 4. 转换模型
hb_mapper convert \
--model onnx/yolov8n.onnx \
--config config/yolo_config.json \
--output-dir output/yolo_converted
# 5. 量化(可选)
hb_mapper quant \
--model onnx/yolov8n.onnx \
--config config/yolo_config.json \
--output-dir output/yolo_quantized
六、常用命令速查
| 命令 | 说明 |
|---|---|
hb_mapper --help |
查看帮助 |
hb_mapper checker |
模型兼容性检查 |
hb_mapper convert |
模型转换 |
hb_mapper quant |
PTQ 量化 |
hb_mapper dump |
导出中间结果 |
netron model.onnx |
查看 ONNX 结构(需安装 netron) |
七、问题排查
# 1. 查看工具链版本
hb_mapper --version
# 2. 查看支持的算子
hb_mapper op_list --target_chip X5
# 3. 详细日志
hb_mapper convert --log_level debug ...
# 4. 查看转换报告
cat output/converted/report.json
八、推荐学习资源
| 资源 | 链接 |
|---|---|
| 官方工具链汇总帖 | 版本发布汇总 |
| YOLO 部署教程 | RDK YOLO Toolkit |
| AI Agent 量化部署 | Skill 分享 |
| 官方文档 | RDK DOC |
下一步建议:
- 先用一个简单的 ONNX 模型(如 ResNet)跑通全流程
- 再尝试你的实际模型
- 遇到问题把
hb_mapper的报错信息发到社区
需要我针对某个具体模型(如 YOLO、分类、分割)给更详细的配置吗?