xref: /OK3568_Linux_fs/external/rknpu2/examples/rknn_dynamic_shape_input_demo/README.md (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1# RKNN C API 动态形状输入Demo
2这是一个使用RKNN C API进行动态形状输入推理的演示应用。您可以在这个应用中看到如何使用RKNN 动态形状 C API对图像进行分类。
3
4# 如何使用
51. 克隆或下载此代码库ssh://git@10.10.10.59:8001/hpc/rknpu2.git62. 在终端中进入动态形状推理Demo目录。
7```
8cd examples/rknn_dynamic_shape_input_demo
9```
103. 根据芯片平台,运行shell脚本编译应用程序,以RK3562 Android系统为例,命令如下:
11```
12./build-android_RK3562.sh
13```
144. 将Demo程序目录通过adb命令推送到开发板系统中,命令如下:
15```
16adb push ./install/rknn_dynshape_demo_Android/ /data
17注意:如果是安卓系统,需要adb root & adb remount
18```
195. 设置runtime库链接路径
20```
21export LD_LIBRARY_PATH=./lib
22```
236. 运行程序,以rk3562平台为例,./rknn_dynshape_inference model/RK3562/mobilenet_v2.rknn images/dog_224x224.jpg 命令对图像进行分类,其中 mobilenet_v2.rknn 是神经网络模型文件的名称,dog_224x224.jpg 是要分类的图像文件的名称。
24
25
26# 编译说明
27## Arm Linux系统
28为特定的芯片平台指定交叉编译器路径,修改`build-linux_<TARGET_PLATFORM>.sh`中的`GCC_COMPILER`,其中TARGET_PLATFORM为芯片名,然后执行
29```
30./build-linux_<TARGET_PLATFORM>.sh
31```
32## Android系统
33指定Android NDK的路径,修改`build-android_<TARGET_PLATFORM>.sh`中的`ANDROID_NDK_PATH`,其中TARGET_PLATFORM为芯片名,然后执行
34```
35./build-android_<TARGET_PLATFORM>.sh
36```
37
38# 包含的功能
39此演示应用程序包含以下功能:
40
41- 创建一个包含动态形状的神经网络模型。
42参考https://github.com/rockchip-linux/rknn-toolkit2仓库下的examples/functions/dynamic_input
43
44- 从文件中读取一张图像,并使用神经网络模型对其进行分类。程序步骤如下:
451. 使用 rknn_init() 函数初始化 RKNN 上下文。
462. 使用 rknn_set_input_shape() 函数设置模型输入的形状信息,包括形状、布局等。
473. 使用 rknn_query() 函数查询当前设置的模型输入和输出的信息,包括形状、数据类型和大小等。
484. 使用 rknn_inputs_set() 函数设置模型输入的数据,包括数据指针和数据大小等。
495. 使用 rknn_run() 函数运行模型。
506. 使用 rknn_outputs_get() 函数设置是否需要float类型结果并获取输出数据。
517. 处理输出数据,得到分类结果和概率。
528. 使用 rknn_release() 函数释放RKNN上下文。