当你拿到性能强大的RK3568核心板,是否曾对那颗标称1Tops的NPU感到无从下手?特别是在Android系统上,如何绕过复杂的环境配置,快速部署AI模型?本文将抛开理论,直击实战,手把手带你利用迅为提供的完整资料,在Android系统上点亮NPU,让你的AI应用跑得更快、更稳。

为什么选择迅为的官方工具链?
RK3568的NPU确实强大,但对许多开发者而言,它就像一座“锁住的金矿”。从零开始交叉编译、解决依赖、适配系统……这个过程不仅繁琐,还极易因版本问题无法发挥硬件最佳性能。
迅为提供的RKNPU2工具链,其核心价值在于:
·开箱即用:工具已预编译,与Android系统内核、驱动深度适配,省去大量环境配置时间。
·性能最优:针对迅为硬件进行了底层参数调优,确保NPU算力被高效利用。
·生态完整:从模型转换、示例代码到部署指南,提供了详情手册。
接下来,我们将进入最核心的实战环节。
让NPU跑起来-在Android系统中使用NPU
下载rknpu2并拷贝到虚拟机Ubuntu,如下图所示,RKNPU2提供了访问
rk3568芯片NPU的高级接口。

下载地址为“iTOP-3568开发板\02_【iTOP-RK3568开发板】开发资料\11_NPU
使用配套资料\01_rknpu2工具”
Android平台有俩种方式来调用RKNN API
第一种:AI应用直接链接RKNN SDK库文件librknnrt.so
第二种:应用链接Android平台HIDL实现的librknn_api_android.so,HIDL
是用于指定Android HAL和其用户之间的接口的一种接口描述语言。
如果需要通过CTS/VTS测试(兼容性测试套件/供应商测试套件)的安卓设
备,可以使用基于Android平台HIDL实现的RKNN API。
如果不需要通过CTS/VTS测试的安卓设备,建议直接使用librknnrt.so,这
样对各个调用接口流程的链路更短,可以提供改好的性能。
对于使用Android HIDL实现的RKNN API的代码位于RK356x Android系统
SDK的vendor/rockchip/hardware/interfaces/neuralnetworks目录下。当编译完
Android系统时,会生成一些NPU相关的库,如下所示,但是对于应用只需要链
接使用librknn_api_android.so即可。
/system/lib/librknn_api_android.so
/system/lib/librknnhal_bridge.rockchip.so
/system/lib64/librknn_api_android.so
/system/lib64/librknnhal_bridge.rockchip.so
/vendor/lib64/rockchip.hardware.neuralnetworks@1.0.so
/vendor/lib64/rockchip.hardware.neuralnetworks@1.0-adapter-helper.so
/vendor/lib64/librknnrt.so
/vendor/lib64/hw/rockchip.hardware.neuralnetworks@1.0-impl.so
在RKNN SDK中提供了Android平台的MobileNet图像分类、SSD目标检
测、YOLOv5目标检测示例。这些Demo能够为客户基于RKNN SDK开发自己
的AI应用提供参考。在rknpu2/examples中还有很多例子,如下图所示:

下面以rknn_yolov5_demo在RK3568 Android 64位平台上运行为例,来讲
解如何快速上手运行。整体思路分为三步:
1在虚拟机Ubuntu18.04上交叉编译demo程序rknn_yolov5_demo(demo
已经默认是rknn,无需进行模型转换)
2部署到iTOP-RK3568开发板
3在开发板上运行demo
3.2.1 下载编译所需工具
1 Android系统编译需要下载NDK,Android NDK下载地址为如下所示:
https://developer.android.google.cn/ndk/downloads/older_releases#ndk-17c-download
s
将下载地址复制到浏览器,并打开网页,如下图所示:

2点击“我同意这些条款”,
3往下滑动网页,找到Android NDK r17c(建议的版本),下载Linux 64位(x86)
的软件包,
4下载完毕,在Ubuntu的/opt/tool_chain目录下新建tool_chain文件夹,然后将android-ndk-r17c-linux-x86_64.zip拷贝到ubuntu的/opt/tool_chain路径下,然后解压,
3.2.2 修改编译工具路径
1因为此章节以rknn_yolov5_demo在RK3568 Android11 64位平台上运行为
例,所以修改examples/rknn_yolov5_demo/build-XXX.sh的编译工具路径,如下
图所示:

2修 改build-android_RK356X.sh文 件 , 将ANDROID_NDK_PATH修 改 为android-ndk-r17c的保存路径,
NDK在ubuntu上的路径为/opt/tool_chain/android-ndk-r17c/,如下图所示。注
意!!!ANDROID_NDK_PATH修改的路径要和实际的路径一致。
3.2.3 更新 RKNN 模型
RKNN是Rockchip NPU平台(也就是开发板)使用的模型类型,是以.rknn结
尾的模型文件。
RKNN SDK提供的demo程序中默认自带了RKNN模型,在RKNN SDK的
examples/rknn_yolov5_demo/model/RK356X/目录下,
如使用自己的模型需要转换成rknn模型,转换方法可以参考第5章节。
在得到RKNN模型之后,demo程序使用C接口在RK3568平台开发应用,
3.2.4 编译 demo
1在终端命令窗口进入rknn_yolov5_demo文件夹,输入以下命令:
cd examples/rknn_yolov5_demo/
2运行build-android_RK356X.sh脚本编译程序
./build-android_RK356X.sh
3此例子为编译RK3568的安卓11 64位平台。若需要编译其他平台请选择相应
的脚本。详情可参考/rknpu2/examples/rknn_yolov5_demo/README.md。 若在编
译时出现cmake错误,可执行“apt install cmake”命令安装cmake后再运行编
译脚本。
4编译完成之后,编译好的程序一般放在install目录,
5我们可以编译生成Android或Linux Demo(需要交叉编译环境)。也可以直
接 下 载 编 译 好 的Demo, 可 以 在 网 盘 资 料 资 料“iTOP-3568开 发 板\02_
【iTOP-RK3568开 发 板 】 开 发 资 料\11_NPU使 用 配 套 资 料\02_NPU
demo\Android”下载。
3.2.5 开发板运行 demo
1开发板上要烧写Android11系统,并连接好usb线。
接着使用命令sudo apt install android-tools-adb在虚拟机Ubuntu上安装adb工
具。
2开发板系统启动之后,我们将开发板连接到虚拟机Ubuntu18.04上。
3开发板被ubuntu识别之后,在demo目录下输入“adb devices”命令可以查看到
开发板设备。
4推送拷贝rknn_server到开发板,输入以下命令:
adb push runtime/RK356X/Android/rknn_server/arm64/rknn_server /vendor/bin/
5推送拷贝librknnrt.so到开发板,输入以下命令:
adb push runtime/RK356X/Android/librknn_api/arm64-v8a/librknnrt.so /vendor/lib64
6使用adb推送拷贝rknn_yolov5_demo_Android(上一小节编译好的程序)到开
发板的/data目录,注意!因为android系统权限问题,只能拷贝到data目录。输
入以下命令拷贝:
adb push rknn_yolov5_demo_Android /data/
如果拷贝失败,要在串口终端上输入以下命令,然后再进行push操作
su
chmod 777 /data
7然后我们进入开发板所在的系统,输入“adb shell”命令。
8进入程序所在的目录,输入以下命令:
cd /data/rknn_yolov5_demo_Android/
9设置库文件的路径,输入以下命令:
export LD_LIBRARY_PATH=./lib
10 运行程序来识别相应的图片中物体,输入以下命令:
用法Usage: ./rknn_yolov5_demo
./rknn_yolov5_demo ./model/RK356X/yolov5s-640-640.rknn ./model/bus.jpg
11打开一个新的窗口终端,下载识别后的图片out.jpg到虚拟机ubuntu18.04上
查看,输入以下命令:
adb pull /data/rknn_yolov5_demo_Android/out.jpg ./
查看out.jpg如下图所示:
-
Android
+关注
关注
12文章
3984浏览量
133014 -
开发板
+关注
关注
25文章
6121浏览量
113144
发布评论请先 登录
【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
【迅为RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用
迅为RK3568开发板瑞芯微资料升级更新驱动开发指南
迅为RK3568多个系统版本并流畅运行Android12和11版本
NPU性能深度评测:瑞芯微RK3588、RK3576、RK3568、RK3562

实战RK3568性能调优:如何利用迅为资料压榨NPU潜能-在Android系统中使用NPU
评论