NPU Python API: ksnn v0.1 TEST Version Release(Zh-CN)

什么是ksnn?

全称

ksnn全称是Khadas Software Neural Network .

为什么做这个python版本

原始的SDK只有C/C++接口,自从2019年发布以来,一直有用户咨询是否会支持python api。Python在AI领域是最广泛使用的编程工具,因此我们决定做一个python版本的api,以满足用户对python版本的需求。

v0.1

v0.1是一个测试版本。我们希望更多的用户参与进来,给我们更多的反馈,未来我们会在完善API以后发布正式版本。

说明

依赖

  1. 基于一些特殊原因,目前的python api仍然依赖原始的SDK转换出来的nb文件以及case代码。
  2. 依赖的python包,除了核心包以外,主要包括opencv和numpy。

限制

  1. 目前版本只支持单输入,多输入在未来也会做支持
  2. 目前不支持混合量化
  3. 与原始SDK一样,只有SDK支持的tensor和layer,才能使用

如何使用

SDK

获取SDK

$ git clone https://gitlab.com/khadas/aml_npu_sdk.git

使用SDK转换

原始模型无法直接调用npu,需要使用sdk转换模型,这里以mobilenet为例,通过python转换工具,获取需要的nb文件和库。

$ cd acuity-toolkit/python/
$ ./convert --model-name mobilenet_v1 \
--convert-platform tensorflow \
--tf-inputs input --tf-input-size-list '224,224,3' \
--tf-outputs MobilenetV1/Predictions/Softmax \
--tf-model-file ../demo/model/mobilenet_v1.pb \
--source-file-path ../demo/data/validation_tf.txt \
--channel-mean-value '128 128 128 128' \
--quantized-dtype asymmetric_affine-u8 \
--reorder-channel '0 1 2' \
--kboard VIM3 

获取转换后的数据

$ ls outputs/mobilenet_v1/
libnn_network.so  mobilenet_v1.nb

将数据复制到板子上。

ksnn包

获取

$ wget http://dl.khadas.com/development/ksnn-0.1-py3-none-linux_aarch64.whl

测试版本的wheel放在了khadas服务器上。

安装

这里只对python3做适配。安装wheel之前需要线安装Python3-pip

$ sudo apt install python3-pip

安装成功以后,安装wheel,

$ pip3 install ksnn-0.1-py3-none-linux_aarch64.whl

这里会同时安装opencv和numpy。

测试安装是否成功

$ python3
Python 3.8.10 (default, Jun  2 2021, 10:49:15) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ksnn
>>> 

正常导入就是安装成功了。

测试示例

获取代码

$ git clone https://gitlab.com/khadas/ksnn-examples.git

运行

安装依赖

$ pip3 install matplotlib

运行inceptionv3测试示例,

$ cd ksnn-examples/tensorflow/   
khadas@Khadas:~/ksnn-example/tensorflow$ python3 inceptionv3.py --nb-file models/VIM3/inceptionv3.nb --input-picture data/1080p.bmp --so-lib libs/libnn_inceptionv3.so 
 |---+ KSNN Version: v0.1 +---| 
Create Neural Network: 46ms or 46580us
set input time :  0.004050493240356445
Start run graph [1] times...
Run the 1 time: 20.00ms or 20854.00us
vxProcessGraph execution time:
Total   20.00ms or 20906.00us
Average 20.91ms or 20906.00us
get ouput time:  0.0007474422454833984
-----+ Show Top5 +-----
   904: 0.41821
   656: 0.11829
   446: 0.09064
   639: 0.05692
   825: 0.03821

运行yolov3测试代码,可以参考README

文档

API文档位置:

更多

  1. 任何测试的反馈和建议都欢迎,可以反馈在这个帖子里,或者:
  1. 未来每个平台都会增加示例。

  2. 未来会开源整个ksnn包,目前在测试阶段暂不开放。

1 Like