YOLOV5 /onnx模型转换成rknn

news2024/11/24 23:59:45

上两篇文章讲述了pytorch模型下best.pt转换成onnx模型,以及将onnx进行简化成为best-sim.onnx,

接下来这篇文章讲述如何将onnx模型转换成rknn模型,转换成该模型是为了在rk3568上运行

1.创建share文件夹

文件夹包含以下文件best-sim.onnx,rknn-tookit2-1.4.0压缩包,rknpu2-1.4.0压缩包

RKNN-Toolkit2-1.4.0 是一个软件开发套件,主要用于在PC和瑞芯微(Rockchip)NPU平台上进行深度学习模型的转换、推理和性能评估。

RKNPU2-1.4.0 主要用于在Rockchip NPU平台上部署和运行AI模型,为开发者提供了方便的编程接口和工具,支持的平台:它支持多种Rockchip芯片平台,包括RK3566、RK3568、RK3588、RK3588S、RV1103、RV1106等

2.主机与vmware共享文件夹

虚拟机·--选项--共享文件夹--将c:/share文件夹添加--确定

 输入命令

sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
/mnt/hgfs/ 是挂载点,我们也可以修改为其它挂载点
-o allow_other 表示普通用户也能访问共享目录。

 输入上述命令进行挂载,挂载后然后,再次进入 /mnt/hgfs 查看得到共享的share文件夹 (注意:挂载后必须要再次进入/mnt/hgfs才能查看到共享的文件夹)

3.安装远程安装工具 

sudo apt-get install openssh-server

Finalshell远程连接虚拟机

 4.创建文件夹对rknn-toolkit2-1.4.0和rknpu2-1.4.0进行解压

mkdir rknn
cp /mnt/hgfs/share/rknn-toolkit2-1.4.0.zip    rknn/rknn-toolkit2-1.4.0.zip
cp  /mnt/hgfs/share/rknpu2-1.4.0.zip   rknpu2-1.4.0.zip
cd rknn/
ls
unzip rknn-toolkit2-1.4.0.zip
cd ..
unzip rknpu2-1.4.0.zip

5.安装docker环境

更新列表

sudo apt-get update

更新一下软件

sudo apt-get upgrade

输入以下命令

sudo apt-get remove docker docker-engine docker.io containerd runc

 安装docker依赖的环境

sudo apt-get install ca-certificates curl gnupg lsb-release

添加密钥 

 curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

 添加一个软件源

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

安装docker

sudo apt-get install docker-ce docker-ce-cli containerd.io

 给自己赋予运行的权利hjr为我的用户名

sudo usermod -aG docker hjr

 输入exit退出再重启

exit

重启docker

sudo systemctl start docker

 在docker中安装其他的工具

 sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

输入以下命令 将镜像rknn-toolkit2-1.4.0-cp38-docker.tar.gz拷贝到家目录

 cp  /mnt/hgfs/share/best-sim.onnx  ~/rknn/rknn-toolkit2-1.4.0/examples/best-sim.onnx
 cp rknn/rknn-toolkit2-1.4.0/docker/rknn-toolkit2-1.4.0-cp38-docker.tar.gz rknn-toolkit2-1.4.0-cp38-docker.tar.gz在家目录下复制

加载镜像 

docker load --input rknn-toolkit2-1.4.0-cp38-docker.tar.gz 

 运行镜像

docker run -it --privileged --network=host -v /dev/bus/usb:/dev/bus/usb -v ~/rknn/rknn-toolkit2-1.4.0/examples:/examples rknn-toolkit2:1.4.0-cp38 /bin/bash 

 

 显示以下画面说明镜像运行成功

安装文件传递工具 ,这个工具主要为了上传测试图片

apt-get install lrzsz

 

 在docker环境下进入  cd examples/onnx/yolov5

 cd examples/onnx/yolov5

 进入yolov5文件夹后,将exampels/best-sim.onnx 拷贝过来

 cp /examples/best-sim.onnx best-sim.onnx

 6.在docker环境下上传测试02.jpg图片

 mydataset.txt实在dataset.txt的基础上进行拷贝的,test1.py实在test.py的基础上进行拷贝的

cp datatset.txt mydataset.txt 
cp test.py test1.py

7 修改test1.py

 将下面内容进行修改,将ONNX模型改为best-sim.onnx,生成的RKNN自己命名为best-sim.onnx,IMG为自己测试的图片,DATASET为识别的图片,生成以后检测图片为out2.jpg

 

 

打开mydataset.txt,打开以后是自己将要识别的图片02.jpg

vim mydataset.txt

 8.运行test1.py

best-sim.rknn生成,同时out2.jpg检测图片生成

python test1.py

查看图片输入以下命令

sz out2.jpg

 

 在docker环境下best-sim.rknn模型成功转出,对检测图片也成功进行识别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2246961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【51单片机】LCD1602液晶显示屏

学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602(Liquid Crystal Display)液晶显示屏是…

如何使用AWS Lambda构建一个云端工具(超详细)

首发地址(欢迎大家访问):如何使用AWS Lambda构建一个云端工具(超详细) 1 前言 1.1 无服务器架构 无服务器架构(Serverless Computing)是一种云计算服务模型,它允许开发者构建和运行…

【Isaac Sim】相关问题汇总

目录 一、安装点击Install时报错二、启动时报 Failed to create any GPU devices三、加载Isaac Sim自带模型或示例时报 Isaac Sim is not responding 一、安装点击Install时报错 报错: request to https://asset.launcher.omniverse.nvidia.com/… failed, reason:…

Spring-02-springmvc

2. 什么是SpringMVC 2.1. 概述 Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。 为什么要学习SpringMVC呢? Spring MVC的特点: 轻量级,简单易学高效 , 基于请求响应的MVC框架与Spring兼容性好,无缝…

深度学习之目标检测的技巧汇总

1 Data Augmentation 介绍一篇发表在Big Data上的数据增强相关的文献综述。 Introduction 数据增强与过拟合 验证是否过拟合的方法:画出loss曲线,如果训练集loss持续减小但是验证集loss增大,就说明是过拟合了。 数据增强目的 通过数据增强…

qt添加模块

以QtNetwork模块为例 方式一 扩展-qt vs tools-qt project settings 方式二 右键选中项目-属性-qt project settings 方法三 在此界面选择select modules,即可进行相应模块添加

【信息系统项目管理师】第2章:信息技术发展 考点梳理

文章目录 2.1 信息技术及其发展2.1.1 计算机软硬件2.1.2 计算机网络2.1.3 存储和数据库2.1.4 信息安全2.1.5 信息技术的发展 2.2 新一代信息技术及应用2.2.1 物联网2.2.2 云计算2.2.3 大数据2.2.4 区块链2.2.5 人工智能2.2.6 虚拟现实 2.1 信息技术及其发展 2.1.1 计算机软硬件…

【线程】Java多线程编程

【线程】Java多线程编程 一、前言一个最简单的多线程编程示例可以使用的工具 二、创建线程的方式三、Thread类中重要的属性和方法3.1 构造方法3.2 常见属性 一、前言 当有多个线程的时候,这些线程的执行顺序是不确定的。这一点,是我们之前提到的操作系统…

unsloth vlm模型Qwen2-VL、Llama 3.2 Vision微调案例

T4卡15G显卡训练 参考: https://github.com/unslothai/unsloth 按自己显卡cuda版本安装 免费colab微调代码: Qwen2-VL: https://colab.research.google.com/drive/1whHb54GNZMrNxIsi2wm2EY_-Pvo2QyKh?usp=sharing from unsloth import FastVisionModel # NEW instead …

window11编译pycdc.exe

一、代码库和参考链接 在对python打包的exe文件进行反编译时,会使用到uncompyle6工具,但是这个工具只支持python3.8及以下,针对更高的版本的python则不能反编译。 关于反编译参考几个文章: Python3.9及以上Pyinstaller 反编译教…

oracle如何配置第二个监听优化数据传输

oracle如何配置第二个监听优化数据传输 服务器两个网卡,配置两个不同IP和端口的监听。 归档日志量每天很大,为了不影响业务,需要配置一个单独的万兆网络来专门的传输归档日志到DG库,这里就涉及到在19c中增加一个监听用来使用专门…

Kafka Stream实战教程

Kafka Stream实战教程 1. Kafka Streams 基础入门 1.1 什么是 Kafka Streams Kafka Streams 是 Kafka 生态中用于 处理实时流数据 的一款轻量级流处理库。它利用 Kafka 作为数据来源和数据输出,可以让开发者轻松地对实时数据进行处理,比如计数、聚合、…

用 Python 从零开始创建神经网络(九):反向传播(Backpropagation)

反向传播(Backpropagation) 引言1. 分类交叉熵损失导数(Categorical Cross-Entropy loss derivative)2. 分类交叉熵损失导数 - 代码实现3. Softmax激活函数导数(Softmax activation derivative)4. Softmax激…

TCP vs UDP:如何选择适合的网络传输协议?

在网络通信中,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种非常重要的传输层协议。它们各有特点,适用于不同类型的应用场景。本文将详细探讨TCP和UDP协议的结构、优缺点及应用&…

06、Spring AOP

在我们接下来聊Spring AOP之前我们先了解一下设计模式中的代理模式。 一、代理模式 代理模式是23种设计模式中的一种,它属于结构型设计模式。 对于代理模式的理解: 程序中对象A与对象B无法直接交互,如:有人要找某个公司的老总得先打前台登记传达程序中某个功能需要在原基…

递归算法专题一>Pow(x, n)

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public double myPow(double x, int n) {return n < 0 ? 1.0 / pow(x,-n) : pow(x,n); }private double pow(double x, int n){if(n 0) return 1.0;double tmp pow(x,n / 2);return n % 2 0 ? tmp * tmp : tmp …

游戏引擎学习第20天

视频参考:https://www.bilibili.com/video/BV1VkBCYmExt 解释 off-by-one 错误 从演讲者的视角&#xff1a;对代码问题的剖析与修复过程 问题的起因 演讲者提到&#xff0c;他可能无意中在代码中造成了一个错误&#xff0c;这与“调试时间标记索引”有关。他发现了一个逻辑问题…

C语言:操作符详解1

一.操作符的分类 算术操作符&#xff1a;、-、* 、 /、% 移位操作符&#xff1a;<< >> 位操作符&#xff1a;& | ^ 赋值操作符&#xff1a; 、、-、*、/、%、<<、>>、&、|、^ 单目操作符&#xff1a;!、、--、&、*、、-、~、sizeo…

Harbor2.11.1生成自签证和配置HTTPS访问

文章目录 HTTPS的工作流程部署Harbor可参考上一篇文章生成自签证书1.修改/etc/hosts文件2.生成证书a.创建存放证书路径b.创建ca.key密钥c.创建ca.crtd.创建给Harbor服务器使用密钥 yunzhidong.harbor.com.keye.创建给Harbor服务器使用证书签名请求文件 yunzhidong.harbor.com.c…

c++--------《set 和 map》

c--------《set 和 map》 1 set系列的使⽤1.1 set类的介绍1.2 set的构造和迭代器1.3 set重要接口 2 实现样例2.1: insert和迭代器遍历使⽤样例&#xff1a;2.2: find和erase使⽤样例&#xff1a; 练习3.map系列的使用3.1 map类的介绍3.1.1 pair类型介绍 3.2 map的数据修改3.3mu…