深度学习模型部署RV1126准备工作(五)——.rknn模型文件部署

模型部署RV11126的流程大致为:训练得到.pth模型、pth2onnx、onnx2rknn,最后在边缘计算设备上完成部署。本文为该专题的最后一篇文章,主要说明了.rknn文件如何在RV1126上运行并实现交互式操作。(注意:本文的所有操作都是在Ubuntu环境下进行的,如不懂如何配置请查阅本专题之前的文章)

一、所需条件

二、rknn模型部署步骤

1、之前的博客已将训练好的模型转成了rknn模型,并生成了install安装包,如下:

将生成的rknn_yolov5_demo传入到板端,并运行rknn程序

./rknn_yolov5_demo ./model/yolov5.rknn ./model/bus.jpg

2、进一步将其定义为一个脚本yolov.sh,内容如下:

#!/bin/bash
cd ./rknn_yolov5_demo/

# 检查模型和图片文件是否存在
MODEL_PATH="./model/yolov5.rknn"
IMAGE_PATH="./model/bus.jpg"
if [[ ! -f "$MODEL_PATH" ]]; then
    echo "模型文件不存在:$MODEL_PATH"
    exit 1
fi
if [[ ! -f "$IMAGE_PATH" ]]; then
    echo "图片文件不存在:$IMAGE_PATH"
    exit 1
fi
# 运行YOLOv5模型
./rknn_yolov5_demo "$MODEL_PATH" "$IMAGE_PATH"

cd ..

之后还要将在终端将.sh进行转换输入如下指令:

dos2unix yolo.sh
chmod 777 yolo.sh
//运行
./yolo.sh

3、在rv1126上实现rknn模型的交互运行:

参考:

Qt下编码调用Linux的Shell脚本命令_qprocess shell 传递参数-CSDN博客

在QT程序中编写好对应的脚本运行代码,如下:

//脚本调用程序
void widget_skin_window::run_sh()
{
    QProcess process;
    QStringList args;
    args << "/root/yolo.sh";
    process.start("sh", args);
    if (!process.waitForFinished())
    {
        process.close();
        return;
    }
    process.close();
}

//利用按钮进行调用

结果:

4、模型预编译:可以节省代码编译的时间
直接按照example中的指令转换得到的rknn模型在rv1126板子上加载速度非常慢,这里需要使用adb连接开发板才能运行这个py文件,开发板和电脑通过usb线连接,ubantu里执行:

sudo apt install adb

把之前生成的.rknn文件置于以下文件夹:

在rknn环境中输入指令:

python export_rknn_precompile_model.py yolov5.rknn yolov5_precompile.rknn rv1126

三、发现的问题

脚本文件运行rknn的过程中会挂在后端,导致其余的.o文件自动运行,从而导致rknn不能正常运行。为了解决这一问题在主程序运行的脚本文件中添加如下指令杀死初始化文件:

ps -ef | grep monitor_prog   | grep -v grep | awk '{print $2}' | xargs kill

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值