问题定位
错误信息很明确:
User input march invalid: 'x5'. It should in list ['bernoulli2', 'bayes', 'bayes-e']
原因:march 参数应该填芯片代号,不是产品名。
- RDK X5 对应的芯片是 Bayes-E,应该用
bayes-e x5是产品名,工具链不识别
解决方案
修改 YAML 中的 march 参数:
model_parameters:
onnx_model: /workspace/yolo11n-seg.onnx
march: bayes-e # 改为 bayes-e,不是 x5
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: float32
compiler_parameters:
compile_mode: latency
optimize_level: O3
debug: false
完整执行命令
# 重新创建配置文件
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: float32
compiler_parameters:
compile_mode: latency
optimize_level: O3
debug: false
EOF
# 执行转换
hb_mapper makertbin --config /workspace/yolo11n_seg_config.yaml
芯片代号对照表
| 产品 | 芯片代号 (march) |
|---|---|
| RDK X3 / 旭日 X3 | bernoulli2 |
| RDK X5 | bayes-e |
| 其他 Bayes 系列 | bayes |
验证转换结果
转换成功后,用以下命令验证模型:
hb_perf /workspace/yolo11n_seg.bin
查看输出是否为 6 个输出头(YOLO11-seg 的特征)。
参考教程:从头开始 YOLOV11 自训练模型的板端部署和量化 - 里面有完整的配置示例。