官方YOLOV5的torch模型->ONNX模型->RKNN模型

2023-11-16

1、环境配置

1.1 RKNN Toolkit2的环境配置

下载RKNN Toolkit2

git clone https://github.com/rockchip-linux/rknn-toolkit2.git

打开一个终端命令行窗口,安装 Python3.6 和 pip3

sudo apt-get install python3 python3-dev python3-pip

安装所需的依赖包

sudo apt-get install libxslt1-dev zlib1g-dev libglib2.0 libsm6 \
libgl1-mesa-glx libprotobuf-dev gcc

进入 Toolkit2 工程文件夹,根据工程的保存路径修改 cd 命令中的路径

cd <输入 Toolkit2 工程的路径>

安装必要相应版本的依赖包

pip3 install -r doc/requirements_cp36-1.x.x.txt

安装 RKNN-Toolkit2(Python3.6 for x86_64)

pip3 install \
package/rknn_toolkit2-1.x.x_xxxxxxxx-cp36-cp36m-linux_x86_64.whl

检查 RKNN-Toolkit2 是否安装成功,在终端输入python后,运行如下python命令

from rknn.api import RKNN

备注:上面的环境配置步骤参考rknn-toolkit2-1.x.0/Rockchip_Quick_Start_RKNN_SDK_V1.4.0_CN.pdf

1.2 Yolov5的环境配置

下载yolov5代码yolov5官方链接,并下载相关的模型,本教程下载的是yolov5s。

创建虚拟环境

conda create -n yolov5 python=3.8

激活虚拟环境

conda activate yolov5

安装python包

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

问题:出现了AttributeError: module ‘numpy’ has no attribute 'typeDict’的错误。
原因分析:numpy的版本太高了。项目中要求安装numpy>=1.18.5,我安装了numpy == 1.24.3版本的。
解决办法:将numpy版本降下来。比如安装1.2.1版本的numpy。把requirements.txt中的numpy>=1.18.5,改为numpy==1.21

2、torch模型->ONNX模型->RKNN模型

2.1 将yolov5s.pt、yolov5m.pt、yolov5x.pt拷贝到下yolov5代码目录请添加图片描述

2.2 将torch模型转换成onnx模型

执行以下命令,生成 yolov5s.onnx模型。

python3 export.py --weights yolov5s.pt --img 640 --batch 1 --opset 12 --include onnx

备注:如果在args不加这个–include onnx,会默认生成TorchScript模型

2.3 将onnx模型转换成rknn模型

将2.2生成onnx模型拷贝到./rknn-toolkit2-1.4.0/examples/onnx/yolov5中,我将官方导出onnx模型命名为myyolov5.onnx
请添加图片描述修改test.py

# 修改第10行和第11行,指定onnx和rknn模型
ONNX_MODEL = 'myyolov5s.onnx'
RKNN_MODEL = 'myyolov5s.rknn'

# 将第248行ret = rknn.load_onnx(model=ONNX_MODEL)进行修改
ret = rknn.load_onnx(model=ONNX_MODEL,outputs=['/model.24/m.0/Conv_output_0', '/model.24/m.1/Conv_output_0', '/model.24/m.2/Conv_output_0'])

备注:
rknn.load_onnx中的outputs安装输出shape分别是[1, 3, 80, 80, 85],[1, 3, 40, 40, 85],[1, 3, 20, 20, 85]来依次填写节点名字。
具体的网络结构可以通过netron查看

运行test.py

python test.py

请添加图片描述

参考链接:Yolov5 转换成 RKNN模型

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

官方YOLOV5的torch模型->ONNX模型->RKNN模型 的相关文章

随机推荐

  • 算法专题之二叉树

    前言 树型数据结构广泛存在于现实世界中 比如家族族谱 企业职能架构等 它是一类在计算机领域被广泛应用的非线性数据结构 二叉树是树型数据中最常用的一类 本文从前端角度以js语法构建和操作二叉树的相关知识 基础概念 观察上图 二叉树的数据结构如
  • C++——大数加法

    大数加法 即运算的数据可能很大 int long long long无法存放 存在字符串中 但是加法的运算规则还是10进制 对于两个字符串 首先判断两者的长度 我们将字符串s设置为较长的字符串 方便后面的运算 也可以将t设置为较长的 从低位
  • 一文2000字详细介绍Android APP 常见概念与 adb 命令

    01 背景 因 team 正在推进 APP 自动化测试 那么主要业务是 IoT 相关的产品 既然是 APP 自动化测试 那么 Android APP 相关的一些概念与知识就很关键了 在之前遇到相关的问题都是现查现用 对于一些常用的概念和命令
  • 【Redis】常见数据结构及命令

    Redis常见命令 Redis数据结构介绍 Redis是一个key value的数据库 key一般是String类型 但是value的类型有很多种 Redis 通用命令 通用指令是部分数据类型的 都可以使用的指令 常见的有 KEYS 查看符
  • C++实现英语词典

    需要的东西 1 一个词典的txt文件 2 创建map容器 map
  • 最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本代码说明了 最小二乘支持向量机 在学习偏
  • 多媒体(视频容量计算)-软件设计(四十二)

    真题详解 有向图 软件设计 四十一 https blog csdn net ke1ying article details 129942490 一 音频概念 声音带宽 人耳 20Hz 20KHz 说话300 3400Hz 小于20Hz次声波
  • 上海链节科技:什么是企业链改?

    如何定义链改 链改 即用区块链中的部分技术原理和机制来改造业务系统中特定的部分 以创造更高效 更有公信力的系统 甚至还包括利用区块链上的各类积分 Token通证 来重新分配业务系统进而间接的改进业务系统背后的生产关系 传统基本结构的公司 通
  • 从IDataReaderHelper中读取数据实体

    using System using System Collections Generic using System Linq using System Text using System Data using System Reflect
  • 截取oracle字符串中的数字(转载)

    截取oracle字符串中的数字 云淡风轻博客 博客园 cnblogs com 方法一 如果Oracle版本不是太低的话 使用 正则表达式函数 REGEXP SUBSTR 处理 REGEXP SUBSTR有5个参数 分别是 第一个是输入的字符
  • GMAPPING的参数设置

    二 运行gmapping 我总结了运行gmapping的两种方法 1 基于命令行 rosrun gmapping slam gmapping scan scan delta 0 1 maxUrange 4 99 xmin 5 0 ymin
  • python必背代码-Python高手必修课:如何让 Python 代码更易读,推荐收藏

    阅读本文大概需要 10 分钟 我们知道 Python 是一种动态语言 在声明一个变量时我们不需要显式地声明它的类型 例如下面的例子 a 2 print 1 a 1 a 运行结果 1 a 3 这里我们首先声明了一个变量 a 并将其赋值为了 2
  • 【深入理解C++】string

    文章目录 1 概述 2 string的定义与初始化 3 string的赋值 4 string的读写 5 string的长度 6 string的遍历 6 1 运算符 6 2 at 6 3 迭代器 6 4 范围for 7 string 与 ch
  • Excel开发(VBA)— 快速定位最后有记录的行

    有时候 在进行Excel开发时 需要知道某列的最后一行的行号 Excel也提供了相关功能 Range End属性 Dim strCell As String Dim nLastUseRow As Long Dim nLastRcdRow A
  • Vue深入响应性原理

    深入响应性原理 参考资料 响应性 深入响应性原理 什么是响应性 Vue如何知道哪些代码在执行 Vue如何跟踪变化 被代理的对象 Proxy vs 原始标识 如何让渲染响应变化 响应性基础 声明响应式状态 创建独立的响应式值作为refs Re
  • 数据挖掘之关联分析(实验展示以及源代码)

    数据挖掘之关联分析 算法实现 Apriori算法和FP growth 算法 源代码 简单描述下 关联分析概念 关联分析概念主要参考下面的博文 原文 https blog csdn net qq 40587575 article detail
  • idea如何设置自动换行(亲测)

    方法 步骤 第一步 点击idea中的file 然后点击setting 第二步 在编辑中选择代码风格 然后点击java 第三步 在如图所示的栏目中点击Ensure 开头的选项 第四步 选择好以后直接点击apply应用 使其生效 第五步 返回代
  • Python界面 可视化开发(python3+PyQt5+Qt Designer)

    前言 以前制作一个Python窗体界面 我都是用GUI窗口视窗设计的模块Tkinter一点一点敲出来的 今天朋友问我有没有Python窗体的设计工具 用鼠标拖拖 就能完成窗体设计 我查了查相关资料 果然有一款好用的工具 Qt Designe
  • Q3.Numpy_统计分析-排序、去重和重复、搜索和计数函数

    Part 1 排序函数 numpy排序方式主要分为直接排序和间接排序两种 直接排序是指对数值直接进行排序 间接排序是指根据一个或多个键对数据集进行排序 在numpy中 直接排序常用sort 函数 间接排序常用argsort 函数和lexso
  • 官方YOLOV5的torch模型->ONNX模型->RKNN模型

    1 环境配置 1 1 RKNN Toolkit2的环境配置 下载RKNN Toolkit2 git clone https github com rockchip linux rknn toolkit2 git 打开一个终端命令行窗口 安装