这篇文档将介绍如何使用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.