我已经有onnx文件了,怎么才能转为.bin文件
参考用户手册,使用官方工具链来完成
RDK X5:7.4.1 简介 | RDK DOC
RDK S100:7.4.1 算法工具链 | RDK DOC
关键看你用的什么板型,工具链和参数有差异。通用流程三步:
1. 确认板型 → 选工具链
- X3 → Horizon OE v1.x,march=
bernoulli2 - X5/Ultra → Horizon OE v2.x,march=
bayes-e - S100/S100P → 天工开物工具链,march=
nash-e(S100)/nash-m(S100P)
工具链在 主机 Docker 里跑,板上只装 runtime(hobot-dnn),别在板上找 hb_mapper。
2. 导出 ONNX
以 YOLOv8 为例,必须用 D-Robotics fork 的仓库导出,原生 ultralytics 导出的算子 BPU 不兼容:
from ultralytics import YOLO
model = YOLO('yolov8n.pt')
model.export(format='onnx', imgsz=640, opset=11)
3. 准备校准数据 + 转换
准备 50-100 张与训练集分布一致的图片做 PTQ 校准,然后编写 YAML 配置:
model_parameters:
onnx_model: 'yolov8n.onnx'
march: 'bayes-e'
working_dir: './model_output'
output_model_file_prefix: 'yolov8n'
input_parameters:
input_type_rt: 'nv12'
input_layout_train: 'NCHW'
calibration_parameters:
cal_data_dir: './calibration_data'
执行转换:
hb_mapper makertbin --config convert.yaml
输出 .bin 文件,scp 到板子上 /userdata/models/ 即可用 hobot_dnn 加载推理。
常见坑:
- ONNX opset 版本太高 → 固定
opset=11 - 校准数据不足 → 精度暴跌,至少 50 张
- 板端 runtime 版本不匹配 →
dpkg -l | grep hobot-dnn确认
如果你能说一下用的什么板子和模型,我可以给更精确的参数。