结论
问题找到了! .bin 文件不是 RDK X5 的标准 BPU 模型格式,应该是 .hbmodel。.bin 可能是旧版工具链或转换不完整的产物,导致无法正确调用 BPU 加速。
问题分析
| 格式 | 说明 | 状态 |
|---|---|---|
.hbmodel |
RDK X5 标准 BPU 模型格式 | |
.bin |
旧版格式或中间文件 | |
.onnx |
中间格式,需编译 |
20FPS 的原因:使用 .bin 文件时,推理框架可能回退到 CPU 推理,而非 BPU 加速。
解决方案
重新编译模型为 .hbmodel 格式
# 进入官方转换目录
cd rdk_model_zoo/samples/vision/ultralytics_yolo26/conversion
# 使用正确的转换脚本(确保分支是 rdk_x5)
git checkout rdk_x5
# 重新编译
python export_yolo26_detect_bpu.py \
--weights your_model.pt \
--imgsz 640 \
--output your_model.hbmodel
确认工具链版本
# 检查 DDK 版本
hobot_ddk --version
# 应该 >= 1.24.0(X5 最新版本)
验证模型格式
# 查看模型信息
hbm_model_info your_model.hbmodel
# 确认输出包含 BPU 版本信息
使用正确的推理脚本
# ✅ 正确:使用 hobot_dnn
from hobot_dnn import Device, Model
model = Model('your_model.hbmodel')
outputs = model.process(inputs)
# ❌ 错误:不要直接用 onnxruntime
import onnxruntime as ort # 这是 CPU 推理
快速自检清单
# 1. 确认模型格式
ls -lh *.hbmodel *.bin # 应该有 .hbmodel 文件
# 2. 确认板子型号
cat /proc/device-info | grep Product # 应该是 X5
# 3. 确认 DDK 版本
hobot_ddk --version # 应该 >= 1.24.0
# 4. 推理时检查 BPU 负载
top -d 1 # 看是否有 hbm_runtime 进程占用
相关社区案例
根据之前搜索,以下帖子可能有帮助:
- yolov5 使用最新的工具链构建的 bin 模型 - 版本兼容性问题
- RDK X5 的 YOLO26 范例为何仍使用 NMS? - 官方示例配置
下一步
请执行以下操作并反馈结果:
| 步骤 | 命令 | 预期输出 |
|---|---|---|
| 1 | hobot_ddk --version |
版本号 >= 1.24.0 |
| 2 | 重新编译模型 | 生成 .hbmodel 文件 |
| 3 | hbm_model_info your_model.hbmodel |
显示 BPU 版本信息 |
| 4 | 运行推理测试 | FPS 应提升到 100+ |
如果重新编译后仍有问题,请把 hbm_model_info 的输出和推理脚本发出来,我帮你进一步分析。