什么是ksnn?
全称
ksnn全称是Khadas Software Neural Network .
为什么做这个python版本
原始的SDK只有C/C++接口,自从2019年发布以来,一直有用户咨询是否会支持python api。Python在AI领域是最广泛使用的编程工具,因此我们决定做一个python版本的api,以满足用户对python版本的需求。
v0.1
v0.1是一个测试版本。我们希望更多的用户参与进来,给我们更多的反馈,未来我们会在完善API以后发布正式版本。
说明
依赖
- 基于一些特殊原因,目前的python api仍然依赖原始的SDK转换出来的nb文件以及case代码。
- 依赖的python包,除了核心包以外,主要包括opencv和numpy。
限制
- 目前版本只支持单输入,多输入在未来也会做支持
- 目前不支持混合量化
- 与原始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文档位置:
更多
- 任何测试的反馈和建议都欢迎,可以反馈在这个帖子里,或者:
-
未来每个平台都会增加示例。
-
未来会开源整个ksnn包,目前在测试阶段暂不开放。