赞
踩
最近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中找到。
至此我们应该有三个文件夹,分别是:
这里是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
不出意外会得到如下提示:
这意味着我们没有设置交叉编译工具链地址,接下来进行设置。
我们打开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
再次运行
./build-linux.sh -t rv1126 -a armhf -d yolov8
这时候应该已经能正常编译并得到程序了。然后我们需要准备模型。准备模型的步骤不再赘述,进入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
#连接成功
阅读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
运行结束后得到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/
后面的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
得到结果:
运行速度非常快!
至此在rv1126上运行yolov8已经顺利结束。重点就是需要在线预编译。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。