RK3588上部署yoloV5

电脑win10 装的 vmware 16pro 操作系统ubuntu20.04 

开发板 rk3588 一根 usb-typeC的数据线 用来PC与开发板通信

在ROCKCHIP芯片上的EVB板子上使用

RKNN-Toolkit2 和 RKNPU工具 将onnx模型转化为rknn模型 并进行板端推理

第一步是安装RKNN-toolkit2

大致逻辑是在ubuntu 上安装RKNN-toolkit2 工具 在pc端 利用此工具将onnx模型转化为 rknn模型

先是下载python解释器 我用的是python3.6.5,利用该解释器创建虚拟环境,用的是virtualenv,

在py365虚拟环境中下载运行yoloV5所需的依赖包,所有的包安装好后(至少要保证进入python3.6.5 导入任何一个包 不会出错)

开始安装RKNN-Toolkit2,检查是否安装成功 在虚拟环境中 运行

python3
from rknn.api import RKNN

 下一步就是进入到该目录下,执行test.py程序.

python3 test.py

这时 会得到一个rknn文件和一个 推理的图片,转换和推理模型 均运行在pc端的模拟器环境中

也可以更改python代码 设置 target、device_id

第二步RKNN-Toolkit2 连板调试

首先要保证PC端可以与RK3588进行通信 ,usb-typec 线连接成功后(Tpyec插头可以试着翻转一下插入)

adb devices

会出现设备的序列号,可以在设备管理器中查看检测到的设备 比对序列号,此时我们可以通过pc端控制板子 也可以进行文件传输

更新板子的 rknn_server 和 librknnrt.so

librknnrt.so: 是一个板端的 runtime 库。

rknn_server: 是一个运行在板子上的后台代理服务,用于接收 PC 通过 USB 传输过来的协议,

然后执行板端 runtime 对应的接口,并返回结果给 PC

RK3588 自动启动 rknn _server  所以就不需要 restart_rknn.sh 

可以查看rknn_server是否正在启动

PC端运行

adb shell
pgrep rknn_server

 传输文件

BORAD_ARCH 在64位Linux系统中 对应aarch64目录
1. adb push Linux/rknn_server/${BOARD_ARCH}/usr/bin/下的所有文件到/usr/bin目录
2. adb push Linux/librknn_api/${BOARD_ARCH}/librknnrt.so到/usr/lib目录

adb push 是一个用于将文件从计算机(主机)传输到连接的 Android 设备上的命令。

在板端执行 ,更改文件权限

chmod +x /usr/bin/rknn_server
chmod +x /usr/bin/start_rknn.sh
chmod +x /usr/bin/restart_rknn.sh

开始进行连板调试 更改test.py代码,设置 target_platform,target,device_id 为RK3588 以及设备号

执行转换和推理 test.py 这时就是利用RK3588进行转换和推理 并且将结果返回给PC

第三步 RKNPU2 的编译及使用方法

由于板子为Linux系统 则需下载gcc交叉编译器

推荐版本 gcc-9.3.0-x86_64_arrch64-linux-gnu

这里介绍一下 gcc交叉编译器

GCC(GNU Compiler Collection)是一个开源的编译器集合,它可以在多个平台上进行编译,并提供了针对不同语言(如C、C++、Fortran等)的编译器。其中,gcc交叉编译器是GCC的一个组件,它用于将源代码从一种平台(称为主机)编译成另一种平台(称为目标)上可执行的代码。

交叉编译器主要用于在一种体系结构上开发和编译软件,然后将其部署到另一种体系结构上运行。这种情况通常发生在嵌入式系统和跨平台开发中,例如在开发嵌入式Linux系统时,可以使用GCC交叉编译器在一个平台上编译ARM架构的代码,然后将结果代码部署到ARM处理器的目标设备上运行。

通过使用交叉编译器,开发者可以利用一个主机平台上的强大开发环境来开发和测试软件,然后将其部署到不同的目标平台上,从而提高开发效率和灵活性。

修改编译工具的路径

更改bulid-linux_RK3588.sh的 GCC_COMPILER,TOOL_CHAIN,

将之前转换后的rknn文件复制到rknpu2/examples/rknn_yolov5_demo/model/RK3588/

开始进行编译rknn_yolov5_demo 执行./bulid-linux_RK3588.sh

将编译好的程序和 rknn文件 推送到板子的data文件夹中

进入板子系统 adb shell 进入程序所在目录 设置库文件路径

进行板端推理

运行程序识别相应的图片中物体的类别。

用法 Usage: ./rknn_yolov5_demo

命令: ./rknn_yolov5_demo ./model/RK3566_RK3568/yolov5s-640-640.rknn ./model/bus.jpg

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值