这篇文档将介绍如何使用KSNN转换工具。
获取转换工具
工具集成在VIM3的NPU转换工具仓库里。
yan@yan-wyb:~$ git clone --recursive https://github.com/khadas/aml_npu_sdk.git
KSNN转换工具在acuity-toolkit/python
下,
yan@yan-wyb:~$ cd aml_npu_sdk/acuity-toolkit/python && ls convert data outputs
转换示例
这里以tensorflow Inception V3为例。
- 获取模型文件
yan@yan-wyb:~$ cd aml_npu_sdk/acuity-toolkit/python
yan@yan-wyb:~/aml_npu_sdk/acuity-toolkit/python$ wget https://github.com/yan-wyb/models-zoo/raw/master/tensorflow/inception/inception_v3_2016_08_28_frozen.pb
- 转换
yan@yan-wyb:~$ cd aml_npu_sdk/acuity-toolkit/python
yan@yan-wyb:~/aml_npu_sdk/acuity-toolkit/python$ ./convert --model-name inception \ > --platform tensorflow \ > --model /home/yan/yan/Yan/models-zoo/tensorflow/inception/inception_v3_2016_08_28_frozen.pb \ > --input-size-list '299,299,3' \ > --inputs input \ > --outputs InceptionV3/Predictions/Reshape_1 \ > --mean-values '128 128 128 0.0078125' \ > --quantized-dtype asymmetric_affine \ > --source-files ./data/dataset/dataset0.txt \ > --kboard VIM3 --print-level 0
转换时,若需要查看详细的信息,可以将--print-level 0
修改为--print-level 1
。
- 转换生成文件
yan@yan-wyb:~$ cd aml_npu_sdk/acuity-toolkit/python
yan@yan-wyb:~/aml_npu_sdk/acuity-toolkit/python$ ls outputs/inception/ inception.nb libnn_inception.so
更多
更多的转换参数,可以通过
-h
查看
yan@yan-wyb:~/aml_npu_sdk/acuity-toolkit/python$ ./convert -h usage: convert [-h] [--model-name MODEL_NAME] [--print-level PRINT_LEVEL] [--platform PLATFORM] [--kboard KBOARD] [--model MODEL] [--outputs OUTPUTS] [--input-size-list INPUT_SIZE_LIST] [--size-with-batch SIZE_WITH_BATCH] [--input-dtype-list INPUT_DTYPE_LIST] [--inputs INPUTS] [--weights WEIGHTS] [--std-values STD_VALUES] [--mean-values MEAN_VALUES] [--predef-file PREDEF_FILE] [--config CONFIG] [--proto PROTO] [--convert-engine CONVERT_ENGINE] [--quantized-dtype QUANTIZED_DTYPE] [--qtype QTYPE] [--batch-size BATCH_SIZE] [--iterations ITERATIONS] [--device DEVICE] [--hybrid HYBRID] [--algorithm ALGORITHM] [--moving-average-weight MOVING_AVERAGE_WEIGHT] [--divergence-nbins DIVERGENCE_NBINS] optional arguments: -h, --help show this help message and exit --model-name MODEL_NAME the model conversion name you want to use --print-level PRINT_LEVEL information printing level(default 0) : 0(just print error)/1(full information) --platform PLATFORM choose you platform : pytorch/caffe/tensorflow/tflite/darknet/onnx/keras --kboard KBOARD Choose khadas board: VIM3/VIM3L --model MODEL Model filename --outputs OUTPUTS Output points of graph --input-size-list INPUT_SIZE_LIST Inputs size list for correspoding input points --size-with-batch SIZE_WITH_BATCH Describe if the '--input-size-list' contain the highest batch dimension. --input-dtype-list INPUT_DTYPE_LIST Input tensors dtype for corresponding input points --inputs INPUTS Inputs points of graph --weights WEIGHTS Weights filename --std-values STD_VALUES Standard values for Tensorflow quantmodels --mean-values MEAN_VALUES Mean values for quant models --predef-file PREDEF_FILE Pre-define file to import some complex models --config CONFIG A json file that describes model information. --proto PROTO Switch protocol used for the Caffe binary protocol buffer file --convert-engine CONVERT_ENGINE Convert engine for model --quantized-dtype QUANTIZED_DTYPE Quant type :'asymmetric_affine/dynamic_fixed_point/perchannel_symmetric_affine/symmetric_affine/asymmetric_quantized' --qtype QTYPE qtpye: 'uint8/int8/int16' --batch-size BATCH_SIZE Integer value which specifies the batch size --iterations ITERATIONS Number of iterations to run, integer value. --device DEVICE Specify the compute device. GPU/CPU --hybrid HYBRID Setup a hybrid quantize network --algorithm ALGORITHM Quantization algorithm: normal(Default)/kl_divergence/moving_average. --moving-average-weight MOVING_AVERAGE_WEIGHT Moving average coefficient.Positive float value. --divergence-nbins DIVERGENCE_NBINS KL divergence histogram nbins.Positive integer value.