模型量化过程问题求助

在进行模型量化阶段执行hb_mapper makertbin的时候输入array大小出现不匹配该怎么解决,数据预处理的时候已经将图片resize成对应大小了,数据类型也进行了转化,输入尺寸也是匹配的:

# transform code
import os
import cv2
import numpy as np


if __name__=='__main__':
    imgpath='/home/gawain/dok/pose/val'
    src_images=os.listdir(imgpath)
    dstpath='/home/gawain/dok/pose/valbin'
    print('tr start, wait for a sec')
    for i, x in enumerate(src_images):
        x=imgpath+'/'+x
        img=cv2.imread(x)
        img=cv2.resize(img, (368, 368))
        img=np.transpose(img, (2, 0, 1))
        img=np.expand_dims(img, axis=0)
        img=img.astype(np.float32)
        img.tofile(f'{dstpath}/{i}.bgr')


# config.yaml
# Copyright (c) 2020 Horizon Robotics.All Rights Reserved.

# 模型转化相关的参数
model_parameters:

  # 必选参数
  # Onnx浮点网络数据模型文件, 例如:onnx_model: './horizon_x3_onnx.onnx'
  onnx_model: '/home/gawain/dok/pose/merged_network.onnx'

  march: "bernoulli2"
  layer_out_dump: False
  working_dir: 'model_output'
  output_model_file_prefix: 'horizon_x3'

# 模型输入相关参数
input_parameters:

  input_name: "image:0"
  input_shape: '1x3x368x368'
  input_type_rt: 'bgr'
  input_layout_rt: 'NCHW'

  # 必选参数
  # 原始浮点模型训练框架中所使用训练的数据类型,可选的值为rgb/bgr/gray/featuremap/yuv444, 例如:input_type_train: 'bgr'
  input_type_train: 'bgr'

  # 必选参数
  # 原始浮点模型训练框架中所使用训练的数据排布, 可选值为 NHWC/NCHW, 例如:input_layout_train: 'NHWC'
  input_layout_train: 'NCHW'

  input_batch: 1

  
  # 必选参数  
  # 原始浮点模型训练框架中所使用数据预处理方法,可配置:no_preprocess/data_mean/data_scale/data_mean_and_scale
  # no_preprocess 不做任何操作,对应的 mean_value  或者 scale_value 均无需配置
  # data_mean 减去通道均值mean_value,对应的 mean_value 需要配置,并注释掉scale_value
  # data_scale 对图像像素乘以data_scale系数,对应的 scale_value需要配置,并注释掉mean_value
  # data_mean_and_scale 减去通道均值后再乘以scale系数,标识下方对应的 mean_value  和 scale_value 均需配置
  norm_type: 'no_preprocess'

  # 必选参数
  # 图像减去的均值, 如果是通道均值,value之间必须用空格分隔
  # 例如:mean_value: 128.0 或者 mean_value: 111.0 109.0 118.0 
  mean_value: 

  # 必选参数
  # 图像预处理缩放比例,如果是通道缩放比例,value之间必须用空格分隔,计算公式:scale = 1/std
  # 例如:scale_value: 0.0078125 或者 scale_value: 0.0078125 0.001215 0.003680
  scale_value: 

# 模型量化相关参数
calibration_parameters:

  # 必选参数
  # 模型量化的参考图像的存放目录,图片格式支持Jpeg、Bmp等格式,图片来源一般是从测试集中选择100张图片,并要覆盖典型场景,不要是偏僻场景,如过曝光、饱和、模糊、纯黑、纯白等图片 
  # 请根据 02_preprocess.sh 脚本中的文件夹路径来配置,例如:cal_data_dir: './calibration_data_yuv_f32'
  cal_data_dir: '/home/gawain/dok/pose/valbin_f32'

  cal_data_type: 'float32'
  calibration_type: 'default'
  # max_percentile: 0.99996

# 编译器相关参数
compiler_parameters:

  compile_mode: 'latency'
  debug: False
  # core_num: 2
  optimize_level: 'O3'

已经够验证过图像的array大小是符合要求的,但是载入尺寸显示很大是为什么-

865273f51302b220ac3613d04cff730.png

您好,建议图片预处理完之后把尺寸打印出来看看,看是否和模型输入严格对齐

您好,打出来了,已确认对齐,二进制读出后array总长是406,272

在yaml文件中将input_type_rt设置为nv12,同时将input_layout_rt注释掉,再试试