明确结论(分两种场景,极易混淆)

1. ❌ RDK X5 绝对不能加载【X3 编译出来的 .bin】

  • X3 bin:march=bernoulli2(Bayes 一代 BPU 指令集)
  • X5 BPU:Bayes-e(Bayes2 二代指令集) 两代 BPU 微指令集完全不兼容。 直接拷贝 X3 的.bin 到 X5 加载:
  • 运行时初始化失败、报模型校验错误;
  • 不存在任何兼容方案,改后缀、二进制修补均无效; ✅ 解决方案:原始 ONNX 模型,使用X5 配套 OE Toolchain,重新量化编译

2. ✅ RDK X5 可以加载【专门给 X5 编译生成的 .bin】

重点区分:后缀同样叫 .bin,但内部指令集不一样!

RDK X5(地瓜机器人 D-Robotics)OE v2.x 工具链同时支持两种部署产物:

  1. .bin(混合异构模型,hb_mapper makertbin 输出)
    • 适用 Runtime:hrt_runtimehobot_dnn
    • 单模型封装,内置 BPU 指令 + CPU fallback 算子;
    • 社区绝大多数 X5 示例、TROS.B 默认使用此格式。
  2. .hbm(Horizon Binary Model,link 链接输出)
    • 面向地平线车载芯片 J5/J6(天工开物 HBDK4);
    • 标准 hbm 在 RDK X5 上无法运行(Nash 指令集 vs Bayes-e)。

行业重大误区纠正:

.bin 不是 X3 专属后缀!

后缀只是名字,核心看编译时指定的 march 目标架构

  • march=bernoulli2 → X3 bin(X5 不可用)
  • march=bayes-e → X5 bin(X5 可用)
  • march=nash-e/nash-mJ5/J6 hbm(X5 不可用)

X5 上 .bin vs .hbm 边界汇总

表格

文件 编译目标 march 能否在 RDK X5 加载 适用平台
X3 生成 xxx.bin bernoulli2 ❌ 不支持 RDK X3 / X3Pi
X5 工具链生成 xxx.bin bayes-e ✅ 原生支持 RDK X5
J5/J6 工具链生成 xxx.hbm nash-e ❌ 不支持 征程 5/J5、征程 6/J6

配套工程要点

  1. 如何快速判断一份 bin 能不能在 X5 跑? 使用板端工具校验:

bash

运行

hrt_model_exec model_info --model_file xxx.bin
  • 正常打印张量信息 = X5 可用 bin;
  • 报模型解析失败、header 非法 = X3 旧 bin,无法使用。
  1. yaml 编译配置关键参数(X5 生成可用 bin)

yaml

march: 'bayes-e'   # 重中之重,不能写成bernoulli2
output_model_file_prefix: "model_x5"

命令:

bash

运行

hb_mapper makertbin --config convert.yaml
  1. 选型建议(RDK X5 项目)
  • 快速开发、复用 hobot_dnn/TROS.B:选用 X5 版.bin
  • 不要尝试使用车载 J5/J6 链路去生成 hbm,两者指令集不互通。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐