4.1.5 Model Zoo 推理接口参考
概述
Model Zoo 的 Python 推理接口按硬件平台和分支选择:
| 平台 | 分支 | 推理接口 | 接口来源 |
|---|---|---|---|
| RDK X5 | rdk_x5 | hbm_runtime | 板端系统自带 |
| RDK X5(历史) | rdk_x5_legacy | bpu_infer_lib_x5 / hobot_dnn.pyeasy_dnn | 手动安装 / 板端自带 |
| RDK X3 | rdk_x3 | bpu_infer_lib_x3 / hobot_dnn.pyeasy_dnn | 手动安装 / 板端自带 |
| RDK S 系列 | rdk_s | hbm_runtime | 板端系统自带 |
hbm_runtime 接口
hbm_runtime 是 RDK X5 和 RDK S 系列统一使用的 Python 推理接口,接口名称一致,但底层依赖、模型格式和输入方式存在差异:
| 项目 | RDK X5 | RDK S 系列 |
|---|---|---|
| 底层依赖 | libdnn | libhbucp |
| 模型格式 | .bin | .hbm |
| 安装包 | hobot-spdev(板端自带) | hobot-dnn(板端自带) |
| NV12 输入方式 | 单个 packed 输入(Y+UV 拼接) | 双输入(Y 与 UV 分离) |
RDK X5 调用流程
加载模型
import hbm_runtime
model = hbm_runtime.HB_HBMRuntime("model.bin")
model_name = model.model_names[0]
input_names = model.input_names[model_name]
output_names = model.output_names[model_name]
准备输入(packed NV12)
RDK X5 视觉模型常见输入为 packed NV12 格式,Y 和 UV 拼接为单个输入 tensor:
y, uv = bgr_to_nv12_planes(resized_img)
packed_nv12 = np.concatenate([y.reshape(-1), uv.reshape(-1)]).astype(np.uint8)
inputs = {model_name: {input_names[0]: packed_nv12}}
执行推理与读取输出
outputs = model.run(inputs)
result = outputs[model_name][output_names[0]]