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

news/2024/7/11 0:41:09 标签: 笔记, YOLO

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

记录的目的是想在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 ./

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

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


http://www.niftyadmin.cn/n/5296399.html

相关文章

数据库开发之子查询的详细解析

1.4 子查询 1.4.1 介绍 SQL语句中嵌套select语句,称为嵌套查询,又称子查询。 SELECT * FROM t1 WHERE column1 ( SELECT column1 FROM t2 ... ); 子查询外部的语句可以是insert / update / delete / select 的任何一个,最常见…

C语言中灵活多变的动态内存,malloc函数 free函数 calloc函数 realloc函数

文章目录 🚀前言🚀管理动态内存的函数✈️malloc函数✈️free函数✈️calloc函数✈️realloc函数 🚀在使用动态内存函数时的常见错误✈️对NULL指针的解引用✈️ 对动态开辟空间的越界访问✈️对非动态开辟内存使用free释放✈️使用free释放一…

Github项目推荐-vocal-separate

项目地址 vocal-separate: 项目简述 这是一个音乐和人声分离的项目,基于python开发。有图形化操作界面,看起来还不错。 项目截图

FreeRTOS中断、临界区和任务调度器

一、中断 中断是 CPU 的一种常见特性,中断一般由硬件产生,当中断发生后,会中断 CPU 当前正 在执行的程序而跳转到中断对应的服务程序种去执行,ARM Cortex-M 内核的 MCU 具有一个 用于中断管理的嵌套向量中断控制器NVIC。ARM Cort…

获取Android和iOS崩溃日志的方法

文章目录 一、Android崩溃日志1、获取方法1.1 通过adb logcat获取1.2 通过adb shell dumpsys dropbox命令获取 2、导出设备Crash日志3、导出设备ANR日志4、常见日志类别 二、iOS崩溃日志1、获取方法1.1 xcode中打开1.2 手机上直接获取 2、Crash 头部信息 一、Android崩溃日志 …

【c语言】飞机大战2

1.优化边界问题 之前视频中当使用drawAlpha函数时,是为了去除飞机后面变透明,当时当飞机到达边界的时候,会出现异常退出,这是因为drawAlpha函数不稳定,昨天试过制作掩码图,下载了一个ps,改的话&#xff0c…

【软件工程】走进敏捷开发:灵活、协作、迭代的软件工艺之旅

🍎个人博客:个人主页 🏆个人专栏: 软件工程 ⛳️ 功不唐捐,玉汝于成 目录 前言: 正文 敏捷开发(Agile Development) 详细介绍: 优缺点: 优点&#xf…

工业机器人与计算机技术:驱动现代工业变革

工业机器人与计算机技术:驱动现代工业变革 随着科技的飞速发展,工业机器人与计算机技术已经成为现代工业制造的核心驱动力。这两者之间的联系日益紧密,共同推动着工业生产的自动化、智能化和高效化。 一、工业机器人:从机械手臂…