Introduction and guide on how to use the KSNN conversion tool.
The conversion tool is integrated in the NPU SDK.
$ git lfs install $ git lfs clone --recursive https://github.com/khadas/aml_npu_sdk.git
The KSNN conversion tool is under acuity-toolkit/python
,
$ cd aml_npu_sdk/acuity-toolkit/python && ls $ convert data outputs
Choose tensorflow MobileNet SSD as an example.
1. Get the frozen model,
$ cd aml_npu_sdk/acuity-toolkit/python $ wget https://github.com/yan-wyb/models-zoo/raw/master/tensorflow/mobilenet_ssd/ssd_mobilenet_v1_coco_2017_11_17.pb
2. Convert,
# uint8 $ ./convert --model-name mobilenet_ssd \ > --platform tensorflow \ > --model /home/yan/yan/Yan/models-zoo/tensorflow/mobilenet_ssd/ssd_mobilenet_v1_coco_2017_11_17.pb \ > --input-size-list '300,300,3' \ > --inputs FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/mul_1 \ > --outputs "'concat concat_1'" \ > --mean-values '127.5 127.5 127.5 0.007843137' \ > --quantized-dtype asymmetric_affine \ > --source-files ./data/dataset/dataset0.txt \ > --kboard VIM3 --print-level 0 # int8 $ ./convert --model-name mobilenet_ssd \ > --platform tensorflow \ > --model /home/yan/yan/Yan/models-zoo/tensorflow/mobilenet_ssd/ssd_mobilenet_v1_coco_2017_11_17.pb \ > --input-size-list '300,300,3' \ > --inputs FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/mul_1 \ > --outputs "'concat concat_1'" \ > --mean-values '127.5 127.5 127.5 0.007843137' \ > --quantized-dtype dynamic_fixed_point \ > --qtype int8 \ > --source-files ./data/dataset/dataset0.txt \ > --kboard VIM3 --print-level 0 # int16 $ ./convert --model-name mobilenet_ssd \ > --platform tensorflow \ > --model /home/yan/yan/Yan/models-zoo/tensorflow/mobilenet_ssd/ssd_mobilenet_v1_coco_2017_11_17.pb \ > --input-size-list '300,300,3' \ > --inputs FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/mul_1 \ > --outputs "'concat concat_1'" \ > --mean-values '127.5 127.5 127.5 0.007843137' \ > --quantized-dtype dynamic_fixed_point \ > --qtype int16 \ > --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
.
3. Model file generated after conversion.
$ cd aml_npu_sdk/acuity-toolkit/python $ ls outputs/mobilenet_ssd/ mobilenet_ssd.nb libnn_mobilenet_ssd.so