避坑指南!RK3588香橙派yolov5生成RKNN模型!

2024-05-12 18:28

本文主要是介绍避坑指南!RK3588香橙派yolov5生成RKNN模型!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

地址1,转换模型

地址2,转换模型

地址3,解决ppa

下载k2

本文目录

  • 一、将.pt模型转为onnx模型文件。(Windows)
  • 二、将.onnx模型转为.rknn模型文件。(Linux)
  • 三、将.rknn模型部署到开发板RK3588中。(ARM)

  

一、将.pt模型转为onnx模型文件。(Windows)

前提:下载源码。源码下载地址~

  1. models/yolo.py中的Detect类下的forward函数改为下面内容:
def forward(self, x):z = []  # inference outputfor i in range(self.nl):x[i] = self.m[i](x[i])  # convreturn x
  1. 修改export.py文件
    原内容:
    在这里插入图片描述
    修改为:shape = tuple(y[0].shape) # model output shape
    在这里插入图片描述

  2. 将训练好的模型文件best.pt文件放入export.py文件的同级目录下。
    使用命令:python export.py --weights best.pt --img 640 --batch 1 --include onnx。将.pt模型转为.onnx模型。

二、将.onnx模型转为.rknn模型文件。(Linux)

  1. 为了减少不必要的麻烦,请下载Ubuntu新版本,如22.04版本。Ubuntu下载地址!
    在这里插入图片描述
  2. 安装miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.9.2-Linux-aarch64.sh
bash Miniconda3-py38_4.9.2-Linux-aarch64.sh

这里创建环境就不多赘述,详情查看创建环境教程地址。这里我们创建python=3.9的环境。

3.下载转换文件。 下载文件地址。
   在windows上下载好转换文件,然后移到Ubuntu系统上。然后使用命令: cd rknn-toolkit2-master/rknn-toolkit2/packages,进入packages文件夹中,安装以下文件。(因为我们安装的环境是python3.9)

**加粗样式**

使用命令:

pip install rknn_toolkit2-1.6.0+81f21f4d-cp39-cp39-linux_x86_64.whl -i https://pypi.doubanio.com/simple/
pip install -r requirements_cp39-1.6.0.txt -i https://pypi.doubanio.com/simple/

   安装完成后,使用命令:python,然后使用命令from rknn.api import RKNN,若没有报错,则说明安装成功。

   坑1:使用源时一定要使用:-i https://pypi.doubanio.com/simple/,因为其他很多源里没有一些安装的依赖文件,所以会出错,这里我也浪费了很多时间,所以一定要使用本文中的命令。避免出现一些错误。
   坑2:有时在安装时会出现错误并暂停,有时是因为下载速度的原因导致的错误,这时多执行几次安装命令即可。

  1. 将.onnx模型存放在ylov5文件夹中。
    使用命令: cd rknn-toolkit2-master/rknn-toolkit2/examples/onnx/yolov5移到到该文件夹下,将windows下生成的.onnx放到该目录下。如下所示。
    在这里插入图片描述
  2. 修改test.py文件。

在这里插入图片描述
自定义类别中,要与训练模型时的类别一致。
在这里插入图片描述

在这里插入图片描述

  1. 生成.rknn模型
    运行test.py,使用命令:python test.py。运行完成后,文件目录下生成了.rknn模型。
    在这里插入图片描述

三、将.rknn模型部署到开发板RK3588中。(ARM)

这篇关于避坑指南!RK3588香橙派yolov5生成RKNN模型!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983394

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必