您好,根据参考资料,生成debug的校准数据,需要在yaml文件中增加如下参数:
debug_mode: “dump_calibration_data”
增加之后,build模型报错误信息如下。
2023-05-16 09:43:06,642 INFO Start Model Convert…
2023-05-16 09:43:06,648 ERROR yaml file parse failed. Please double check your config file inputs
2023-05-16 09:43:06,649 ERROR Key ‘compiler_parameters’ error:
Wrong key ‘debug_mode’ in {‘compile_mode’: ‘latency’, ‘debug’: True, ‘debug_mode’: ‘dump_calibration_data’, ‘core_num’: 1, ‘optimize_level’: ‘O2’}
我的yaml文件内容如下:
# 模型转化相关的参数
# ------------------------------------
# model conversion related parameters
model_parameters:
# Onnx浮点网络数据模型文件
# -----------------------------------------------------------
# the model file of floating-point ONNX neural network data
#onnx_model: ‘/root/workspace/ptq_bev_lane_det/bev_lane_det.onnx’
onnx_model: ‘/root/workspace/ptq_bev_lane_det/bev_lane_det_v1.onnx’
# 适用BPU架构
march: “bayes”
# 指定模型转换过程中是否输出各层的中间结果,如果为True,则输出所有层的中间输出结果,
layer_out_dump: False
# 模型转换输出的结果的存放目录
working_dir: ‘model_output’
# 模型转换输出的用于上板执行的模型文件的名称前缀
output_model_file_prefix: ‘bev_lane_det’
# remove_node_type: “Dequantize”
#配置指定Conv16节点的输出数据类型为int16。
#set_node_data_type: “Conv_124:int16”
#set_node_data_type: “Conv_124:int32”
# 模型输入相关参数, 若输入多个节点, 则应使用’;'进行分隔, 使用默认缺省设置则写None
input_parameters:
# (选填) 模型输入的节点名称, 此名称应与模型文件中的名称一致, 否则会报错, 不填则会使用模型文件中的节点名称
input_name: “img”
# 网络实际执行时,输入给网络的数据格式,包括 nv12/rgb/bgr/yuv444/gray/featuremap,
input_type_rt: ‘bgr’
# 网络实际执行时输入的数据排布, 可选值为 NHWC/NCHW
# 若input_type_rt配置为nv12,则此处参数不需要配置
input_layout_rt: “NHWC”
# 网络训练时输入的数据格式,可选的值为rgb/bgr/gray/featuremap/yuv444
#input_type_train: ‘rgb’
input_type_train: ‘bgr’
# 网络训练时输入的数据排布, 可选值为 NHWC/NCHW
# ------------------------------------------------------------------
# the data layout in network training, available options: NHWC/NCHW
input_layout_train: ‘NCHW’
# (选填) 模型网络的输入大小, 以’x’分隔, 不填则会使用模型文件中的网络输入大小,否则会覆盖模型文件中输入大小
input_shape: ‘1x3x576x1024’
# 网络实际执行时,输入给网络的batch_size, 默认值为1
input_batch: 1
# 网络输入的预处理方法,主要有以下几种:
# no_preprocess 不做任何操作
# data_mean 减去通道均值mean_value
# data_scale 对图像像素乘以data_scale系数
# data_mean_and_scale 减去通道均值后再乘以scale系数
norm_type: ‘data_mean_and_scale’
mean_value: 123.675 116.28 103.53
scale_value: 0.01712475 0.017507 0.01742919
# 模型量化相关参数
# -----------------------------
# model calibration parameters
calibration_parameters:
# 模型量化的参考图像的存放目录,图片格式支持Jpeg、Bmp等格式,输入的图片
# 应该是使用的典型场景,一般是从测试集中选择20~100张图片,另外输入
# 的图片要覆盖典型场景,不要是偏僻场景,如过曝光、饱和、模糊、纯黑、纯白等图片
# 若有多个输入节点, 则应使用’;'进行分隔
cal_data_dir: ‘/root/workspace/ptq_bev_lane_det/calib_640_f32’
# 校准数据二进制文件的数据存储类型,可选值为:float32, uint8
cal_data_type: ‘float32’
# 如果输入的图片文件尺寸和模型训练的尺寸不一致时,并且preprocess_on为true,
# 则将采用默认预处理方法(skimage resize),
# 将输入图片缩放或者裁减到指定尺寸,否则,需要用户提前把图片处理为训练时的尺寸
# preprocess_on: False
# 模型量化的算法类型,支持default、mix、kl、max、load,通常采用default即可满足要求
# 如不符合预期可先尝试修改为mix 仍不符合预期再尝试kl或max
# 当使用QAT导出模型时,此参数则应设置为load
# 相关参数的技术原理及说明请您参考用户手册中的PTQ原理及步骤中参数组详细介绍部分
calibration_type: ‘default’
#calibration_type: ‘kl’
#使模型以int16低精度输出
#optimization: “set_model_output_int16”
# 编译器相关参数
# ----------------------------
# compiler related parameters
compiler_parameters:
# 编译策略,支持bandwidth和latency两种优化模式;
# bandwidth以优化ddr的访问带宽为目标;
# latency以优化推理时间为目标
compile_mode: ‘latency’
# 设置debug为True将打开编译器的debug模式,能够输出性能仿真的相关信息,如帧率、DDR带宽占用等
debug: False
#debug_mode: “dump_calibration_data”
# 编译模型指定核数,不指定默认编译单核模型, 若编译双核模型,将下边注释打开即可
core_num: 1
# 优化等级可选范围为O0~O3
# O0不做任何优化, 编译速度最快,优化程度最低,
# O1-O3随着优化等级提高,预期编译后的模型的执行速度会更快,但是所需编译时间也会变长。
# 推荐用O2做最快验证
optimize_level: ‘O2’