RK3568笔记七:yolov5-seg实例分割测试验证

发布时间:2023年12月31日

若该文为原创文章,转载请注明原文出处。

记录的目的是想在RK3568上实现实例分割,在github的rknn_mode_zoo仓库里看到了例子,带着疑问测试了一下,结果跑通了,这里记录下全过程。

一、环境

1、硬件:正点原子ATK-DLRK3568板子

2、虚拟:使用正点提供的虚拟机

3、需要安装的工具(参考03【正点原子】ATK-DLRK3568_AI例程测试手册V1.0.pdf):

????????安装交叉编译工具链

????????anaconda 的安装与环境配置

????????更新 NPU 驱动
????????安装 rknn-toolkit2

以上自行安装,手册里有详细的説明

二、模型转换

1、下載rknn_model_zoo

https://github.com/airockchip/rknn_model_zoo

本人使用的是git方式,直接在虚拟机下操作的

git clone https://github.com/airockchip/rknn_model_zoo.git

没有VPN很难下载,自行处理。

看下目录,有很多,这里只测试yolov5_seg,也测试了yolov8是正常的。

2、环境及模型下载

转换是在py3.8下转换的,先激活conda環境

conda activate rknn2_env

rknn2_env是根据手册创建的虚拟环境

进入yolov5_seg的model目录

cd /home/alientek/rknn_model_zoo/examples/yolov5_seg/model

下載onnx模型,获取yolov5s-seg.onnx模型,模型訓練和获取会用一篇文章记录。

chmod +x download_model.sh
./download_model.sh

3、rknn模型转换

进入目录/home/alientek/rknn_model_zoo/examples/yolov5_seg/python,里面有个convert.py文件,会把onnx模型转成rknn

这里要注意,rknn-toolkit2一定要安装,py3.8一定要切换。

执行

python convert.py ../model/yolov5s-seg.onnx rk3568 i8

转换成功后的rknn在model目录下。

三、Demo编译

rknn_model_zoo提供了两个测试方法,一个是python, 一个是python, python可以验证onnx模型

cpp直接部署到rk3568上。

这里直接测试cpp

所以编译demo,在readme里也有介绍

即先设置交叉工具链,执行编译。

先执行下面命令,设置交叉工具链:

export GCC_COMPILER=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu

返回rknn_model_zoo目录

执行执行下面命令编译demo

 ./build-linux.sh -t rk356x -a aarch64 -d yolov5_seg

结果保存在install目录下

rknn_yolov5_seg_demo 会有模型和可执行文件

四、Demo测试及验证

通过ADB把rknn_yolov5_seg_demo上传到板子

adb push rknn_yolov5_seg_demo/ /userdata/aidemo

打开开发板终端,

执行

./rknn_yolov5_seg_demo model/yolov5s-seg.rknn model/bus.jpg

执行出错

错误感觉是rga和rknnrt版本过低。

更新一下,直接拷贝lib下的librga.so和librknnrt.so到/usr/lib目录下

#进入lib目录
cd rknn_yolov5_seg_demo/lib
# 拷贝
cp * /usr/lib

重新运行,输出正常,并输出out.png图片

通过adb把out.png图片下载到虚拟机。

在虚拟机执行下面命令,下载图片

adb pull /userdata/aidemo/rknn_yolov5_seg_demo/out.png ./

后续将训练自己的数据集并部署。

如有侵权,或需要完整代码,请及时联系博主。

文章来源:https://blog.csdn.net/weixin_38807927/article/details/135315338
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。