当前位置: 首页 > news >正文

CV12_ONNX转RKNN模型(谛听盒子)

暂时简单整理一下:

1.在边缘设备上配置相关环境。

2.配置完成后,获取模型中间的输入输出结果,保存为npy格式。

3.将onnx格式的模型,以及中间输入输出文件传送到边缘设备上。

4.编写一个python文件用于转换模型格式,dataset作为测试可以是随便的数据。

5.将python传送到边缘设备上并运行。

注意:所有文件要在同一目录下。

参考代码一:

# Author:SiZhen
# Create: 2024/7/15
# Description: ONNX转RKNN
import os
import numpy as np
from rknn.api import RKNNdef convert_onnx_to_rknn(onnx_path,rknn_path,input_data,output_data):#创建RKNN对象rknn = RKNN()rknn.config(target_platforms='rk3588',quantized_algorithm='mmse',optimization_level = 2)#加载ONNX模型print('loading ONNX model...')ret = rknn.load_onnx(model=onnx_path)if ret !=0:print("load failed!")return#构建模型,进行RKNN模型转换print('building rknn model...')ret = rknn.build(do_quantization=False,dataset='/home/DiTing/sizhen/dataset.txt')if ret !=0:print('Build RKNN model failed!')#导出RKNN模型print('Exporting RKNN model...')ret = rknn.export_rknn(rknn_path)if ret != 0:print('Export RKNN failed!')returnprint('RKNN model is successfully exported to ',rknn_path)rknn.init_runtime()outputs=rknn.inference(inputs=[input_data],data_format='nchw')try:if np.test.assert_almost_equal(outputs[0],output_data,decimal=1)is None:print('模型输出与预期一致。')except AssertionError as e :print("不一致,详细信息:",e)#转换模型
i = 0
onnx_path = r'/home/DiTing/sizhen/resNet34.onnx'
rknn_path = onnx_path.replace('.onnx','.rknn')
input_data = np.load('/home/DiTing/sizhen/input_data.npy')
output_data = np.load('/home/DiTing/sizhen/output_data.npy')
convert_onnx_to_rknn(onnx_path,rknn_path,input_data,output_data)

问题及解决方法

问题一

安装失败。

解决方法:这个地方,谛听盒子应该是arm的版本而不是x86:(Lite版本)

问题二

安装成功找不到属性

解决方法:用如下包替代

问题三

lite版本缺少属性

初步讨论结果:lite版本应该是只包含运行环境的,最好不要在盒子上进行模型转换,会又慢又卡,可能利特版本就是没有模型转换的功能的。

解决方法:在其他环境转换。(待更新)可能的解决办法:https://bbs.eeworld.com.cn/thread-1283146-1-1.html

问题四

在上面链接的指导进行windows环境下安装toolkit时,出现如下错误:

原因是没有安装Cmake。在安装Cmake后,又出现如下错误:

NMake Makefiles does not support platform specification, but platform x64 was specifced

CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage


CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage


-- Configuring incomplete, errors occurred!

解决方法:https://blog.csdn.net/qq_42276781/article/details/88594870

1.打开 Visual Studio Installer -> 修改 -> 单个组件 -> 勾选 用于 CMake 的 Visual C++ 工具 -> 修改

   2.Visual Studio Installer -> 修改->工作负荷 -> 使用C++的桌面开发 -> 修改】

3.配置一下path 环境变量  计算机 -> 属性 -> 高级系统设置 -> 环境变量 -> Path -> 编辑 -> 加入

自己的路径\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin  

后确定

重启电脑之后,再次安装即可。

问题五

rknn-toolkit在windows系统没有2代版本(1代版本不兼容rk3588),2代版本目前只有linux系统。

解决方法:搭一个虚拟环境然后用虚拟机安装rknn-toolkit2

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习每周学习总结N4:中文文本分类-Pytorch实现(基本分类(熟悉流程)、textCNN分类(通用模型)、Bert分类(模型进阶))
  • tcp协议下的socket函数
  • DICOM CT\MR片子免费在线查看工具;python pydicom包加载查看;mayavi 3d查看
  • vxe-弹窗初始化激活选中Vxe-Table表格中第一行input输入框
  • debian 更新源
  • Spring Boot集成SFTP快速入门Demo
  • 独立站外链如何影响搜索引擎排名?
  • AI算法17-贝叶斯岭回归算法Bayesian Ridge Regression | BRR
  • C/C++ json库
  • 如何在电脑上演示手机上APP,远程排查移动端app问题
  • C#数字医学影像系统(RIS/PACS)源码,Oracle数据库,C/S架构,运行稳定
  • 入坑树莓派(2)——树莓派4B与手机蓝牙通信
  • vue使用了代理跨域,部署上线,使用Nginx配置出现问题,访问不到后端接口
  • 农业旅游与乡村旅游:融合绿色田野与诗意远方的经济新篇章
  • Zookeeper是什么,为什么要用,怎么用?
  • axios 和 cookie 的那些事
  • Centos6.8 使用rpm安装mysql5.7
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Go 语言编译器的 //go: 详解
  • idea + plantuml 画流程图
  • Javascript Math对象和Date对象常用方法详解
  • Median of Two Sorted Arrays
  • use Google search engine
  • Web标准制定过程
  • XML已死 ?
  • yii2中session跨域名的问题
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 记一次用 NodeJs 实现模拟登录的思路
  • 强力优化Rancher k8s中国区的使用体验
  • 设计模式 开闭原则
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • k8s使用glusterfs实现动态持久化存储
  • Mac 上flink的安装与启动
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #NOIP 2014# day.2 T2 寻找道路
  • $nextTick的使用场景介绍
  • (+4)2.2UML建模图
  • (145)光线追踪距离场柔和阴影
  • (33)STM32——485实验笔记
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (一) 初入MySQL 【认识和部署】
  • (转) Android中ViewStub组件使用
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .env.development、.env.production、.env.staging
  • .Net 6.0--通用帮助类--FileHelper
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net 简单实现MD5
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • /bin/rm: 参数列表过长"的解决办法
  • /run/containerd/containerd.sock connect: connection refused
  • @AutoConfigurationPackage的使用
  • @Autowired标签与 @Resource标签 的区别
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)