当前位置:首页 > 熵投财富 > 正文

迅为RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示连板推理

开发板采用核心板+底板结构,在我们的资料里提供了底板的原理图工程以及PCB工程,可以实现真正意义上的裁剪、定制属于自己的产品,满足更多应用场合。

迅为针对RK3576开发板整理出了相应的开发流程以及开发中需要用到的资料,并进行详细的说明。快速定位需要使用的文档,大大提升研发速度。

迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片,集成了4个Cortex-A72和4个Cortex-A53核心,以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。

wKgZO2hY64uABe0wAAXux3zkM50026.png

2.2.2 连板推理

连板推理是rknn-toolkit2除了模型转换之外的第二个重要功能,所谓连板推理就是指通过

烧写线和adb功能将开发板和安装好rknn-toolkit2的Linux系统连接起来,将要推理的图片或

者其他数据传输到开发板上进行NPU推理,最后返回推理得到的数据。

连板推理的使用有两个前提条件,首先是开发板系统上已经装好了adb,并且连接到安装

好rknn-toolkit2的Linux系统。

迅为提供的buildroot、ubuntu以及debian默认都会启用adb功能,可以在Windows系统

中的烧录软件中或者设备管理器中查看是否有ADB设备连接,如下图所示:

然后将adb设备连接到装有rknn-toolkit2的Linux系统,我这里使用的是虚拟机,可以通

过虚拟机软件的可移动设备选项来将ADB从windows转移到ubuntu上,如下图所示:

wKgZPGhY64qAFqXcAAHA3uD-0Fo196.png

连接完成之后会在任务栏出现一个手机的图标如下图所示:

然后在终端输入“adb devices”命令后,有对应的设备连接列表即可证明adb连接成功:

wKgZPGhY64qAfAuxAACTBbewnvw214.png

使用连板推理的第二个个前提条件为开发板系统上有rknn_server可执行程序以及推理要

用到的库librknnrt.so,rknn_server可以接收adb传来要推理的数据以及将推理完成的结果返

回到装有rknn-toolkit2的Linux系统,rknn_server和librknnrt.so前面已经讲解了具体存放位置,

分别为rknn-toolkit2/rknpu2/runtime/Linux/rknn_server/aarch64/usr/bin和rknn-toolkit2/rknpu2/

runtime/Linux/librknn_api/aarch64目录下如下图所示:

wKgZO2hY64qAPPHiAADs35U8uFg541.png

然后将rknn_server和librknnrt.so拷贝到开发板上,其中rknn_server需要拷贝到/usr/bin

目录下,而librknnrt.so要拷贝到/usr/lib目录,ubuntu和debian系统默认已经有了rknn_server

和librknnrt.so,但是版本是1.5的,只有rknn-toolkit2、rknn_server和librknnrt.so三个版本保

持一致,才能得到正确的推理结果,所以不论使用的是什么系统,都需要重新拷贝。

拷贝完成之后在开发板上运行rknn_server,如下图所示:

wKgZPGhY64qAIHtfAAB7WzYq2ho200.png

然后修改resnet18例程中的test.py,在第87行的init_runtime接口中添加target=’rk3576’,

指定推理方式为连板推理,且设备SOC为RK3576,修改完成如下图所示:

wKgZO2hY64qAZdltAADSZmfeqW4507.png

然后保存退出,使用python3运行修改过的test.py,

最终运行结果如下图所示:

wKgZPGhY64uAS7bQAAXOIIV1d20591.png

从推理结果可以看出,推理结果为space shuttle航天飞机,推理结果正确,连板推理这种方式在后面的rknn_model_zoo中会经常用到,所以本章节的内容非常重要。