yolov5 转换为rknn模型在3588上运行

news2024/12/25 10:06:09

为了把yolov5在rk3588上跑起来,在网上搜罗了一圈,踩了一些坑。由于瑞芯微的文档有升级,导致和网络的文章有出入,所以做个记录。

rknn-toolkit 转换文档:

瑞芯微的转换文档在 rknn-toolkit/example/pytorch/yolov5/REAME.md 里

当版本升级到 1.7.5的时候,文档被删除,说是要根据airockchip/rknn_model_zoo (github.com) 里的指令来完成。但是model_zoo里的文档也是没有说太清楚。

把rknn-toolkit版本退回到,在 1.7.3 版本中还是有的。下面就是按照1.7.3的说明来操作。

yolov-v50 的环境:

官方文档指定使用yolov5 v5.0,因此需要获取特定的版本。

需要安装 pytorch 1.10.0 以下版本,否则会报错:

AttributeError: ‘Upsample’ object has no attribute ‘recompute_scale_factor’

但是在python 3.10 版本下没有 pytorch 1.9.1 了,所以要装python 3.8的环境:

conda create -n YOLOV5-V50 python==3.8

然后把requirement.txt 中的torch 改成 torch<1.10.0

pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simpleSimple Indexicon-default.png?t=N6B9https://pypi.tuna.tsinghua.edu.cn/simple

权重文件:

在执行 python detect.py 默认下载的是最新版本的权重文件,我们需要v5.0的权重文件,所以需要手动下载

wget https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt

检测:

默认使用coco数据集,yolov5s.pt

python detect.py

修改模型,导出

重点是RKNN把最终的sigmoid从模型内部给拿到外部,把sigmoid交给cpu去计算了。具体的参见 rknn-toolkit/example/pytorch/yolov5/REAME.md

3. 直接使用pt模型转为rknn模型时,需要修改 yolov5/models/yolo.py文件的后处理部分,将class Detect(nn.Module) 类的子函数forward修改为:

def forward(self, x):

      z = [] # inference output

      for i in range(self.nl):

           x[i] = self.m[i](x[i]) # conv

      return x ```

导出

python export.py --weights yolov5s.pt --img 640 --batch 1 --include onnx

测试和转换

测试:

测试的时候生成的rknn文件是用于3566的,不知道怎么给弄成3588的,所以测试只能测试

然后把这个.onnx 文件放到

rknn-toolkit2/examples/onnx/yolov5/

修改 test.py,转换为rknn模型,并查看 result.jpg是不是正确

转换为3588的:

转换的脚本不在rknn-toolkit2下,而在 rknpu2/examples/rknn_yolov5_demo/convert_rknn_demo/yolov5 下,修改

platform = 'rk3588' 和 model path,然后运行脚本可以得到rknn

用这个rknn替换掉板子上的文件,可以运行,识别率似乎下降了一点,发现推理时间从20多ms变为30ms左右。

在测试的时候,发现官方提供的onnx是81层,而我们转化出来的是96层,可能延时时间长跟这个有关系。

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

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

相关文章

硬件时钟和系统时钟的同步机制及案例分享

1 硬件时钟和系统时钟的同步机制 硬件时钟记录在服务器主板的CMOS芯片里面&#xff0c;与主板的南桥芯片&#xff08;目前Intel与AMD的主板仅有南桥&#xff0c;北桥已集成到CPU&#xff09;相连。硬件时钟一般叫做RTC&#xff08;Real Time Clock&#xff09;、CMOS clock或者…

管易云和金蝶云星空接口打通对接实战

管易云和金蝶云星空接口打通对接实战 对接系统管易云 管易云是上海管易云计算软件有限公司旗下的专注提供电商企业管理软件服务的品牌&#xff0c;总部位于中国上海张江高科技产业园区。管易云旗下拥有管易云C-ERP、EC-OMS、EC-WMS、B2C/B2B/BBC/微商城开发、PDA无纸化仓储解决…

提前预知风险:探索天气预警 API 在灾害管理中的关键作用

引言 自然灾害无情地影响着人类的生活&#xff0c;损害着财产和环境。然而&#xff0c;随着科技的不断进步&#xff0c;人类有了更多的工具来预测和减轻灾害带来的影响。其中&#xff0c;天气预警 API 在灾害管理中扮演着关键的角色&#xff0c;为政府、企业和个人提供了提前预…

JAVA日期相关操作

JAVA日期相关操作 计算两个日期相差的天数 /*** 计算两个日期相差的 天数* param smdate String类型初始时间* param bdate String类型截至时间* return Integer*/public static Integer dayCompare(String smdate, String bdate) throws Exception {Date start sdf.par…

12-数据结构-数组、矩阵、广义表

数组、矩阵、广义表 目录 数组、矩阵、广义表 一、数组 二.矩阵 三、广义表 一、数组 这一章节理解基本概念即可。数组要看清其实下标是多少&#xff0c;且二维数组&#xff0c;存取数据&#xff0c;要先看清楚是按照行存还是按列存&#xff0c;按行则是正常一行一行的取读写…

每天一道leetcode:115. 不同的子序列(动态规划困难)

今日份题目&#xff1a; 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数。 题目数据保证答案符合 32 位带符号整数范围。 示例1 输入&#xff1a;s "rabbbit", t "rabbit" 输出&#xff1a;3 解释&#xff1a; 如下所…

ssm+vue基于java的健身房管理系统源码和论文PPT

ssmvue基于java的健身房管理系统源码和论文PPT015 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统…

(一)Unity开发Vision Pro介绍

1.介绍 1.1 介绍 VisionOS 可实现与现实世界无缝集成并与其他虚拟内容共存的 3D 多任务体验。这为个人生产力、生活方式和娱乐应用打开了一个充满新可能性的世界&#xff0c;并为开发人员打开了一个全新的市场。然而&#xff0c;它也带来了围绕多任务处理和与身体互动的新挑战…

运维监控学习笔记6

应用监控: 安装nginx的过程&#xff1a; yum install -y gcc gcc-c pcre-devel openssl-develcd /usr/local/src wget http://nginx.org/download/nginx-1.24.0.tar.gztar -zxvf nginx-1.22.1.tar.gzuseradd -s /sbin/nologin -M www./configure --prefix/usr/local/nginx-1.…

HCIP-OpenStack发放云主机

1、云中的概念 在云平台注册了一个账号&#xff0c;这个账号对于云平台来说&#xff0c;就是一个租户或者一个项目。 租户/项目&#xff08;tenant/project&#xff09;&#xff0c;是一个意思。主机聚合就是主机组的意思。 region&#xff08;区域&#xff09;&#xff0c;就…

发过来的pdf文件怎么编辑?了解一下这几种编辑方法

发过来的pdf文件怎么编辑&#xff1f;PDF适用于各种用途。但是&#xff0c;许多人可能需要对PDF文件进行编辑&#xff0c;以满足特定的需求和要求。例如&#xff0c;他们可能需要添加或删除某些元素&#xff0c;更改文本或图像&#xff0c;或者将PDF文件转换为其他格式。在这种…

实例037 没有标题栏可义改变大小的窗口

实例说明 隐藏Windows窗口的标题栏之后&#xff0c;窗口只剩下一个客户区域&#xff0c;有点像Panel控件在窗口中的样子&#xff0c;而这样的窗口通常是不能够改变大小的。因为屏蔽其标题栏之后&#xff0c;窗口默认将边框也去除了&#xff0c;本例将用特殊的方法建立一个没有…

Linux代理的设置与使用方法

在Linux平台上&#xff0c; 代理的设置使用方法更是让人头疼。本文将为你分享Linux上 代理的设置和使用方法&#xff0c;并提供一些实用的解决方案&#xff0c;方便实际操作。 我们先来了解一下常用的 代理软件 在Linux上&#xff0c;有许多 代理软件可供选择。以下是几种常用的…

【Elsevier旗下】1区SCI,5天见刊!稳定检索36年,大数据、人工智能、机器学习、语音、语言、会话、情绪识别等领域

近日国自然预计将在下周8月20日之前公布&#xff0c;想必申请过国自然基金作者都知道&#xff0c;需要有研究基础&#xff0c;说白了就是需要有文章支持。那么稿子写好了&#xff0c;选择一本靠谱优质期刊也是一门学问。 本期小编推荐2本Elsevier 旗下审稿快刊&#xff0c;各项…

Python实现SSA智能麻雀搜索算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&a…

电商财务新时代:轻松自动对账,财务效率倍增

电商领域频繁的多平台财务对账常常令企业头痛不已。然而&#xff0c;随着轻易云数据集成平台的崭新解决方案&#xff0c;财务对账的痛点迎刃而解。本文通过引人入胜的实例&#xff0c;深入探讨电商财务对账的现状&#xff0c;突出轻易云数据集成平台在自动对账中的强大作用&…

微信小程序有哪几种变现途径?

纵观现在市面上的微信小程序&#xff0c;目前变现的途径主要有&#xff1a;广告变现、电商变现、游戏付费、服务付费等。 1.广告变现 广告变现是小游戏、工具类、资讯类小程序变现的主要方式。微信官方为游戏开发者提供的扶植政策&#xff0c;对于工具类、资讯类小程序&#…

自然语言处理实战项目15-四种文本纠错模型的对比与实践,解决大家写作问题

大家好,我是微学AI,进入给大家介绍一下自然语言处理实战项目15-四种文本纠错模型的对比与实践,解决大家写作问题。文本纠错模型是一个旨在解决大家写作问题的实践项目。它基于先进的自然语言处理技术,特别是文本纠错领域的模型和算法,能够帮助用户快速、准确地纠正文本中的…

最新 python 爱心代码?

python程序代码&#xff1a;heart.py from math import cos, pi import numpy as np import cv2 import os, globclass HeartSignal:def __init__(self, curve"heart", title"Love U", frame_num20, seed_points_num2000, seed_numNone, highlight_rate0.…

python——案例20:计算数字组合方式

案例20&#xff1a;计算数字组合方式 假设三个数字1、2、3任意排列&#xff0c;有几种组合方式&#xff0c;分别是什么&#xff1f; sum0 for a in range(1,4):for b in range(1,4):for c in range(1,4):if a!b and b!c and a!c:print(a,b,c)sum1print("答案为&#xff1a…