RKNN3588——YOLOv8的PT模型转RKNN模型

news2025/1/10 11:12:36

一:PT转ONNX

1. 首先克隆rknn修改后的ultralytics版本项目到本地

https://github.com/airockchip/ultralytics_yolov8

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

主要是修改了源码的ultralytics/nn/modules/head.py和ultralytics/engine/exporter.py两个文件。

2. 使用修改后的ultralytics对pt模型进行模型转换,此处的format=rknn代表支持rknn后续的转换,而不是用onnx,一定要注意!!!

yolo export model=/your_path/best.pt format=rknn

二:ONNX转RKNN

1. 在linux x86上配置Toolkit环境,具体步骤如下链接:

https://docs.radxa.com/rock5/rock5b/app-development/rknn_install

相关链接: 

# 下载 RKNN-Toolkit2 仓库
https://github.com/airockchip/rknn-toolkit2.git

# 下载 RKNN Model Zoo 仓库
https://github.com/airockchip/rknn_model_zoo.git

2. 模型的转换只能在rknn-toolkit2中,因此Linux系统只能是linux x86,配置环境时注意python版本问题

- RKNN-Toolkit2 is not compatible with [RKNN-Toolkit](https://github.com/airockchip/rknn-toolkit)
- Currently only support on:
  - Ubuntu 18.04 python 3.6/3.7
  - Ubuntu 20.04 python 3.8/3.9
  - Ubuntu 22.04 python 3.10/3.11

配置好环境后,可通过

python
import rknn

检查是否安装成功?!

3. 然后通过rknn_model_zoo里的YOLOv8的convert.py转换即可

import sys
from rknn.api import RKNN

if __name__ == '__main__':
# onnx模型位置
    model_path = "/home/zhangh/RKNN_Docker/ultralytics_yolov8-main/ultralytics_yolov8-main/yolov8n.onnx"
# rknn导出位置

    output_path = "/home/zhangh/RKNN_Docker/ultralytics_yolov8-main/ultralytics_yolov8-main/weight/yolov8n.rknn"

    # Create RKNN object
    rknn = RKNN(verbose=False)

    # Pre-process config
    print('--> Config model')
    rknn.config(mean_values=[[0, 0, 0]], std_values=[
                     [255, 255, 255]], target_platform='rk3588')


    print('done')

    # Load model
    print('--> Loading model')
    ret = rknn.load_onnx(model=model_path)
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')

    # Build model
    print('--> Building model')
    ret = rknn.build(do_quantization=False)
    if ret != 0:
        print('Build model failed!')
        exit(ret)
    print('done')

    # Export rknn model
    print('--> Export rknn model')
    ret = rknn.export_rknn(output_path)
    if ret != 0:
        print('Export rknn model failed!')
        exit(ret)
    print('done')

    # Release
    rknn.release()

可视化rknn模型 

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

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

相关文章

【管理咨询宝藏140】安永大型国央企内控合规体系建设培训

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏140】安永大型国央企内控合规体系建设培训 【格式】PDF版本 【关键词】安永、内控风控、合规体系 【核心观点】 - 合规是指企业的经营活动与法律…

复合机器人:手脚眼脑的完美结合

在现代工业制造的舞台上,复合机器人如同一位精密而高效的工匠,以其独特的手脚眼脑,正深刻改变着传统的生产方式。这些机器人不仅仅是机械臂的简单延伸,它们汇聚了先进的机械结构、智能的感知系统、精密的控制技术和灵活的思维能力…

移动端UI风格营造舒适氛围

移动端UI风格营造舒适氛围

MYSQL8.0配置

1、下载安装包 2、解压软件包 将MySQL软件包解压在没有中文和空格的目录下 3、设置配置文件my.ini my.ini中加入以下内容 [client] #客户端设置,即客户端默认的连接参数 # 设置mysql客户端连接服务端时默认使用的端口 port3306#默认编码 default-character-set…

Xilinx FPGA:vivado关于单端ROM的一个只读小实验

一、实验要求 将生成好的voe文件里的数据使用rom读取出来,采用串口工具发送给电脑(当按键来临时)。 二、程序设计 按键消抖模块: timescale 1ns / 1ps module key_debounce(input sys_clk ,input rst_n…

平安养老险安徽分公司:助力乡村振兴 保险知识进农村

为深入宣传普及保险理念,进一步提升服务品质,营造“78全国保险公众宣传日”活动氛围,助力保险业健康稳定发展,近日,平安养老保险股份有限公司(以下简称“平安养老险”)安徽分公司走进安庆市宿松…

Elasticsearch 8.x 存储有无压缩?能压缩到多少?

1、认知前提 Elasticsearch 支持压缩,压缩方式默认为:LZ4 压缩算法。 具体参见: The default value compresses stored data with LZ4 compression, but this can be set to best_compression which uses DEFLATE for a higher compression r…

Lesson 46 Can you ... ?

Lesson 46 Can you … ? 词汇 lift v. 拿起,搬起 n. 电梯(直梯) 用法:1. lift … up 拎起……    例句:我可以拎起那只小猫。       I can lift that cat up.    2. take a lift    例句&#xff1a…

不看后悔!国内AI大比拼的精彩看点全汇总

至2022年AI爆发后,在中国已催生了上千个AI产品。 这些产品涵盖了从头部大厂到高等院校,再到初创企业的广泛阵容。 如: 大厂:百度文心、阿里通义、腾讯元宝、字节豆包、讯飞星火等高校:清华大学、北京大学等初创&…

Element中的表格组件Table和分页组件Pagination

简述:在 Element UI 中,Table组件是一个功能强大的数据展示工具,用于呈现结构化的数据列表。它提供了丰富的特性,使得数据展示不仅美观而且高效。而Pagination组件是一个用于实现数据分页显示的强大工具。它允许用户在大量数据中导…

悲情短视频:成都柏煜文化传媒有限公司

悲情短视频:在光影交错中触动人心的温柔力量 在这个五彩斑斓的视频时代,悲情短视频如同一抹深秋的寒露,悄然落在人们的心田,带来一丝不易察觉却又难以抗拒的凉意。它们不以华丽的特效或激昂的音乐取胜,而是凭借真挚的…

“拆分盘投资:机遇与风险并存

一、引言 随着互联网技术的日新月异,金融投资领域迎来了前所未有的变革,其中拆分盘作为一种新兴的投资模式,正逐渐进入公众的视野。其独特的价值增长逻辑和创新的投资机制,为投资者开辟了新的财富增值渠道。本文旨在深入探讨拆分…

Spring Cloud 概述

目录 ​编辑一、认识微服务 1、单体架构 2、集群和分布式架构 3、微服务架构 二、Spring Cloud 1、什么是 Spring Cloud 2、Spring Cloud 版本 3、Spring Cloud 的实现方案 Spring Cloud Netflix ​编辑Spring Cloud Alibaba 一、认识微服务 1、单体架构 很多创业公…

14-Django项目--文件上传-Excel

目录 前端 路由 视图函数 前端 <div class"modal-body"><form method"post" enctype"multipart/form-data" action"/pretty/asset/">{% csrf_token %}<input type"file" name"excel"><bu…

什么是失调电压/补偿电压?

目录 一、概念理解 二、仿真理解 一、概念理解 输入失调电压&#xff08;input offset voltage&#xff09;&#xff1a;当运放连接模式为跟随器时&#xff0c;同相接GND&#xff0c;输出端并不会输出GND&#xff0c;根据不同运放参数会有微弱电压输出&#xff0c;这个参数就…

一文了解“大数据招商思维”,读懂什么是大数据招商!

近年来&#xff0c;随着大数据及人工智能等新一代信息技术的快速发展&#xff0c;数据作为重要的资源和资产&#xff0c;成为推动经济发展的核心驱动力&#xff0c;广泛应用于各个领域&#xff0c;深刻的改变着我们的生产和生活方式。那么对于“招商引资”来说&#xff0c;大数…

深入探讨JavaScript中的队列,结合leetcode全面解读

前言 队列作为一种基本的数据结构&#xff0c;为解决许多实际问题提供了有效的组织和处理方式&#xff0c;对于提高系统的稳定性、可靠性和效率具有重要作用&#xff0c;所以理解队列是很重要的。 本文深入探讨JavaScript中的队列这种数据结构,结合leetcode题目讲解 题目直达…

前端笔记-day12

文章目录 01-视口02-宽度适配方案03-rem体验04-rem基本使用05-媒体查询06-rem适配07-rem布局08-less-体验09-less-注释10-less-运算11-less-嵌套12-less-变量13-less-导入14-less-导出15-less-禁止导出16-急速问诊&#xff08;不准确写法&#xff09;index.htmlindex.css 17-急…

新章节:全设备通用调度算法-通讯重构

新章节&#xff1a;全设备通用调度算法-通讯重构 文章目录 新章节&#xff1a;全设备通用调度算法-通讯重构前言一、重构了TCP和UDP通讯二、优化了OPC和OPCUA三、升级了监控客户端四、升级了通讯的图形化其他升级 前言 现在真的很懒也很少写代码了&#xff0c;写代码和更新进度…

Laravel5+mycat 报错 “Packets out of order”

背景 近期对负责项目&#xff0c;配置了一套 主从复制的 MySQL 集群 使用了中间件 mycat 但测试发现&#xff0c;替换了原来的数据连接后&#xff0c;会出现 Packets out of order 的报错 同时注意到&#xff0c;有的框架代码中竟然也会失效&#xff0c;比如 controller 类中&…