RDK X5:yolo11n.onnx 转 yolo11n.bin 报错:Illegal instruction (core dumped)
参考文档:《地瓜派RDK X5部署YOLOv11n完整实战:从7 FPS到47 FPS的性能优化之路》
在章节: 6.4 执行PTQ量化 > 5. 开始PTQ量化
出现错误
将yolo11n.pt转换成yolo11n.onnx, 现在参考上面的文件将 onnx 转bin时,出现问题。
执行脚本:
hb_mapper makertbin --model-type onnx \
--config /data/yolo11n_config_optimized.yaml
yolo11n_config_optimized.yaml 内容:
# yolo11n_config_optimized.yaml - 最终优化版配置
# ============================================
# YOLOv11n RDK X5 高性能PTQ量化配置
# 核心:解决Softmax性能瓶颈,实现100+ FPS
# ============================================
model_parameters:
# ONNX模型路径(Docker内路径)
onnx_model: '/data/models/yolo11n.onnx'
# 目标平台:RDK X5使用bayes-e架构
march: 'bayes-e'
# 不输出中间层结果(加快编译速度)
layer_out_dump: False
# 输出目录和文件前缀
working_dir: '/data/output_yolo11n_optimized'
output_model_file_prefix: 'yolo11n_detect_bayese_640x640_nv12'
# ============================================
# 【核心配置】解决Softmax性能瓶颈
# ============================================
# 将C2PSA注意力模块中的Softmax算子指定到BPU运行
# 使用int16精度(Softmax不支持int8,但支持int16)
#
# 不同模型的配置:
# - YOLOv11 n/s/m: 只有1个Softmax
# - YOLOv11 l/x: 有2个Softmax(需要配置两个)
node_info: {
"/model.10/m/m.0/attn/Softmax": {
'ON': 'BPU',
'InputType': 'int16',
'OutputType': 'int16'
}
}
# 如果是YOLOv11 l/x,取消下面的注释:
# node_info: {
# "/model.10/m/m.0/attn/Softmax": {'ON': 'BPU','InputType': 'int16','OutputType': 'int16'},
# "/model.10/m/m.1/attn/Softmax": {'ON': 'BPU','InputType': 'int16','OutputType': 'int16'}
# }
# ============================================
# 输入参数配置
# ============================================
input_parameters:
# 输入节点名称(留空自动识别)
input_name: ""
# 【关键】运行时输入格式:nv12
# RDK X5的BPU原生支持nv12格式,无需CPU转换
# 性能提升:省去BGR->RGB转换时间
input_type_rt: 'nv12'
# 训练时输入格式:rgb
# YOLO模型训练使用RGB格式
input_type_train: 'rgb'
# 输入数据布局:NCHW
# PyTorch/ONNX默认使用NCHW (Batch, Channels, Height, Width)
input_layout_train: 'NCHW'
# 输入shape(留空自动从ONNX读取)
input_shape: ''
# 归一化类型:data_scale
# 使用简单的缩放归一化 (x * scale)
norm_type: 'data_scale'
# 归一化系数:1/255
# YOLO标准预处理:将[0,255]映射到[0,1]
scale_value: 0.003921568627451
# ============================================
# 校准参数配置
# ============================================
calibration_parameters:
# 校准数据目录
cal_data_dir: '/data/calibration_data'
# 校准数据类型
cal_data_type: 'float32'
# 【关键】校准方法:default
# default: 自动搜索最佳量化策略(推荐)
# 其他选项:
# - kl: KL散度最小化(精度高,编译慢)
# - max: 最大值法(速度快,精度略低)
# - mix: 混合策略(精度最高,编译最慢)
calibration_type: 'default'
# ============================================
# 编译器参数配置
# ============================================
compiler_parameters:
# 编译模式:latency
# latency: 低延迟优先(单帧推理快)
# throughput: 吞吐量优先(批量推理快)
compile_mode: 'latency'
# 调试模式:关闭(加快编译)
debug: False
# 【关键】优化等级:O3
# O0: 不优化(调试用)
# O1: 基本优化
# O2: 标准优化
# O3: 最高优化(推荐)
optimize_level: 'O3'
出现报错:
2026-02-10 14:23:42,847 INFO End to prepare the onnx model.
2026-02-10 14:23:45,086 INFO Saving model to: ./.hb_check/original_float_model.onnx.
2026-02-10 14:23:45,091 INFO Start to optimize the onnx model.
Illegal instruction (core dumped)
