YOLOV5 /onnx模型转换成rknn
上两篇文章讲述了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.onnxcp 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模型成功转出,对检测图片也成功进行识别
相关文章:
YOLOV5 /onnx模型转换成rknn
上两篇文章讲述了pytorch模型下best.pt转换成onnx模型,以及将onnx进行简化成为best-sim.onnx, 接下来这篇文章讲述如何将onnx模型转换成rknn模型,转换成该模型是为了在rk3568上运行 1.创建share文件夹 文件夹包含以下文件best-sim.onnx,rknn-tookit2-…...
Echarts+VUE饼图的使用(基础使用、多个饼图功能、单组饼图对应颜色使用)
安装:npm install echarts --save 配置:main.js // 引入echarts import * as echarts from echarts Vue.prototype.$echarts echarts一、基础饼图(直接拷贝就能出效果) <div class"big-box" ref"demoEhart"><…...
刘铁猛C#入门 026 重写与多态
类的继承 类成员的“横向扩展”(成员越来越多)类成员的“纵向扩展”(行为改变,版本增高)类成员的隐藏(不常用)重写与隐藏的发生条件:函数成员,可见,签名一致 函数成员:方法 、属性可见:父类修饰符是public protected …...
《筑牢安全防线:培养 C++安全编程思维习惯之道》
在当今数字化飞速发展的时代,软件安全的重要性已提升到前所未有的高度。C作为一种广泛应用于系统开发、游戏制作、高性能计算等众多领域的编程语言,其程序的安全性更是关乎重大。培养 C安全编程的思维习惯,不仅是开发者个人能力提升的关键&am…...
《TCP/IP网络编程》学习笔记 | Chapter 16:关于 I/O 流分离的其他内容
《TCP/IP网络编程》学习笔记 | Chapter 16:关于 I/O 流分离的其他内容 《TCP/IP网络编程》学习笔记 | Chapter 16:关于 I/O 流分离的其他内容分离 I/O 流2 次 I/O 流分离分离「流」的好处「流」分离带来的 EOF 问题 文件描述符的的复制和半关闭终止「流」…...
单片机学习笔记 5. 数码管静态显示
更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~ 目录 0、实现的功能 1、Keil工程 1-1 数码管显示原理 1-2 静态与动态显示 1-3 74HC573锁存器的工作原理 1-…...
ValueError: not enough values to unpack (expected 2, got 1) 解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
java基础知识(常用类)
一、包装类(Wrapper) (1)包装类与基本数据的转换 装箱:基本类型->包装类型 拆箱:包装类型->基本类型 java5以后是自动装箱和拆箱的方式,自动装箱底层调用的是valueOf方法,比如Integer.…...
Selenium+Java(19):使用IDEA的Selenium插件辅助超快速编写Pages
前言 或是惊叹于Selenium对于IDEA的支持已经达到了这样的地步,又或是由于这个好用的小工具的入口就在那里,它已经陪伴了我这么久,而我这么久的时间却都没有发现它。在突然发现这个功能的一瞬间,真的是喜悦感爆棚,于是赶快写下了这篇文章。希望可以帮助到其他同样在做UI自动…...
决策树分类算法【sklearn/决策树分裂指标/鸢尾花分类实战】
决策树分类算法 1. 什么是决策树?2. DecisionTreeClassifier的使用(sklearn)2.1 算例介绍2.2 构建决策树并实现可视化 3. 决策树分裂指标3.1 信息熵(ID3)3.2 信息增益3.3 基尼指数(CART) 4. 代码…...
深入理解 Spring Boot 的 WebApplicationType
1. 前言 在 Spring Boot 应用程序启动过程中,WebApplicationType 是一个重要的概念,它决定了应用程序是以 Web 应用程序的形式运行还是以非 Web 应用程序的形式运行。本文将详细探讨 WebApplicationType 的工作机制及其在实际项目中的应用。 2. 什么是 WebApplicationType?…...
摄影:相机控色
摄影:相机控色 白平衡(White Balance)白平衡的作用: 白平衡的使用环境色温下相机色温下总结 白平衡偏移与包围白平衡包围 影调 白平衡(White Balance) 人眼看到的白色:会自动适应环境光线。 相…...
Python网络爬虫技术及其应用
Python网络爬虫技术及其应用 在当今数字化时代,互联网已经成为信息传播的主要渠道。海量的数据每天都在互联网上产生,这些数据对于企业决策、市场分析、科学研究等有着极其重要的价值。然而,如何高效地收集并利用这些数据成为了一个挑战。Py…...
鸿蒙学习笔记:ArkUI概述
ArkUI是构建分布式应用界面的声明式UI开发框架。组件是界面搭建最小单位,页面是最小调度分隔单位。其有诸多特征,如内置丰富多态UI组件、多样布局、多种动画及绘制能力、交互事件适配多输入设备等,还有平台API通道与两种开发范式。 JS、TS、…...
Selenium 在自动化测试中的应用
在自动化测试中,Selenium是一种非常流行的工具,它允许开发者通过编程的方式与Web浏览器进行交互,模拟用户操作,如点击按钮、填写表单、导航网页等。 1. Selenium 简介 Selenium是一个支持多种浏览器的Web自动化测试工具ÿ…...
python3 Flask应用 使用 Flask-SQLAlchemy操作MySQL数据库
一、环境搭建 下载命令: pip install flask flask-sqlalchemy pymysql 二、创建项目结构 yourProjectFolder/ |—— app.py |—— config.py |—— models.py |__ mydb.py 三、基本使用 3.1 config.py 进行数据库连接配置 import osbasedir os.path.abspat…...
Python学习——猜拳小游戏
import random player int(input(“请输入:剪刀 0,石头 1,布2”)) computer random.randint(0,2)# print(“玩家输入的是%d,电脑输入的是%d” %(player,computer)) 用于测试 if (player 0) and (computer 0) or (player 1) a…...
递归-迭代
24. 两两交换链表中的节点 Leetcode 24 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 递归解法 // 注意:cpp …...
恋爱通信史之完整性
在前面的章节中,介绍了对通信消息的加密,可以保证保密性(机密性)。虽说中间人无法解密通信消息的内容,但是可以篡改通信的消息。在接受者视角来看,是无法识别通信消息是否被篡改。因此,必须引入一种机制,保…...
Docker 容器的初始化设置
虽然现在Conntainerd 大有取代Docker作为容器运行时的趋势,但是docker还是有自己的优势在。尤其是对于开发者来讲,使用Docker 比使用 containerd 方便很多,尤其是在Docker Desktop等工具的加持下。 本文主要面向Docker的初、中级学者…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
