wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.8_release/docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz --ftp-password=x5ftp@123$%
使用这官方个提取ftp下的cpudocker显示Login incorrect.
wget -c ftp://x5ftp@vrftp.horizon.ai/OpenExplorer/v1.2.8_release/docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz --ftp-password=x5ftp@123$%
使用这官方个提取ftp下的cpudocker显示Login incorrect.
结论:FTP 链接已失效,请改用官方 OSS 下载链接。
您使用的 FTP 地址 ftp://x5ftp@vrftp.horizon.ai 是旧版下载地址,目前官方已迁移到 阿里云 OSS 和 私有 Docker Registry,不再维护 FTP 服务。
根据官方最新汇总帖 【持续更新】地瓜机器人工具链 & OELLM 最新版本发布汇总,X5 v1.2.8 CPU Docker 镜像有两种获取方式:
wget https://d-robotics-aitoolchain.oss-cn-beijing.aliyuncs.com/oe_x5/1.2.8/docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz
# 1. 登录 Registry
docker login -u "ccr$deliver-ronly" registry.d-robotics.cc -p 'VLaeatrjF9yGf6I44trT74zKhUpZSVlr'
# 2. 拉取镜像
docker pull registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8
wget https://d-robotics-aitoolchain.oss-cn-beijing.aliyuncs.com/oe_x5/1.2.8/horizon_x5_open_explorer_v1.2.8-py310_20240926.tar.gz
docker load -i docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz 导入镜像如果下载仍有问题,请检查网络连接或尝试使用国内网络环境。
下载完离线包怎么用呢 保姆教程
下载完成后,按以下步骤操作:
# 进入下载目录
cd ~/Downloads # 或你的下载路径
# 导入镜像
docker load -i docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz
成功会显示:
Loaded image: registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8
# 查看镜像是否导入成功
docker images | grep ai_toolchain
# 创建并进入容器(挂载当前目录)
docker run -it --name x5_dev \
-v $(pwd):/workspace \
-w /workspace \
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8 \
bash
参数说明:
-it:交互式终端--name x5_dev:容器命名-v $(pwd):/workspace:挂载当前目录到容器内 /workspace-w /workspace:进入容器后的工作目录进入容器后,检查核心工具:
# 检查 hb_mapper(模型转换工具)
hb_mapper --version
# 检查 hb_model_convertor
hb_model_convertor --version
# 检查 Python 版本
python3 --version
# 检查地平线相关包
pip list | grep horizon
# 退出容器(不删除)
exit
# 再次进入已创建的容器
docker start -i x5_dev
# 删除容器(需要时重新创建)
docker rm x5_dev
# 查看容器列表
docker ps -a
# 1. 在宿主机准备模型文件
mkdir -p ~/x5_project/models
cp your_model.onnx ~/x5_project/models/
# 2. 启动容器并挂载项目目录
docker run -it --name x5_dev \
-v ~/x5_project:/workspace \
-w /workspace \
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8 \
bash
# 3. 在容器内进行模型转换
cd /workspace/models
hb_mapper convert --model your_model.onnx --output output_dir
# 4. 转换完成后,文件会同步到宿主机的 ~/x5_project/models/output_dir
| 问题 | 解决方案 |
|---|---|
docker load 报错 |
检查文件是否完整下载,重新下载 |
| 容器内无法访问外网 | Docker 默认可以,检查宿主机网络 |
| 挂载目录权限问题 | 在宿主机用 chmod 777 设置目录权限 |
| 容器退出后数据丢失 | 使用 -v 挂载宿主机目录,数据会保留 |
创建 start_x5_docker.sh:
#!/bin/bash
docker run -it --rm \
-v $(pwd):/workspace \
-w /workspace \
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8 \
bash
chmod +x start_x5_docker.sh
./start_x5_docker.sh # 一键启动
提示: 容器内的 /workspace 目录与宿主机当前目录同步,所有修改会实时保存。建议将项目代码放在独立目录中挂载使用。
这个指令书进去显示not found
hb_model_convertor 是 X3 平台的旧命令,X5 平台使用的是 hb_mapper。
这是两个不同平台的工具链,命令不通用:
hb_model_convertorhb_mapper在容器内执行以下命令验证工具链:
# 核心工具(X5 平台)
hb_mapper --version
# 查看 hb_mapper 帮助
hb_mapper --help
# 查看子命令
hb_mapper convert --help
| 功能 | X5 命令 | 说明 |
|---|---|---|
| 模型转换 | hb_mapper convert |
ONNX → BPU 模型 |
| 模型检查 | hb_mapper checker |
检查模型兼容性 |
| 量化校准 | hb_mapper quant |
PTQ 量化 |
| 查看版本 | hb_mapper --version |
显示工具链版本 |
# 1. 进入容器
docker run -it --name x5_dev \
-v $(pwd):/workspace \
-w /workspace \
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8 \
bash
# 2. 验证核心工具
hb_mapper --version
# 3. 检查 Python 环境
python3 --version
pip3 list | grep horizon
# 4. 查看工具链文档
hb_mapper --help
# 模型转换示例
hb_mapper convert \
--model your_model.onnx \
--output-dir output \
--config x5_config.json
# 量化示例
hb_mapper quant \
--model your_model.onnx \
--calibration-data ./calib_data \
--output-dir quant_output
hb_mapper 也找不到如果连 hb_mapper 都显示 not found,可能是:
环境变量未生效:
source /opt/horizon/hb_env.sh
hb_mapper --version
检查安装路径:
which hb_mapper
ls /opt/horizon/
重新确认镜像:
docker images | grep ai_toolchain
# 确认是 x5_cpu 镜像,不是 xj3(X3)镜像
总结:X5 开发请用 hb_mapper,忘记 hb_model_convertor 这个命令。如果还有问题,把容器内的 hb_mapper --version 输出发出来,我帮你确认工具链是否正常。
hb_mapper --version
hb_mapper --help
hb_mapper convert --help
这些我都执行验证成功了 后面我怎么用这个工具链呢 保姆教程
既然 hb_mapper 已验证成功,下面给你从模型到板端部署的完整流程:
# 创建项目目录
mkdir -p ~/x5_project/{models,onnx,config,output}
cd ~/x5_project
# 准备你的 ONNX 模型(放到 onnx 目录)
cp your_model.onnx ~/x5_project/onnx/
docker run -it --name x5_dev \
-v ~/x5_project:/workspace \
-w /workspace \
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8 \
bash
cd /workspace/onnx
# 检查模型是否支持 X5 BPU
hb_mapper checker \
--model your_model.onnx \
--output-dir ../output/check_result
查看 ../output/check_result 下的检查报告,确认:
在 /workspace/config 下创建 x5_config.json:
{
"model_parameters": {
"input_name": ["input"],
"input_shape": [[1, 3, 640, 640]],
"input_type": ["uint8"],
"output_name": ["output"]
},
"compiler_parameters": {
"target_chip": "X5",
"core_type": "BPU",
"optimization_level": 2
}
}
参数说明:
input_name:模型输入节点名(用 netron 查看 ONNX 结构)input_shape:输入形状 [batch, channel, height, width]input_type:输入数据类型(uint8/float32)target_chip:目标芯片(X5)cd /workspace
# 转换模型
hb_mapper convert \
--model onnx/your_model.onnx \
--config config/x5_config.json \
--output-dir output/converted
成功后会生成:
output/converted/your_model.bin(BPU 模型文件)output/converted/your_model.prototxt(模型描述文件)如果需要量化(推荐,提升推理速度):
# 创建校准数据目录
mkdir -p /workspace/calib_data/images
# 放入 100-500 张代表性图片(jpg/png 格式)
# 图片应与实际推理场景一致
/workspace/config/quant_config.json:
{
"model_parameters": {
"input_name": ["input"],
"input_shape": [[1, 3, 640, 640]],
"input_type": ["uint8"],
"output_name": ["output"]
},
"compiler_parameters": {
"target_chip": "X5",
"core_type": "BPU",
"optimization_level": 2
},
"quantization_parameters": {
"calibration_data_dir": "/workspace/calib_data/images",
"calibration_method": "minmax",
"quantization_type": "asymmetric"
}
}
hb_mapper quant \
--model onnx/your_model.onnx \
--config config/quant_config.json \
--output-dir output/quantized
# 在宿主机执行(退出容器后)
# 将转换后的模型文件传到 X5 板子
scp -r ~/x5_project/output/converted user@x5_ip:/home/user/models/
或者用 U 盘拷贝:
your_model.binyour_model.prototxtX5 板子上需要安装 Horizon ROS2 包 或使用 hb_rt 推理库:
# 在 X5 板子上
cd /home/user/models
# 使用 hb_rt 推理(需要安装 runtime)
hb_rt --model your_model.bin --input input.jpg --output result.jpg
或者用 C++/Python SDK:
# 示例:Python 推理
from horizon_inference import BpuPredictor
predictor = BpuPredictor("your_model.bin")
result = predictor.predict(input_image)
参考社区教程:RDK YOLO Toolkit
# 1. 准备 YOLO ONNX 模型
cd /workspace/onnx
# 从 Ultralytics 导出:yolo export model=yolov8n.onnx
# 2. 检查模型
hb_mapper checker --model yolov8n.onnx --output-dir ../output/check
# 3. 创建 X5 配置文件
cat > /workspace/config/yolo_config.json << 'EOF'
{
"model_parameters": {
"input_name": ["images"],
"input_shape": [[1, 3, 640, 640]],
"input_type": ["uint8"],
"output_name": ["output0"]
},
"compiler_parameters": {
"target_chip": "X5",
"core_type": "BPU"
}
}
EOF
# 4. 转换模型
hb_mapper convert \
--model onnx/yolov8n.onnx \
--config config/yolo_config.json \
--output-dir output/yolo_converted
# 5. 量化(可选)
hb_mapper quant \
--model onnx/yolov8n.onnx \
--config config/yolo_config.json \
--output-dir output/yolo_quantized
| 命令 | 说明 |
|---|---|
hb_mapper --help |
查看帮助 |
hb_mapper checker |
模型兼容性检查 |
hb_mapper convert |
模型转换 |
hb_mapper quant |
PTQ 量化 |
hb_mapper dump |
导出中间结果 |
netron model.onnx |
查看 ONNX 结构(需安装 netron) |
# 1. 查看工具链版本
hb_mapper --version
# 2. 查看支持的算子
hb_mapper op_list --target_chip X5
# 3. 详细日志
hb_mapper convert --log_level debug ...
# 4. 查看转换报告
cat output/converted/report.json
| 资源 | 链接 |
|---|---|
| 官方工具链汇总帖 | 版本发布汇总 |
| YOLO 部署教程 | RDK YOLO Toolkit |
| AI Agent 量化部署 | Skill 分享 |
| 官方文档 | RDK DOC |
下一步建议:
hb_mapper 的报错信息发到社区需要我针对某个具体模型(如 YOLO、分类、分割)给更详细的配置吗?
官方提供可转换的模型吗 我想下载进行学习 最好是yolo模型
结论:官方提供完整的 YOLO 模型示例和转换脚本,推荐直接下载 rdk_model_zoo 仓库。
# 克隆官方仓库(包含 YOLOv5/v8/v11/YOLO26 等完整示例)
git clone https://github.com/D-Robotics/rdk_model_zoo.git
# 进入 X5 目录
cd rdk_model_zoo/samples/vision/
仓库结构:
rdk_model_zoo/
├── samples/vision/
│ ├── ultralytics_yolo/ # YOLOv5/v8/v9/v10/v11 支持
│ │ ├── model/ # 预训练模型和配置文件
│ │ ├── tools/ # 导出脚本 (export_monkey_patch.py)
│ │ └── runtime/ # 板端推理代码
│ └── ultralytics_yolo26/ # YOLO26 系列支持
根据社区最新信息,官方提供部分预转换的 .bin 模型:
# YOLO11n 姿态检测模型示例
wget https://archive.d-robotics.cc/downloads/rdk_model_zoo/rdk_x5/yolo11n_pose_bayese_640x640_nv12_modified.bin
注意: 预转换模型有限,建议学习完整转换流程。
社区大神制作了 RDK YOLO Toolkit,可以一键完成:
下载 Skill:
# 1. 克隆仓库
git clone https://github.com/D-Robotics/rdk_model_zoo.git
cd rdk_model_zoo/samples/vision/ultralytics_yolo
# 2. 查看官方示例
ls -la model/ # 里面有配置文件和脚本
# 从 Ultralytics 下载官方预训练模型(以 YOLOv11s 为例)
wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.pt
# 或者用 Python 下载
python3 -c "from ultralytics import YOLO; YOLO('yolo11s.pt')"
# 1. 启动 X5 Docker 容器
docker run -it --name x5_yolo \
-v $(pwd):/workspace \
-w /workspace \
registry.d-robotics.cc/deliver/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8 \
bash
# 2. 安装 Ultralytics(如果需要导出 ONNX)
pip3 install ultralytics==8.3.0 onnx==1.15.0
# 3. 导出 ONNX(使用官方脚本或自定义)
python3 export_monkey_patch.py --pt yolo11s.pt
# 4. 检查模型
hb_mapper checker \
--model yolo11s.onnx \
--output-dir ./check_result
# 5. 量化转换
# 准备校准数据(100 张代表性图片)
mkdir -p calib_data
# 放入图片...
# 执行量化
hb_mapper quant \
--model yolo11s.onnx \
--config config/x5_config.json \
--output-dir ./quantized
# 1. 传输文件到 X5 板子
scp yolo11s_bayese_640x640_nv12.bin user@x5_ip:/home/user/models/
# 2. 在板子上运行推理
cd /home/user/models
python3 main.py \
--model-path yolo11s_bayese_640x640_nv12.bin \
--test-img test.jpg \
--label-file coco.names
如果想5 分钟内看到效果,直接跑官方示例:
# 1. 克隆仓库
git clone https://github.com/D-Robotics/rdk_model_zoo.git
cd rdk_model_zoo/samples/vision/ultralytics_yolo
# 2. 查看 README,按步骤执行
cat README.md
# 3. 通常包含:
# - 预训练模型下载链接
# - ONNX 导出脚本
# - 量化配置文件
# - 板端推理代码
| 步骤 | 内容 | 耗时 |
|---|---|---|
| 1 | 下载 rdk_model_zoo 仓库 |
5 分钟 |
| 2 | 跑通官方 YOLOv5/v8 示例 | 30 分钟 |
| 3 | 用自己的数据训练 YOLO | 1-2 小时 |
| 4 | 导出 ONNX + 量化转换 | 30 分钟 |
| 5 | 板端部署 + ROS2 集成 | 1 小时 |
| 资源 | 链接 |
|---|---|
| 官方 Model Zoo | GitHub - rdk_model_zoo |
| YOLO 全流程教程 | RDK YOLO Toolkit |
| 工具链版本汇总 | 官方发布帖 |
| 官方文档 | RDK DOC |
建议: 先从官方 ultralytics_yolo 示例跑通全流程,再替换成自己的模型和数据。遇到问题可以把 hb_mapper 的报错信息发到社区,或者参考 YOLO Toolkit 教程 中的问题排查部分。
需要我帮你整理某个具体 YOLO 版本(v5/v8/v11)的完整转换命令吗?
root@3931ba5229ca:/workspace/04_detection/03_yolov5s/mapper# hb_mapper quant \
–model yolov5s.onnx
–model-type onnx
–config yolov5s_config.yaml
ls^C
root@3931ba5229ca:/workspace/04_detection/03_yolov5s/mapper# hb_mapper quant
–model YOLOv5s.onnx
–model-type onnx
–config yolov5s_config.yaml
–output-dir ./check_result
Usage: hb_mapper [OPTIONS] COMMAND [ARGS]…
Error: No such command ‘quant’.这个是什么问题呢
hb_mapper quant 命令不存在!正确的量化编译命令是 hb_mapper makertbin。
这是 RDK X5 OE v1.2.8 工具链的标准用法,量化和编译是合并成一步的。
hb_mapper checker \
--model YOLOv5s.onnx \
--output-dir ./check_result
# 创建校准数据目录
mkdir -p calib_data
# 放入 20-50 张代表性图片(jpg/png 格式)
# 图片场景应与实际推理场景一致
# 例如:cp /path/to/images/*.jpg calib_data/
创建 yolov5s_config.yaml(注意是 yaml 不是 json):
model_parameters:
onnx_model: 'YOLOv5s.onnx'
march: "bayes-e" # X5 的 BPU 代号
output_model_file_prefix: 'yolov5s_bayese_640x640_nv12'
input_parameters:
input_type_rt: 'nv12' # 板端输入格式
input_type_train: 'rgb' # 训练时输入格式
input_layout_train: 'NCHW'
norm_type: 'data_scale'
scale_value: 0.003921568627451 # 1/255
mean_value: [0, 0, 0]
calibration_parameters:
cal_data_dir: './calib_data'
cal_data_type: 'float32'
calibration_type: 'default' # 可选:default/mix/kl/max
cal_sample_num: 32 # 校准图片数量
compiler_parameters:
compile_mode: 'latency'
debug: true
optimize_level: 'O3'
jobs: 16
关键字段说明:
march: X5 必须填 bayes-einput_type_rt: 板端推理输入格式(常用 nv12 或 rgb)scale_value: 归一化系数,RGB 输入通常是 1/255 = 0.003921568627451cal_data_dir: 校准数据目录路径cal_sample_num: 使用的校准图片数量(20-50 张)hb_mapper makertbin \
--config yolov5s_config.yaml \
--output-dir ./output
注意:
makertbin 不是 quant--model 参数,模型路径在 yaml 里配置--model-type 参数成功后会生成:
output/
├── yolov5s_bayese_640x640_nv12.bin # 可部署的模型文件
├── yolov5s_bayese_640x640_nv12.prototxt
├── quant_info.json # 量化精度报告(看 cosine similarity)
└── log/ # 编译日志
检查 quant_info.json 中的 cosine_similarity:
# 1. 检查模型
hb_mapper checker --model YOLOv5s.onnx --output-dir ./check_result
# 2. 量化编译(核心命令)
hb_mapper makertbin --config yolov5s_config.yaml --output-dir ./output
# 3. 查看帮助
hb_mapper makertbin --help
# 4. 查看版本
hb_mapper --version
| 问题 | 解决方案 |
|---|---|
calib_data 格式错误 |
确保是 jpg/png 图片,不是其他格式 |
cosine_similarity 太低 |
增加校准图片数量,或换 calibration_type: mix |
unsupported op |
查看 check_result 报告,某些算子需要 CPU fallback |
| 编译失败 | 检查 yaml 格式,确保缩进正确 |
| 资源 | 链接 |
|---|---|
| 量化部署 Skill(含完整决策树) | rdk-x5-toolchain-quantization |
| YOLO 全流程教程 | RDK YOLO Toolkit |
| 官方工具链汇总 | 版本发布帖 |
现在请执行:
hb_mapper makertbin --config yolov5s_config.yaml --output-dir ./output
如果还有报错,把完整的错误信息发出来,我帮你分析!
root@3931ba5229ca:/workspace/04_detection/03_yolov5s/mapper# hb_mapper makertbin \
–model YOLOv5s.onnx
–model-type onnx
–config yolov5s_config.yaml
–output-dir ./check_result
Usage: hb_mapper makertbin [OPTIONS]
Error: no such option: --output-dir 什么问题为什么
hb_mapper makertbin 不支持 --output-dir 参数!
输出目录应该在 yaml 配置文件 中指定,而不是通过命令行参数。
# 正确用法(只需要 --config)
hb_mapper makertbin --config yolov5s_config.yaml
在 yolov5s_config.yaml 中添加 output_dir 字段:
model_parameters:
onnx_model: 'YOLOv5s.onnx'
march: "bayes-e"
output_model_file_prefix: 'yolov5s_bayese_640x640_nv12'
output_dir: './output' # ← 在这里指定输出目录
input_parameters:
input_type_rt: 'nv12'
input_type_train: 'rgb'
input_layout_train: 'NCHW'
norm_type: 'data_scale'
scale_value: 0.003921568627451
mean_value: [0, 0, 0]
calibration_parameters:
cal_data_dir: './calib_data'
cal_data_type: 'float32'
calibration_type: 'default'
cal_sample_num: 32
compiler_parameters:
compile_mode: 'latency'
debug: true
optimize_level: 'O3'
jobs: 16
# 1. 确认配置文件已修改(添加了 output_dir)
cat yolov5s_config.yaml
# 2. 执行量化编译
hb_mapper makertbin --config yolov5s_config.yaml
# 3. 查看输出
ls -la ./output/
| 命令 | 支持的参数 |
|---|---|
hb_mapper checker |
--model, --output-dir |
hb_mapper makertbin |
--config (输出目录在 yaml 中配置) |
# 查看 makertbin 的帮助
hb_mapper makertbin --help
# 确认 yaml 中有 output_dir
grep "output_dir" yolov5s_config.yaml
现在执行:
hb_mapper makertbin --config yolov5s_config.yaml
应该就能正常运行了!如果还有报错,把完整错误信息发出来。
2026-06-29 11:23:31,657 ERROR Parse ‘calibration_parameters’ failed!
2026-06-29 11:23:31,657 ERROR yaml file parse failed. Please double check your config file inputs
2026-06-29 11:23:31,684 ERROR Cal_data_dir does not exist: /workspace/04_detection/03_yolov5s/mapper/calibration_data_rgb_f32
校准数据目录不存在!
错误信息很明确:
ERROR Cal_data_dir does not exist: /workspace/04_detection/03_yolov5s/mapper/calibration_data_rgb_f32
yaml 配置中 cal_data_dir 指定的目录必须存在且包含校准图片。
# 1. 创建校准数据目录
mkdir -p calibration_data_rgb_f32
# 2. 放入 20-50 张代表性图片(jpg/png 格式)
# 可以从现有数据集中复制,或下载一些测试图片
cp /path/to/your/images/*.jpg calibration_data_rgb_f32/
# 3. 验证目录内容
ls -la calibration_data_rgb_f32/
# 4. 重新执行
hb_mapper makertbin --config yolov5s_config.yaml
如果已有校准数据在其他位置,修改 yaml 配置:
calibration_parameters:
cal_data_dir: './calib_data' # ← 改为你实际有的目录
cal_data_type: 'float32'
calibration_type: 'default'
cal_sample_num: 32
| 要求 | 说明 |
|---|---|
| 格式 | jpg / png / bmp 图片 |
| 数量 | 20-50 张(至少 20 张) |
| 内容 | 应与实际推理场景一致 |
| 路径 | yaml 中配置的路径必须存在 |
如果暂时没有校准数据,可以先用官方示例图片测试流程:
# 1. 创建目录
mkdir -p calibration_data_rgb_f32
# 2. 下载一些测试图片(示例)
cd calibration_data_rgb_f32
wget https://github.com/ultralytics/assets/releases/download/v8.3.0/bus.jpg -O img_01.jpg
# 重复下载或复制多张图片,至少 20 张
# 3. 回到 mapper 目录
cd /workspace/04_detection/03_yolov5s/mapper
# 4. 重新执行
hb_mapper makertbin --config yolov5s_config.yaml
执行前确认:
# 1. 校准目录存在
ls -la calibration_data_rgb_f32/
# 2. 目录内有图片
ls calibration_data_rgb_f32/*.jpg | wc -l # 应 ≥ 20
# 3. yaml 路径正确
grep "cal_data_dir" yolov5s_config.yaml
# 4. 执行命令
hb_mapper makertbin --config yolov5s_config.yaml
现在请执行:
mkdir -p calibration_data_rgb_f32
# 放入至少 20 张图片后
hb_mapper makertbin --config yolov5s_config.yaml
如果还有报错,把完整错误信息发出来!
026-06-29 11:29:46,437 INFO *******************************************
2026-06-29 11:29:46,437 INFO First calibration picture name: COCO_val2014_000000181007.jpg
2026-06-29 11:29:46,437 INFO First calibration picture md5:
43d9736dd359c5b3d024322a9cb7fd78 /workspace/04_detection/03_yolov5s/mapper/calibration_data_rgb_f32/COCO_val2014_000000181007.jpg
2026-06-29 11:29:46,466 INFO *******************************************
2026-06-29 11:29:46,467 ERROR load cal data for input ‘data’ error
2026-06-29 11:29:46,484 ERROR cannot reshape array of size 42546 into shape (1,3,672,672)
校准图片尺寸与 yaml 配置中的 input_shape 不匹配!
错误信息:
ERROR cannot reshape array of size 42546 into shape (1,3,672,672)
(1, 3, 672, 672) = 1,354,752 个像素值YOLOv5 标准输入尺寸是 640x640,不是 672x672!
将 input_shape 从 672x672 改为 640x640:
model_parameters:
onnx_model: 'YOLOv5s.onnx'
march: "bayes-e"
output_model_file_prefix: 'yolov5s_bayese_640x640_nv12'
output_dir: './output'
input_parameters:
input_name: ['images'] # ← 确认与 ONNX 输入节点名一致
input_shape: [[1, 3, 640, 640]] # ← 改为 640x640
input_type_rt: 'nv12'
input_type_train: 'rgb'
input_layout_train: 'NCHW'
norm_type: 'data_scale'
scale_value: 0.003921568627451
mean_value: [0, 0, 0]
calibration_parameters:
cal_data_dir: './calibration_data_rgb_f32'
cal_data_type: 'float32'
calibration_type: 'default'
cal_sample_num: 32
compiler_parameters:
compile_mode: 'latency'
debug: true
optimize_level: 'O3'
jobs: 16
先检查你的 ONNX 模型实际输入名:
# 方法 1:使用 netron(推荐)
netron YOLOv5s.onnx
# 方法 2:使用 Python
python3 -c "
import onnx
model = onnx.load('YOLOv5s.onnx')
print('输入节点:', [i.name for i in model.graph.input])
print('输入形状:', [i.type.tensor_type.shape.dim for i in model.graph.input])
"
YOLOv5 的输入节点名通常是:
images(Ultralytics 官方导出)input(某些导出脚本)data(旧版本)确保 yaml 中的 input_name 与 ONNX 模型一致!
# 1. 检查 ONNX 输入
python3 -c "import onnx; m=onnx.load('YOLOv5s.onnx'); print([i.name for i in m.graph.input])"
# 2. 修改 yaml(input_shape 和 input_name)
vim yolov5s_config.yaml
# 3. 确认校准图片存在
ls calibration_data_rgb_f32/*.jpg | wc -l # 应 ≥ 20
# 4. 重新执行
hb_mapper makertbin --config yolov5s_config.yaml
| YOLO 版本 | 输入节点名 | 标准尺寸 |
|---|---|---|
| YOLOv5 | images |
640x640 |
| YOLOv8 | images |
640x640 |
| YOLOv11 | images |
640x640 |
| 旧版导出 | input / data |
640x640 |
现在请执行:
# 1. 确认输入节点名
python3 -c "import onnx; m=onnx.load('YOLOv5s.onnx'); print([i.name for i in m.graph.input])"
# 2. 修改 yaml 后重新运行
hb_mapper makertbin --config yolov5s_config.yaml
把 ONNX 输入节点名和新的报错信息发出来,我帮你确认配置!
yolov5s_config (copy).txt (10.5 KB)这个是你官方包 我应该怎么修改呢
看了你上传的官方配置文件,只需要修改 3 个关键地方 就能解决报错:
原配置:
input_shape: [[1, 3, 672, 672]]
改为:
input_shape: [[1, 3, 640, 640]] # YOLOv5 标准尺寸是 640
原配置可能是:
input_name: ['data'] # 或 ['input']
先确认你的 ONNX 实际输入名:
python3 -c "import onnx; m=onnx.load('YOLOv5s.onnx'); print([i.name for i in m.graph.input])"
然后改为对应的名字(通常是):
input_name: ['images'] # YOLOv5 官方导出的输入节点名
原配置:
cal_data_dir: './calibration_data_rgb_f32'
确认这个目录存在且有图片:
# 检查目录
ls -la calibration_data_rgb_f32/
# 如果没有,创建并放入图片
mkdir -p calibration_data_rgb_f32
cp /path/to/images/*.jpg calibration_data_rgb_f32/ # 至少 20 张
# 1. 确认 ONNX 输入节点名
INPUT_NAME=$(python3 -c "import onnx; m=onnx.load('YOLOv5s.onnx'); print(m.graph.input[0].name)")
echo "输入节点名:$INPUT_NAME"
# 2. 备份原配置
cp yolov5s_config.yaml yolov5s_config.yaml.bak
# 3. 修改 input_shape(672→640)
sed -i 's/672, 672/640, 640/g' yolov5s_config.yaml
# 4. 修改 input_name(根据实际检测结果)
sed -i "s/input_name: \['.*'\]/input_name: ['$INPUT_NAME']/g" yolov5s_config.yaml
# 5. 确认修改
grep -E "input_name|input_shape" yolov5s_config.yaml
# 6. 执行量化
hb_mapper makertbin --config yolov5s_config.yaml
model_parameters:
onnx_model: 'YOLOv5s.onnx'
march: "bayes-e"
output_model_file_prefix: 'yolov5s_bayese_640x640_nv12'
output_dir: './output'
input_parameters:
input_name: ['images'] # ← 根据 ONNX 实际输入名修改
input_shape: [[1, 3, 640, 640]] # ← 必须改 640
input_type_rt: 'nv12'
input_type_train: 'rgb'
input_layout_train: 'NCHW'
norm_type: 'data_scale'
scale_value: 0.003921568627451
mean_value: [0, 0, 0]
calibration_parameters:
cal_data_dir: './calibration_data_rgb_f32' # ← 确保目录存在
cal_data_type: 'float32'
calibration_type: 'default'
cal_sample_num: 32
# ✅ 1. 校准目录存在且有图片
ls calibration_data_rgb_f32/*.jpg | wc -l # 应 ≥ 20
# ✅ 2. 输入节点名匹配
python3 -c "import onnx; m=onnx.load('YOLOv5s.onnx'); print(m.graph.input[0].name)"
# ✅ 3. yaml 中 input_shape 是 640
grep "input_shape" yolov5s_config.yaml
# ✅ 4. 执行
hb_mapper makertbin --config yolov5s_config.yaml
先执行第 1 步确认输入节点名,把输出发给我,我帮你确认配置是否正确!