当前位置:   article > 正文

rv1126上跑yolov8。借助rknn_model_zoo 2.0更新,重点:在线预编译_rv1126 yolov8

rv1126 yolov8

最近rknn_model_zoo迎来一次大更新,其中最吸引人的就是全面支持RKNPU1的设备了。最近刚好有空玩了玩将yolov8部署到rv1126开发板上,遇到不少坑写个教程。

前期准备工作

rknn_model_zoo地址:github地址

rknpu官方压缩文件下载地址:RKNPU1.7.5官方压缩文件

rknpu官方环境搭建压缩文件(whl)下载地址:RKNPU环境搭建官方压缩文件

这里解释一下这两个文件的作用:
第一个文件解压后名字是:“rknn-toolkit-1.7.5”,里面是仓库的代码,包括文档等。但是没有供python安装的包。
在这里插入图片描述

第二个文件解压后名字是:“rknn-toolkit-v1.7.5-packages”,里面是python的安装包。
在这里插入图片描述
如何安装环境在这里不再赘述,可以在第一个文件的doc中找到。

至此我们应该有三个文件夹,分别是:

  • rknn_model_zoo
  • rknn-toolkit-1.7.5
  • rknn-toolkit-v1.7.5-packages
    一个小提示,建议使用miniconda等工具管理环境,因为rk的ai生态很丰富,比如百度的paddle或者其他都有自己需要依赖的环境。光是rk自己就有npu1、npu2、model_zoo等仓库,到后面会非常混乱。因此建议使用环境管理工具。

这里是minionda的下载地址:miniconda
选择这个文件
选择这个文件点击下载,得到一个sh文件,直接运行。如果可以试试chmod +x sh文件。记得没错的话一直next就能安装完毕。

然后有一些conda指令:
创建环境: conda create -n rv1126 python=3.6
请注意,这里的python版本不能只有选择, 你需要查看rknn-toolkit-v1.7.5-packages中有哪些版本的python,进行选择。
使用环境: conda activate rv1126
删除环境:conda info --envs conda remove --name env_name --all

此时你应该按照rknn-toolkit-1.7.5中的文档安装好了环境。接下来转移到rknn_model_zoo仓库

cd 进去仓库,运行build-linxu.sh脚本,指令如下:

./build-linux.sh -t rv1126 -a armhf -d yolov8
  • 1

不出意外会得到如下提示:
错误提示
这意味着我们没有设置交叉编译工具链地址,接下来进行设置。
我们打开docs下的文档,看到下面这段说明:
交叉编译工具链环境
点击armhf连接,得到适用于rv1126的交叉编译工具链:
在这里插入图片描述
在终端中打开bin文件夹,看到下面这两个文件:
在这里插入图片描述
输入pwd获取当前目录路径,然后加上arm-linux-gnueabihf
完整路径类似:
/home/root/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf

回到刚刚rknn_model_zoo中运行build-linux脚本的地方,执行如下指令:

export GCC_COMPILER=/home/root/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf
  • 1

再次运行

./build-linux.sh -t rv1126 -a armhf -d yolov8
  • 1

这时候应该已经能正常编译并得到程序了。然后我们需要准备模型。准备模型的步骤不再赘述,进入model_zoo的example下的yolov8文件夹中根据md文件的指引能得到yolov8.rknn模型。这些步骤需要在刚刚搭建好的toolkit环境中进行。
请注意,直接按照example中的指令转换得到的rknn模型在rv1126板子上加载速度非常慢。查阅rknn-toolkit文档可以知道我们需要进行在线预编译,下面进行在线预编译。

在线预编译模型需要板子接入网线或者跟电脑连接。我的板子没有调试口所以用的是adb connect指令直接连接ip。

#执行指令
adb connect 192.168.1.17
#得到结果
already connected to 192.168.1.17:5555
#连接成功
  • 1
  • 2
  • 3
  • 4
  • 5

阅读toolkit1在线预编译说明:在线预编译文件及说明
进行在线预编译:
cd到toolkit的examples->common_function_demos->export_rknn_precompile_model文件夹下,将刚刚得到的yolov8.rknn模型拷贝进去。
执行如下指令:

python export_rknn_precompile_model.py yolov8.rknn yolov8_precompile.rknn rv1126
  • 1

运行结束后得到yolov8_precompile.rknn,将这个rknn模型拷贝到rknn_model_zoo下的install对应的目录中。执行如下指令:

scp -r '(你的路径)/rknn_model_zoo/install/rv1126_linux_aarch64/rknn_yolov8_demo'  root@192.168.1.10:/root/

  • 1
  • 2

后面的root@192.168.1.10是rv1126板子的用户名和IP地址。可能需要输入密码。/root/是传输文件夹目的地,可以自行定义。

在MobaXterm_Portable工具中ssh到rv1126板子,在刚刚目的地文件夹下看到:
目的环境
你的文件夹应该没有out.png和yolov8.rknn.

cd到这个文件夹,执行指令:

./rknn_yolov8_demo yolov8_precompile.rknn ./model/bus.jpg
  • 1

得到结果:

在这里插入图片描述

运行速度非常快!

至此在rv1126上运行yolov8已经顺利结束。重点就是需要在线预编译。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号