yaml文件配置

问题定位

错误信息很明确:

ERROR cannot reshape array of size 103914 into shape (1,3,640,640)

原因:校准数据格式不对。

  • 你的校准目录里是 JPG 图片文件
  • 但 cal_data_type: float32 告诉工具链期望 原始 float32 数据
  • 工具链读取 JPG 文件二进制数据(103914 字节),无法 reshape 成 3×640×640=1,228,800 的数组

解决方案

方案一:使用图片格式(推荐,简单)

修改 YAML,让工具链直接读取 JPG 图片:

calibration_parameters:
  cal_data_dir: /workspace/calibration_images
  cal_data_type: jpg          # 改为 jpg,工具链会自动解码

方案二:预处理校准数据(正式部署推荐)

使用 OE 包里的预处理脚本将图片转为 float32 格式:

# 1. 找到数据预处理脚本(在 OE 包里)
find /open_explorer -name "data_preprocess.py"

# 2. 执行预处理(假设脚本在 /open_explorer/tools/)
python3 /open_explorer/tools/data_preprocess.py \
  --src_dir /workspace/calibration_images \
  --dst_dir /workspace/calibration_data_float \
  --dst_type float32 \
  --img_size 640

# 3. 修改 YAML 指向新目录
calibration_parameters:
  cal_data_dir: /workspace/calibration_data_float
  cal_data_type: float32

方案三:快速验证(先跑通)

如果只是想快速验证流程,用方案一改 YAML 即可:

cat > /workspace/yolo11n_seg_config.yaml <<'EOF'
model_parameters:
  onnx_model: /workspace/yolo11n-seg.onnx
  march: bayes-e
  output_model_file_prefix: /workspace/yolo11n_seg

input_parameters:
  input_name: images
  input_type_rt: nv12
  input_type_train: rgb
  input_layout_train: NCHW
  norm_type: data_scale
  scale_value: 0.003921568627451

calibration_parameters:
  cal_data_dir: /workspace/calibration_images
  cal_data_type: jpg

compiler_parameters:
  compile_mode: latency
  optimize_level: O3
  debug: false
EOF

hb_mapper makertbin --config /workspace/yolo11n_seg_config.yaml

校准数据要求

要求 说明
数量 建议 100+ 张,最少 50 张
格式 JPG/PNG 或预处理后的 float32
尺寸 不需要严格 640×640,工具链会自动 resize
内容 应覆盖实际使用场景的各种情况

验证校准数据

# 检查图片数量和格式
ls -la /workspace/calibration_images/ | head -20
ls /workspace/calibration_images/ | wc -l

# 查看第一张图片信息(如果安装了 ImageMagick)
identify /workspace/calibration_images/calib_00.jpg

建议:先用方案一(cal_data_type: jpg)跑通流程,确认模型转换成功后,再用方案二做正式部署的校准数据预处理。

参考教程:从头开始 YOLOV11 自训练模型的板端部署和量化 - 里面有完整的校准数据准备说明。