如果本过程,您需在示例文件夹内进行,那么您需要先执行文件夹中的 00_init.sh 脚本以获取对应的原始模型和数据集。
在进行模型校准时,需要20~100份的标定样本输入,每一份样本都是一个独立的数据文件。为了确保校准后模型的精度效果,我们希望这些校准样本来自于您训练模型使用的训练集或验证集,不要使用非常少见的异常样本,例如纯色图片、不含任何检测或分类目标的图片等。
您需要把取自训练集/验证集的样本进行前处理(前处理过程与原始浮点模型数据前处理过程一致),处理完后的校准样本会与原始浮点模型具备一样的数据类型(input_type_train)、尺寸(input_shape) 和 layout(input_layout_train),
您可以通过 numpy.save 命令将数据保存为npy文件,工具链校准时会基于 numpy.load 命令进行读取。例如,有一个使用ImageNet训练的用于分类的原始浮点模型,它只有一个输入节点,输入信息描述如下:
输入类型:BGR。
输入layout:NCHW。
输入尺寸:1x3x224x224。
原始浮点模型进行数据前处理时的步骤如下:
图像长宽等比scale,短边缩放到256。
center_crop 方法获取224x224大小图像。
对齐输入layout为模型所需的 NCHW 。
转换色彩空间为模型所需的 BGR 。
图像数值范围调整为模型所需的[0, 255]。
按通道减mean。
数据乘以scale系数。
针对上述举例模型的样本处理代码如下(为避免过长代码篇幅,各种简单transformer实现代码未贴出,transformer使用方法可参考 图片处理transformer说明 ):
请注意,yaml文件中input_shape参数作用为指定原始浮点模型的输入数据尺寸。若为动态输入模型则可通过这个参数设置转换后的输入大小,而校准数据的shape大小应与input_shape保持一致。
例如:若原始浮点模型输入节点shape为?x3x224x224("?"号代表占位符,即该模型第一维为动态输入),转换配置文件中设置input_shape: 8x3x224x224,则需要准备的每份校准数据大小为8x3x224x224。(请知悉,此类输入shape第一维不等于1的模型,不支持通过input_batch参数修改模型batch信息。)