RDK X5 四类模型文件完整区分 生成 使用示例先做全局定义杜绝概念混淆ONNXPC 通用原始模型跨平台标准旧版可执行.bin第一代地平线模型easy_dnn/bpu_infer_lib 加载RDK X3、早期 X5 legacy 镜像使用新版可执行.hbm新一代地平线模型hb_dnn/hbm_runtime 标准格式OS3.x 主推编译临时.binhb_mapper 编译 hbm 过程自动产出中间碎片不可独立加载核心时序链路 PyTorch 训练 → 导出ONNX→ PC OE Docker 执行 hb_mapper → 生成一批临时 bin 权重文件→ 打包封装 →hbm旧方案ONNX → 老版本工具链 → 生成第一代可执行 bin 模型现已淘汰一、ONNX 文件PC 通用模型文件生成方式PCPyTorch 示例python运行# export_onnx.py import torch from ultralytics import YOLO model YOLO(yolov8n.pt) # 导出ONNX固定输入尺寸640×640 model.export(formatonnx, imgsz640)执行bash运行python3 export_onnx.py # 输出yolov8n.onnx可选优化推荐bash运行onnxsim yolov8n.onnx yolov8n_simplified.onnx使用方法唯一用途作为模型编译器hb_mapper的输入源。不能直接在 RDK 开发板运行bash运行# 在地平线OE Docker内执行编译 hb_mapper makertbin --config yolov8_nv12.yaml --model-type onnx二、第一代可执行模型*.binlegacy 旧格式淘汰方案对应在/app/model/basic/看到的yolov8_640x640_nv12.bin生成方式使用 ** 老版本地平线工具链OE1.x** 编译 ONNX现已不再推荐新版 OE 不再支持输出此类 bin。⚠️ 新版 OE v2.x适配 RDK X5 bayes-e无法生成该类 bin 模型。使用方法仅旧镜像 OS2.x easy_dnn将yolov8_640x640_nv12.bin传到 RDK X5C 代码使用easy_dnn接口加载cpp运行// 旧版legacy伪代码 EasyDNN dnn; dnn.Init(yolov8_640x640_nv12.bin); dnn.SetInputData(nv12_frame_buf); dnn.Run();兼容性红线OS3.x 官方镜像通常移除libeasy_dnn.so无法加载此类 bin直接报错。新项目禁止使用。三、hbm 新一代标准模型文件当前主推生成流程ONNX → hb_mapper → 临时 bin → 打包生成 hbm步骤 1准备编译配置 yamlyolov8_nv12.yamlRDK X5 固定 march: bayes-eyamlmodel_parameters: onnx_model: yolov8n_simplified.onnx march: bayes-e # RDK X5固定架构 output_model_file: yolov8n_640_nv12.hbm input_parameters: input_name: images input_type: nv12 input_layout: hwc input_shape: [640,640,3]步骤 2在 OE Docker 中执行编译命令bash运行hb_mapper makertbin --config yolov8_nv12.yaml --model-type onnx编译过程磁盘文件变化工具自动生成大量临时.bin*量化权重分片全部参数整合封装 → 最终产出yolov8n_640_nv12.hbm编译完成后临时 bin 可以直接删除不再需要使用方法RDK X5 新版 TROS hb_dnn / Python hbm_runtimeC 示例伪代码cpp运行// 加载hbm模型 HbmModel model; model.Load(yolov8n_640_nv12.hbm); // 送入vio_capture输出的NV12图像buffer model.SetInput(nv12_buf); model.Infer(); // BPU硬件推理 model.GetOutput();Python 示例python运行from hbm_runtime import HbmRuntime runtime HbmRuntime(yolov8n_640_nv12.hbm) runtime.infer(nv12_image_data)四、编译过程产生的【临时 bin 文件】生成时机执行hb_mapper makertbin编译 ONNX 期间自动生成文件名随机。使用规则开发者不手动操作、不拷贝、不上板仅编译器内部读取用于组装 hbm脱离编译环境单独使用无任何意义hbm 生成成功即可全部删除❌重大误区不要混淆「临时 bin」和「legacy 可执行 bin 模型」两者后缀相同、用途完全无关。四类文件汇总对照表表格文件类型产生位置生成工具RDK 板端能否直接推理配套推理库ONNXPC 训练环境PyTorch/TensorFlow 导出❌ 不能仅作编译输入legacy 可执行 *.bin第一代模型PC 旧版 OE1.x老 hb_mapper✅ OS2.x 旧镜像easy_dnn / bpu_infer_libhbm新一代标准模型PC 新版 OE2.xhb_mapper✅ OS3.x 全系列hb_dnn / hbm_runtime编译临时 *.binPC OE 编译目录hb_mapper 运行时自动生成❌ 不能独立运行无仅供编译器内部使用极简开发推荐流程新项目统一标准PyTorch 训练 → 导出 ONNX → OE Docker hb_mapper 编译 → 丢弃临时 bin → 获得 hbm → RDK X5 hb_dnn 加载推理答辩口述精简总结ONNX 是 PC 端训练导出的通用模型作为编译输入早期旧工具链可编译生成 legacy 格式 bin 模型搭配 easy_dnn 运行现已淘汰当前标准方案使用新版 hb_mapper 编译 ONNX编译中途生成若干临时 bin 权重文件最终封装输出 hbmhbm 是 RDK X5 新一代标准模型通过 hb_dnn 库加载驱动 BPU 推理推荐所有新项目使用。
[具身智能-652]:RDK X5模型文件:PC端通用模型文件ONNX文件、RDK第一代模型文件bin文件、RDK新一代模型文件hbm文件,以及hbm模型文件生成过程中的临时文件bin。
RDK X5 四类模型文件完整区分 生成 使用示例先做全局定义杜绝概念混淆ONNXPC 通用原始模型跨平台标准旧版可执行.bin第一代地平线模型easy_dnn/bpu_infer_lib 加载RDK X3、早期 X5 legacy 镜像使用新版可执行.hbm新一代地平线模型hb_dnn/hbm_runtime 标准格式OS3.x 主推编译临时.binhb_mapper 编译 hbm 过程自动产出中间碎片不可独立加载核心时序链路 PyTorch 训练 → 导出ONNX→ PC OE Docker 执行 hb_mapper → 生成一批临时 bin 权重文件→ 打包封装 →hbm旧方案ONNX → 老版本工具链 → 生成第一代可执行 bin 模型现已淘汰一、ONNX 文件PC 通用模型文件生成方式PCPyTorch 示例python运行# export_onnx.py import torch from ultralytics import YOLO model YOLO(yolov8n.pt) # 导出ONNX固定输入尺寸640×640 model.export(formatonnx, imgsz640)执行bash运行python3 export_onnx.py # 输出yolov8n.onnx可选优化推荐bash运行onnxsim yolov8n.onnx yolov8n_simplified.onnx使用方法唯一用途作为模型编译器hb_mapper的输入源。不能直接在 RDK 开发板运行bash运行# 在地平线OE Docker内执行编译 hb_mapper makertbin --config yolov8_nv12.yaml --model-type onnx二、第一代可执行模型*.binlegacy 旧格式淘汰方案对应在/app/model/basic/看到的yolov8_640x640_nv12.bin生成方式使用 ** 老版本地平线工具链OE1.x** 编译 ONNX现已不再推荐新版 OE 不再支持输出此类 bin。⚠️ 新版 OE v2.x适配 RDK X5 bayes-e无法生成该类 bin 模型。使用方法仅旧镜像 OS2.x easy_dnn将yolov8_640x640_nv12.bin传到 RDK X5C 代码使用easy_dnn接口加载cpp运行// 旧版legacy伪代码 EasyDNN dnn; dnn.Init(yolov8_640x640_nv12.bin); dnn.SetInputData(nv12_frame_buf); dnn.Run();兼容性红线OS3.x 官方镜像通常移除libeasy_dnn.so无法加载此类 bin直接报错。新项目禁止使用。三、hbm 新一代标准模型文件当前主推生成流程ONNX → hb_mapper → 临时 bin → 打包生成 hbm步骤 1准备编译配置 yamlyolov8_nv12.yamlRDK X5 固定 march: bayes-eyamlmodel_parameters: onnx_model: yolov8n_simplified.onnx march: bayes-e # RDK X5固定架构 output_model_file: yolov8n_640_nv12.hbm input_parameters: input_name: images input_type: nv12 input_layout: hwc input_shape: [640,640,3]步骤 2在 OE Docker 中执行编译命令bash运行hb_mapper makertbin --config yolov8_nv12.yaml --model-type onnx编译过程磁盘文件变化工具自动生成大量临时.bin*量化权重分片全部参数整合封装 → 最终产出yolov8n_640_nv12.hbm编译完成后临时 bin 可以直接删除不再需要使用方法RDK X5 新版 TROS hb_dnn / Python hbm_runtimeC 示例伪代码cpp运行// 加载hbm模型 HbmModel model; model.Load(yolov8n_640_nv12.hbm); // 送入vio_capture输出的NV12图像buffer model.SetInput(nv12_buf); model.Infer(); // BPU硬件推理 model.GetOutput();Python 示例python运行from hbm_runtime import HbmRuntime runtime HbmRuntime(yolov8n_640_nv12.hbm) runtime.infer(nv12_image_data)四、编译过程产生的【临时 bin 文件】生成时机执行hb_mapper makertbin编译 ONNX 期间自动生成文件名随机。使用规则开发者不手动操作、不拷贝、不上板仅编译器内部读取用于组装 hbm脱离编译环境单独使用无任何意义hbm 生成成功即可全部删除❌重大误区不要混淆「临时 bin」和「legacy 可执行 bin 模型」两者后缀相同、用途完全无关。四类文件汇总对照表表格文件类型产生位置生成工具RDK 板端能否直接推理配套推理库ONNXPC 训练环境PyTorch/TensorFlow 导出❌ 不能仅作编译输入legacy 可执行 *.bin第一代模型PC 旧版 OE1.x老 hb_mapper✅ OS2.x 旧镜像easy_dnn / bpu_infer_libhbm新一代标准模型PC 新版 OE2.xhb_mapper✅ OS3.x 全系列hb_dnn / hbm_runtime编译临时 *.binPC OE 编译目录hb_mapper 运行时自动生成❌ 不能独立运行无仅供编译器内部使用极简开发推荐流程新项目统一标准PyTorch 训练 → 导出 ONNX → OE Docker hb_mapper 编译 → 丢弃临时 bin → 获得 hbm → RDK X5 hb_dnn 加载推理答辩口述精简总结ONNX 是 PC 端训练导出的通用模型作为编译输入早期旧工具链可编译生成 legacy 格式 bin 模型搭配 easy_dnn 运行现已淘汰当前标准方案使用新版 hb_mapper 编译 ONNX编译中途生成若干临时 bin 权重文件最终封装输出 hbmhbm 是 RDK X5 新一代标准模型通过 hb_dnn 库加载驱动 BPU 推理推荐所有新项目使用。