参考
rockchip rknn-tookit2
rockchip rknpu2
开发环境介绍
宿主机 HostPC: 装有ubuntu22.04(其它亦可参考)
Docker: ubuntu20.04
开发板:rock 5a with rk3588s 芯片
宿主机环境配置
[Rock Pi 1] Rock pi 开启VNC远程桌面适用于VNC+KDE桌面
[Rock Pi 2] rknn宿主机端配置之docker开发环境部署
YOLO v5 模型部署(C++版)
源码下载(宿主机端)
#根据上篇文章创建的docker虚拟机编号执行下面指令进入docker虚拟机
dengml@dengml-SER:~$ sudo docker exec -it -u dengml -w /home/dengml 612c918d5027 /bin/bash
[sudo] dengml 的密码:
dengml@612c918d5027:~$ cd /data/ubuntu/rockpi/rknn-toolkit2
#执行以下命令使能之前创建的python虚拟环境(虽然本节似乎没用到宿主机的python)
dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2$ source venv/bin/activate
#获取rknpu2源代码
(venv) dengml@612c918d5027:/data/ubuntu/rockpi$ git clone https://kgithub.com/rockchip-linux/rknpu2.git
此代码中包含yolo v5等多个模型的demo,这里我们先部署官方提供的rknn模型
安装交叉编译工具(宿主机端)
ubuntu软件库里已经包含了交叉aarch64-linux交叉编译工具链,因此本着一切从简的原则可以直接使用apt 安装如下:
$ sudo apt update
$ sudo apt-get install gcc-aarch64-linux-gnu
$ sudo apt-get install g++-aarch64-linux-gnu
#安装 cmake 编译工具
$ sudo apt install cmake
源码编译(宿主机端)
$ cd rknpu2/examples/rknn_yolov5_demo
$ ./build-linux_RK3588.sh
#代码通过scp到开发板端,也可以通过winscp、samba、等其他方式
$ scp -r install/rknn_yolov5_demo_Linux [email protected]:~/work
验证(开发板端)
编译后的二进制及模型文件scp到板子后,通过ssh登陆到开发板端
#打开cp过来的目录
rock@rock-5a:~$ cd work/rknn_yolov5_demo_Linux/
#添加运行依赖的动态库
rock@rock-5a:~/work/rknn_yolov5_demo_Linux$ export LD_LIBRARY_PATH=./lib
#执行识别命令
rock@rock-5a:~/work/rknn_yolov5_demo_Linux$ ./rknn_yolov5_demo model/RK3588/yolov5s-640-640.rknn model/bus.jpg
命令执行后结果如图所示
运行中的log如图所示,首先在moba界面点击SFTP文档管理器界面(标记为“1”处),点击“2”处一般可以直接打开右边终端所在的目录,如果不能自动打开,就在“3”处输入我们右边终端所在的目录,如上图所示。我们可以看到生成了一个新的文件out.jpg, 即模型生成的结果。至此,C++版本的rknn模型部署完成。双击打开,结果如下