2、RK356X NPU测试DEMO
2.0、简介
-
NPU测试DEMO有以下测试案例:(以下说明以rknn_mobilenet_demo为例)
rknn_mobilenet_demo图像分类
rknn_ssd_demo目标检测
rknn_api_demo
3rdparty
-
NPU测试DEMO获取途径:
获取压缩包RKNN_API_for_RK356X_v1.0_20210430.tar.gz
进入examples/目录就可以看到4个DEMO示例
2.1、Android平台
RKNN API调用方式
Android平台支持两种调用RKNN API的方式
-
应用直接链接librknnrt.so
链路更短,性能更好
-
应用链接Android平台HIDL实现的librknn_api_android.so
可通过CTS/VTS测试(若不需要过CTS/VTS,则推荐使用第一种方式)
编译DEMO
-
NDK下载
编译Android DEMO必须下载对应版本的NDK
查看build-android.sh脚本可知,当前使用r16b版本NDK
网上下载后解压即可
下载网站:https://developer.android.com/ndk/downloads/revision_history?hl=zh-cn
-
rknn_mobilenet_demo编译
$ cd examples/rknn_mobilenet_demo //修改build-android.sh编译脚本中NDK路径 $ vim build-android.sh ANDROID_NDK_PATH=~/tanzh/rk3566-rk3568-android11.0/npu/android-ndk-r16b //开始编译 $ ./build-android.sh
运行测试
-
推送编译结果到设备端
$ adb push install/rknn_mobilenet_demo_Android /data/rknn_mobilenet_demo_Android
-
执行DEMO
// 运行环境准备 $ cd /data/rknn_mobilenet_demo_Android/ $ chmod 777 ./* $ export LD_LIBRARY_PATH=./lib // 执行程序 $ ./rknn_mobilenet_demo model/mobilenet_v1.rknn model/dog_224x224.jpg [ 529.043286] cma: cma_alloc: alloc failed, req-size: 429 pages, ret: -12 [ 529.043338] RKNPU fde40000.npu: RKNPU: failed to allocate 1757184 buffer. [ model input num: 1, output num: 1 i5nput2 ten9sors: 4ndex=0 name=input n_dims=4 dims=[3 224 224 1] n_elems=150528 size=150528 fmt=0 type=2 qnt_type=2 fl=0 zp=0 scale=0..0070812 output tensors: index=0 name=MobilenetV1/Predictions/Reshape_1 n_dims=2 dims=[0 0 1001 1] n_elems=1001 size=2002 fmt=0 type=1 qnt_type=2 fl=0 zp=0 scale=1.000000 rk3nn_r3n 45] RKNPU fde40000.npu: RKNPU: try to fallback to ---a Topl5 --- 156: 0.584961 155: 0.179321 205: 0.094116 752: 0.028854 880: 0.020905
2.2、Linux平台
编译DEMO
-
NPU DEMO编译
$ cd examples/rknn_mobilenet_demo #设置 build-linux.sh 下的 GCC_COMPILER 为正确的编译器路径 $ vim build-linux.sh GCC_COMPILER=/home/rpdzkj/tanzh/rk3566-rk3568-linux/sdk/rk356x/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu $ ./build-linux.sh
-
编译结果
编译成功后,会在demo项目下生成install/rknn_mobilenet_demo_Linux/目录
$ ls install/rknn_mobilenet_demo_Linux/ lib/ librknn_api.so // RKNN API库 librknnrt.so // model/ cat_224x224.jpg // 测试图片 dog_224x224.jpg // 测试图片 mobilenet_v1.rknn // 图片分类模型 rknn_mobilenet_demo // rknn程序
运行测试
-
推送NPU DEMO
$ adb push install/rknn_mobilenet_demo_Linux /userdata/
-
运行DEMO
$ cd /userdata/rknn_mobilenet_demo_Linux/ $ chmod 777 -R ./* $ export LD_LIBRARY_PATH=./lib $ ./rknn_mobilenet_demo model/mobilenet_v1.rknn model/dog_224x224.jpg 156: 0.584961 155: 0.179321 205: 0.094116 752: 0.028854 880: 0.020905
Debian平台需要拷贝rknpu.ko到系统目录下,并insmod后才能运行DEMO