对于pytorch模型,hbdk-model-verifier工具是用来验证 pt 和 hbm 模型一致性的,同时该模型也会保存输入输出
一般来说,对于 pyramid 输入的数据(nv12)类型,正确的数据预处理方法是:
板端hbm,直接给模型。
仿真器pt,nv12转yuv444,减128,除128后,给模型
那hbdk-model-verifier工具,是怎么验证这两个模型一致性的呢?
hbdk-model-verifier的源码在工具链的dockers路径下,
/usr/local/lib/python3.8/dist-packages/hbdk_model_verifier
下面是整体代码的总结:
生成ddr的.bin
生成pyramid的 .y 或 .yuv
生成resizer的 .y 或 .yuv
bpu推理:上面的存的input_data直接给
pt推理:
ddr 直接给
pyramid 经过 convert_nv12_to_yuv444_int8() 存原图数据
Resizer 经过 convert_nv12_to_yuv444_int8() 存roi数据
输入数据处理
cd verifier.py 查看main(), 准备输入数据是下面这部分代码:
生成随机输入数据
判断数据来源
info.generate_random_input_file() 这个函数首先会判断input_source是那种类型,

ddr
pyramid
resizer 略
存数据
指定输入数据
def generate_data_for_bpu(self):
判断输入数据类型
ddr
指定后缀.bin
pyramid
指定后缀.y或.yuv
判断图片尺寸是否正确
resizer
指定后缀.y或.yuv

存数据
推理hbm模型(bpu/simulator)
bpu上推理
前面都是一些准备的代码,推理调的这个接口
simulator上推理
推理pt模型
处理输入数据
推理模型
处理输入数据时,会判断数据来源,调用不同的函数
以pyramid为例:

