x5 cpu docker提取下载问题

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 镜像有两种获取方式:

方式 1:直接下载离线包(推荐)

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

方式 2:通过 Docker Registry 拉取

# 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

方式 3:下载完整 OE SDK 包(包含工具链)

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

建议

  1. 优先使用方式 1,直接下载 Docker 镜像离线包,速度快且稳定
  2. 下载完成后,使用 docker load -i docker_openexplorer_ubuntu_20_x5_cpu_v1.2.8.tar.gz 导入镜像
  3. 建议收藏官方汇总帖,后续版本更新会持续在该帖同步

如果下载仍有问题,请检查网络连接或尝试使用国内网络环境。

下载完离线包怎么用呢 保姆教程

Docker 离线包使用教程

下载完成后,按以下步骤操作:

步骤 1:导入镜像

# 进入下载目录
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

步骤 2:验证镜像

# 查看镜像是否导入成功
docker images | grep ai_toolchain

步骤 3:运行容器

# 创建并进入容器(挂载当前目录)
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:进入容器后的工作目录

步骤 4:验证工具链

进入容器后,检查核心工具:

# 检查 hb_mapper(模型转换工具)
hb_mapper --version

# 检查 hb_model_convertor
hb_model_convertor --version

# 检查 Python 版本
python3 --version

# 检查地平线相关包
pip list | grep horizon

步骤 5:常用操作

# 退出容器(不删除)
exit

# 再次进入已创建的容器
docker start -i x5_dev

# 删除容器(需要时重新创建)
docker rm x5_dev

# 查看容器列表
docker ps -a

步骤 6:典型工作流示例

# 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。

这是两个不同平台的工具链,命令不通用:

  • RDK X3 → 使用 hb_model_convertor
  • RDK X5 → 使用 hb_mapper

正确的验证命令

在容器内执行以下命令验证工具链:

# 核心工具(X5 平台)
hb_mapper --version

# 查看 hb_mapper 帮助
hb_mapper --help

# 查看子命令
hb_mapper convert --help

X5 工具链主要命令

功能 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

典型使用流程(X5)

# 模型转换示例
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,可能是:

  1. 环境变量未生效:

    source /opt/horizon/hb_env.sh
    hb_mapper --version
    
  2. 检查安装路径:

    which hb_mapper
    ls /opt/horizon/
    
  3. 重新确认镜像:

    docker images | grep ai_toolchain
    # 确认是 x5_cpu 镜像,不是 xj3(X3)镜像
    

总结:X5 开发请用 hb_mapper,忘记 hb_model_convertor 这个命令。如果还有问题,把容器内的 hb_mapper --version 输出发出来,我帮你确认工具链是否正常。

核心工具(X5 平台)

hb_mapper --version

查看 hb_mapper 帮助

hb_mapper --help

查看子命令

hb_mapper convert --help
这些我都执行验证成功了 后面我怎么用这个工具链呢 保姆教程

RDK X5 工具链完整使用教程(保姆级)

既然 hb_mapper 已验证成功,下面给你从模型到板端部署的完整流程:


一、准备工作

1. 在宿主机准备项目目录

# 创建项目目录
mkdir -p ~/x5_project/{models,onnx,config,output}
cd ~/x5_project

# 准备你的 ONNX 模型(放到 onnx 目录)
cp your_model.onnx ~/x5_project/onnx/

2. 启动 Docker 容器

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

二、模型转换流程

步骤 1:检查模型兼容性

cd /workspace/onnx

# 检查模型是否支持 X5 BPU
hb_mapper checker \
  --model your_model.onnx \
  --output-dir ../output/check_result

查看 ../output/check_result 下的检查报告,确认:

  • :white_check_mark: 算子是否都支持
  • :warning: 是否有算子需要 CPU fallback
  • :cross_mark: 是否有不支持的算子

步骤 2:创建转换配置文件

在 /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)

步骤 3:执行模型转换

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(模型描述文件)

三、量化流程(PTQ)

如果需要量化(推荐,提升推理速度):

步骤 1:准备校准数据

# 创建校准数据目录
mkdir -p /workspace/calib_data/images

# 放入 100-500 张代表性图片(jpg/png 格式)
# 图片应与实际推理场景一致

步骤 2:创建量化配置文件

/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"
  }
}

步骤 3:执行量化

hb_mapper quant \
  --model onnx/your_model.onnx \
  --config config/quant_config.json \
  --output-dir output/quantized

四、板端部署

步骤 1:传输文件到 X5 板子

# 在宿主机执行(退出容器后)
# 将转换后的模型文件传到 X5 板子
scp -r ~/x5_project/output/converted user@x5_ip:/home/user/models/

或者用 U 盘拷贝:

  • your_model.bin
  • your_model.prototxt

步骤 2:在 X5 板子上推理

X5 板子上需要安装 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)

五、完整示例(YOLO 检测)

参考社区教程: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

下一步建议:

  1. 先用一个简单的 ONNX 模型(如 ResNet)跑通全流程
  2. 再尝试你的实际模型
  3. 遇到问题把 hb_mapper 的报错信息发到社区

需要我针对某个具体模型(如 YOLO、分类、分割)给更详细的配置吗?

官方提供可转换的模型吗 我想下载进行学习 最好是yolo模型

官方 YOLO 模型资源获取

结论:官方提供完整的 YOLO 模型示例和转换脚本,推荐直接下载 rdk_model_zoo 仓库。

方式 1:下载官方 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 系列支持

方式 2:直接下载预转换模型(快速学习)

根据社区最新信息,官方提供部分预转换的 .bin 模型:

# YOLO11n 姿态检测模型示例
wget https://archive.d-robotics.cc/downloads/rdk_model_zoo/rdk_x5/yolo11n_pose_bayese_640x640_nv12_modified.bin

注意: 预转换模型有限,建议学习完整转换流程。

方式 3:使用官方 Skill 工具(最省事)

社区大神制作了 RDK YOLO Toolkit,可以一键完成:

  • YOLO 训练 → ONNX 导出 → BPU 量化 → 板端部署

下载 Skill:


保姆级学习路径(推荐新手)

第 1 步:获取示例模型

# 1. 克隆仓库
git clone https://github.com/D-Robotics/rdk_model_zoo.git
cd rdk_model_zoo/samples/vision/ultralytics_yolo

# 2. 查看官方示例
ls -la model/  # 里面有配置文件和脚本

第 2 步:下载预训练 YOLO 模型

# 从 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')"

第 3 步:在 Docker 中转换模型

# 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

第 4 步:板端测试

# 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 工具链的标准用法,量化和编译是合并成一步的。


正确的完整流程

步骤 1:模型检查(你已做过)

hb_mapper checker \
  --model YOLOv5s.onnx \
  --output-dir ./check_result

步骤 2:准备校准数据

# 创建校准数据目录
mkdir -p calib_data

# 放入 20-50 张代表性图片(jpg/png 格式)
# 图片场景应与实际推理场景一致
# 例如:cp /path/to/images/*.jpg calib_data/

步骤 3:创建配置文件(关键!)

创建 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-e
  • input_type_rt: 板端推理输入格式(常用 nv12 或 rgb)
  • scale_value: 归一化系数,RGB 输入通常是 1/255 = 0.003921568627451
  • cal_data_dir: 校准数据目录路径
  • cal_sample_num: 使用的校准图片数量(20-50 张)

步骤 4:执行量化编译(正确命令!)

hb_mapper makertbin \
  --config yolov5s_config.yaml \
  --output-dir ./output

注意:

  • 命令是 makertbin 不是 quant
  • 不需要 --model 参数,模型路径在 yaml 里配置
  • 不需要 --model-type 参数

步骤 5:验证输出

成功后会生成:

output/
├── yolov5s_bayese_640x640_nv12.bin  # 可部署的模型文件
├── yolov5s_bayese_640x640_nv12.prototxt
├── quant_info.json  # 量化精度报告(看 cosine similarity)
└── log/  # 编译日志

检查 quant_info.json 中的 cosine_similarity:

  • :white_check_mark: > 0.95: 精度很好
  • :warning: 0.8 - 0.95: 可用,但可能需要调优
  • :cross_mark: < 0.8: 精度损失严重,需要排查

完整命令速查

# 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:创建校准数据目录(推荐)

# 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

方案 2:修改 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 个像素值
  • 实际图片:只有 42,546 个像素值

YOLOv5 标准输入尺寸是 640x640,不是 672x672!


解决方案

修改 yaml 配置文件

将 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 输入节点名

先检查你的 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 个关键地方 就能解决报错:


修改位置 1:输入形状(第 12 行左右)

原配置:

input_shape: [[1, 3, 672, 672]]

改为:

input_shape: [[1, 3, 640, 640]]  # YOLOv5 标准尺寸是 640

修改位置 2:输入节点名(第 11 行左右)

原配置可能是:

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 官方导出的输入节点名

修改位置 3:校准数据目录(第 23 行左右)

原配置:

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 步确认输入节点名,把输出发给我,我帮你确认配置是否正确!