rk3588测试yolov5部署记录

设备:RK3588、USB3.0串口线、USB2.0下载线、网线、电源线、12V稳压直流电源

虚拟机:Ubuntu20.04,系统依赖python版本为python3.6、python3.8

一、安装RKNN-Toolkit2

先使用virtualenv创建虚拟环境

1.安装virtualenv

sudo apt-get install virtualenv

2.创建virtualenv目录

mkdir ~/Virtualenv

3.创建虚拟环境

cd Virtualenv

python --version  # 查看Python的默认版本和安装目录

whereis python

virtualenv -p /usr/bin/python3 venv # 使用对应安装路径安装虚拟环境,venv为环境名。

sudo update-alternatives --install /usr/bin/python3.6 1   #更改python的默认版本优先级

4. python –version

5.进入退出删除虚拟环境

cd /home/gec/Virtualenv/venv/bin

source activate

   rm -r 环境名

6.在虚拟环境中安装python3.8和pip3

  1. sudo apt-get install python3 python3-dev python3-pip

        2. 安装相关依赖

sudo apt-get install libxslt1-dev zlib1g-dev libglib2.0 libsm6 \ libgl1-mesa-glx libprotobuf-dev gcc

        3. 安装python依赖(需要先获取RKNN-Toolkit2的安装包)

        cd /rk3588/rk3588/external/rknn-toolkit2/doc

        pip3 install -r requirements_cp38-1.4.0.txt  (看了一下36、38是一样的内容)

若出现如下类似错误,则可能是因为网络原因(2.7KB/s),根据需要的版本更换源下载即可,使用临时更换指令:pip install 包名称 -i Simple Index

常用换源网址:

阿里云 http://mirrors.aliyun.com/pypi/simple/

豆瓣http://pypi.douban.com/simple/

清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/

中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

华中科技大学http://pypi.hustunique.com/

换源后结果如下:

出现如下错误:

更换对应版本:

pip install --upgrade six==1.15.0

4. 安装RKNN-Toolkit2

进入安装包路径

cd /rk3588/rk3588/external/rknn-toolkit2/packages

python --version

sudo pip3 install rknn_toolkit2-1.4.0_22dcfef4-cp38-cp38-linux_x86_64.whl

5. 验证安装是否成功:

python3

from rknn.api import RKNN返回无错误

exit() 退出python环境

二、PC模拟器运行YOLO示例test.py实现.onnx文件到.rknn文件的构建和导出,加载图片并推理得到结果。

1.     进入创建的虚拟环境

cd venc/bin

source activate

2.     进入yolov5目录

cd /rk3588/rk3588/external/rknn-toolkit2/examples/onnx/yolov5

3.     运行示例

python3 test.py

4.     结果

三、在rk3588上实现test.py的测试。获得转换的.rknn模型yolov5s.rknn

将开发板与电脑、电源连接,使用usb下载线连接USB口,电源12V,电流2A。

最开始网口和串口都连接不上,因为电源电压不太稳定,换了一个稳压电源,连上了网口,串口依旧连接不上,最后发现是串口线的问题,购买了RS232转USB串口线才成功连接上串口,但是使用串口识别设备ID依旧识别不了,即adb devices不显示设备,故此处使用网口连接板子设备

1. 在虚拟机上安装adb

sudo apt-get install adb

2. 使用网口连接开发板和虚拟机。

主机ip设为与虚拟机、开发版同网段的固定ip(网络与共享中心的)

相互可以ping通则连接上。

3.连接设备

adb connect 192.168.1.197 (开发板ip)(如果报错client39,serve40,则表示Ubuntu和rk3588的版本不匹配,升级Ubuntu的adb版本)

4.更新板子的rknn_server和librknnrt.so。librknnrt.so: 是一个板端的 runtime 库。

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

然后执行板端runtime对应的接口,并返回结果给PC。RKNN Toolkit2的连板功能一般需要更新板端的 rknn_server 和 librknnrt.so,并且手动启动 rknn_server 才能正常工作。

找到下面这些文件的路径:

cd /rk3588/rk3588/external/rknpu2

adb push runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/rknn_server /usr/bin/

adb push runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so /usr/lib/

adb push runtime/RK3588/Linux/librknn_api/aarch64/librknn_api.so /usr/lib/

adb push runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/start_rknn.sh /usr/bin/

adb push runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/restart_rknn.sh /usr/bin/

然后在虚拟机执行。

adb shell

chmod +x /usr/bin/rknn_server

chmod +x /usr/bin/start_rknn.sh

chmod +x /usr/bin/restart_rknn.sh

restart_rknn.sh

查看更新是否成功

pgrep rknn_server

 

5. 连板调试,修改脚本target 和 device_id

6. 执行转换和推理模型的test.py脚本

cd Virtualenv/venv/bin/

source activate

cd /rk3588/rk3588/external/rknn-toolkit2/exam

ples/onnx/yolov5

python3 test.py

如果出现一下错误:

说明版本不对应,看到API:1.4.0 rknn_server:1.4.0 rknnrt:1.3.0有可能是之前更新文件时将库文件没有传到lib位置即

adb push runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so /usr/lib/

adb push runtime/RK3588/Linux/librknn_api/aarch64/librknn_api.so /usr/lib/

7. 结果,生成yolov5s.rknn。


四、RKNPU2编译加速

1.修改postprocess.h

找到目录/rk3588/rk3588/external/rknpu2/examples/rknn_yolov5_demo/include

下的postprocess.h文件;

/rk3588/rk3588/external/rknpu2/examples/rknn_yolov5_demo/model

下的coco_80_labels_list.txt文件,修改类的个数和自己的类别数。

 

2.更新rknn模型。

        将前面转换得到的yolov5s.rknn文件复制到

/rk3588/rk3588/external/rknpu2/examples/rknn_yolov5_demo/model/RK3588/目录下,然后编译。

  1. cd /rk3588/rk3588/external/rknpu2/examples/rknn_yolov5_demo
  2. ./build-linux_RK3588.sh  # 成功生成install目录

adb push install/rknn_yolov5_demo_Linux /mnt  # 将整个install文件传到板端的mnt目录

  1. adb shell  # 进入板端系统shell,运行rknn_yolov5_demo。
  2. cd /mnt/rknn_yolov5_demo_Linux/
  3. ./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640.rknn ./model/bus.jpg
  4. 退出shell为exit+enter
  5. 结果如下:

  • 16
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值