This document will introduce how to use the KSNN conversion tool.
Get convert tool
The tool is integrated in the NPU conversion tool warehouse of VIM3.
yan@yan-wyb:~$ git clone --recursive https://github.com/khadas/aml_npu_sdk.git
The KSNN conversion tool is under acuity-toolkit/python
,
yan@yan-wyb:~$ cd aml_npu_sdk/acuity-toolkit/python && ls convert data outputs
Example for Convert
Choose tensorflow Inception V3 as a exmple.
- Get forzen model
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/tensonrflow/inception/inception_v3_2016_08_28_frozen.pb
- Convert
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
During conversion, if you need to view detailed information, you can modify --print-level 0
to --print-level 1
.
- File generated after conversion
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
More
More conversion parameters can be viewed through
-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.