rv1126上跑yolov8。借助rknn

2024-06-08 1865阅读

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

前期准备工作

rknn_model_zoo地址:github地址

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

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

这里解释一下这两个文件的作用:

第一个文件解压后名字是:“rknn-toolkit-1.7.5”,里面是仓库的代码,包括文档等。但是没有供python安装的包。

rv1126上跑yolov8。借助rknn

第二个文件解压后名字是:“rknn-toolkit-v1.7.5-packages”,里面是python的安装包。

rv1126上跑yolov8。借助rknn

如何安装环境在这里不再赘述,可以在第一个文件的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

    rv1126上跑yolov8。借助rknn

    选择这个文件点击下载,得到一个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
    

    不出意外会得到如下提示:

    rv1126上跑yolov8。借助rknn

    这意味着我们没有设置交叉编译工具链地址,接下来进行设置。

    我们打开docs下的文档,看到下面这段说明:

    rv1126上跑yolov8。借助rknn

    点击armhf连接,得到适用于rv1126的交叉编译工具链:

    rv1126上跑yolov8。借助rknn

    在终端中打开bin文件夹,看到下面这两个文件:

    rv1126上跑yolov8。借助rknn

    输入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板子,在刚刚目的地文件夹下看到:

    rv1126上跑yolov8。借助rknn

    你的文件夹应该没有out.png和yolov8.rknn.

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

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

    得到结果:

    rv1126上跑yolov8。借助rknn

    rv1126上跑yolov8。借助rknn

    运行速度非常快!

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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]