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

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

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

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

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

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Yolov8-seg是一种基于目标检测和语义分割的实例分割方法。在Yolov8-seg中,首先使用YoloV5目标检测器检测图像中的物体,然后将检测到的物体传递给语义分割模型,以生成每个物体的分割掩膜。 如果您想提取分割掩膜,您可以按照以下步骤进行操作: 1. 使用Yolov8-seg模型检测图像中的物体。 2. 将检测到的物体传递给语义分割模型,以生成每个物体的分割掩膜。 3. 对于每个检测到的物体,提取其对应的分割掩膜。 4. 将分割掩膜应用于原始图像,以提取物体的图像部分。 您可以使用Python和深度学习框架(如PyTorch或TensorFlow)来实现这些步骤。以下是一个示例代码片段,用于提取Yolov8-seg模型生成的分割掩膜并将其应用于原始图像: ```python import cv2 import torch # Load Yolov8-seg and semantic segmentation models yolo_model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True) seg_model = torch.hub.load('pytorch/vision', 'deeplabv3_resnet101', pretrained=True) # Load image img = cv2.imread('image.jpg') # Detect objects using Yolov8-seg model results = yolo_model(img) # Extract segmentation masks for each detected object masks = [] for result in results.xyxy: box = result[:4].tolist() mask = seg_model(img, box=box)['out'] mask = torch.argmax(mask.squeeze(), dim=0).cpu().numpy() masks.append(mask) # Apply segmentation masks to original image to extract object parts object_parts = [] for mask in masks: object_part = cv2.bitwise_and(img, img, mask=mask) object_parts.append(object_part) # Display extracted object parts for object_part in object_parts: cv2.imshow('Object part', object_part) cv2.waitKey(0) ``` 请注意,此代码片段仅用于示例目的,您需要根据自己的需求进行修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷忆枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值