全志V853 NPU开发(三)模型转换、量化、导出

1.模型转换

我这里应用的是onnx格式模型,导入onnx模型时,若报错识别不到input shape,则需要使用onnx-sim工具转换为静态input shape
转换命令如下:

pegasus import onnx --model falldown.onnx --output-model falldown.json --output-data falldown.data

此步骤转换得到falldown.json和falldown.data。

2.获取yml文件

yml 文件对网络的输入和输出的超参数进行描述以及配置,这些参数包括,输入输出 tensor 的形状,归一化系数 (均值,零点),图像格式,tensor 的输出格式,后处理方式等等;
转换命令如下:

pegasus generate inputmeta --model falldown.json --input-meta-output falldown_inputmeta.yml

pegasus generate postprocess-file --model falldown.json --postprocess-file-output falldown_postprocess_file.yml

此步骤生成falldown_inputmeta.yml 和 falldown_postprocess_file.yml。

3.量化

此步骤主要是生成量化表文件,uint8量化数据格式;需要事先在模型同级文件夹下准备dataset.txt文件;
dataset.txt文件格式如下:

./val/1.jpg  0
./val/2.jpg  1
./val/3.jpg  2

同级目录下建立val文件夹,内放三个jpg图,分别命名为1 2 3;
量化命令如下,其中–batch-size参数设置为你提供的图片的数量:

pegasus quantize --model falldown.json --model-data falldown.data --batch-size 3 --device CPU --with-input-meta falldown_inputmeta.yml --rebuild --model-quantize falldown.quantize --quantizer asymmetric_affine --qtype uint8

此步骤生成 falldown.quantize量化表文件。

4.预推理

执行预推理生成输入data文件和输出结果文件;
输入命令:

pegasus inference --model falldown.json --model-data falldown.data --batch-size 1 --device CPU --with-input-meta falldown_inputmeta.yml --postprocess-file falldown_postprocess_file.yml

因为我使用的模型为1个输入1个输出的模型,所以此步骤生成 iter_0_attach_Sigmoid_Sigmoid_107_out0_0_out0_1_1.tensor 和 iter_0_input_104_out0_1_3_224_224.tensor两个文件;

其中iter_0_attach_Sigmoid_Sigmoid_107_out0_0_out0_1_1.tensor为输出结果,这个输出结果可以和后面你自己写代码推理此模型的输出做个对比;iter_0_input_104_out0_1_3_224_224.tensor为输入图片转换得到的浮点数输入。

5.导出模型

模型在开发板上部署需要转换为全志的格式(model.nb格式),输入命令:

pegasus export ovxlib --model falldown.json --model-data falldown.data --dtype quantized --model-quantize falldown.quantize --batch-size 1 --save-fused-graph --target-ide-project 'linux64' --with-input-meta falldown_inputmeta.yml --output-path ovxilb/falldown-simprj --pack-nbg-unify --postprocess-file falldown_postprocess_file.yml --optimize "VIP9000PICO_PID0XEE" --viv-sdk ${VIV_SDK}

即可生成部署模型以及配套的部署模板代码,如下图,这个代码可以用来做参考,然后去自己调用VIPLite库写个模型部署的demo,见下一篇。。。
全志V853 NPU开发(三)模型转换、量化、导出_第1张图片

你可能感兴趣的:(人工智能,深度学习,计算机视觉)