1066|2

4942

帖子

12

TA的资源

版主

楼主
 

#AI挑战营第二站# Win10 ONNX转RKNN踩坑 [复制链接]

环境:win10

cpu:i53210M @2.2GHz,双核(12年前的产品)

gpu: 无

内存:6G

python: 3.12 and 3.6.8(本来用的3.12以为可以结果装了一大堆包发现不行,win下支持python3.6版本左右的。)

介绍

ONNX是一种开发的模型格式,通过ONNX可以使用不同的机器学习框架进行模型训练,然后导出统一的格式,进而可以被部署到支持ONNX的所有平台.

RKNN是rockchip的模型格式,可以通过他家的toolkit将ONNX转换成RKNN并支持量化、推理、性能和内存评估、量化精度分析以及模型加密,工具位于github,地址为:https://github.com/airockchip?tab=repositories&q=rknn&type=&language=&sort=,其实有两个库,如果是要用RV106的话就要用toolkit2。

   

转化步骤

老规矩先去读懂readme里所包含的东西,基本就能玩转80%,我们需要用下人家编译好的工具套件来转化onnx-》rknn,那么就可以在release里面下载对应的工具包,在此我就给官方提了一个issue,release里面的Assets太大了,不同平台的全都打包在一起,楼主下载下来1个多G,但是只用其中一个whl,编程讲究个够用刚刚好,这一下子多了800M用不到的,未免有些冗余累赘。

 

下载的话大家可以下最新的v2.0.0-beta0版本

我把官方的whl上传了一份,方便大家下载哈!!!

rknn_toolkit-1.7.5-cp36-cp36m-win_amd64

下载链接(待补充)

下载好后还需要安装一下官方包里所需的其他packages

 

此外楼主亲测还需要pip install cmake,楼主也把自己用的requirements放上来,大家参照看看,其实有些不装没关系有些版本不一样也影响不大,但是最好按照官方的来,因为这个toolkit有些吃版本的。

requirements.txt (2.92 KB, 下载次数: 1)

装好之后基本上看到编译器里没有提示这个rknn.api有问题就行啦。

 

然后就是运行如下这一段代码,参考论坛坛友的。

from rknn.api import RKNN

# 创建 RKNN 对象
rknn = RKNN()
# 加载 ONNX 模型
ret = rknn.load_onnx(model='6.onnx')

# 模型配置
rknn.config(mean_values=[[128]], std_values=[[128]]) #图片归一化到【-1,1】
# 模型转换
ret = rknn.build(do_quantization=False)  # 这里设置是否量化

# 保存 RKNN 模型
ret = rknn.export_rknn('mnist_cnn.rknn')

# 释放 RKNN 对象
rknn.release()
6.onnx (1.63 MB, 下载次数: 0) mnist_cnn.rknn (832.09 KB, 下载次数: 1)

踩坑


安装官方建议的torch==2.16.1时候就出了错,官方requirement-cpu里面写着需要2.16.1版本,楼主试了清华交大华为豆瓣各种镜像都没有,

 而且就连pypi好像也没有,那还得自己跑去下对应的whl手动安装吗,于是乎我就装了2.2.0,事实证明没得错。

  

 

起初楼主以为装装package嘛没什么嘛,就没有仔细检查。一跑代码就报了如下错误,

 

一看最后一行,好家伙是没有权限的问题,于是就跑去给账户提权,给python用管理员模式运行,但是还是报一样的错。然后就去搜啊搜,都没想到上面还有报错,原来是少安装了包。

是的啊python看报错就要从头看。

等一转化又出了问题

最后一行是input_layers,实际上是上面的不支持onnx opset 大于17,必须要 <=12才行。

  

 

然后又跑去生成个opset小于12的版本。

 

最后终于是搞出来了

【拓展阅读】

onnx 的opset 版本指定了我们所使用的ONNX 运算符集的版本,不同版本之间还是不要混用,可能会带来模型的问题。

像是windows也有不同版本之间的差异

 

大家可以使用一个开源工具Netron来对自己训练的模型进行可视化,下载链接如下。

https://github.com/lutzroeder/netron

 

requirements.txt

2.93 KB, 下载次数: 0

此帖出自编程基础论坛

最新回复

求,rknn.config这种问题怎么解决呢,PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'C:\\Users\\24423\\AppData\\Local\\Temp\\tmpx00mgkkk\\log_feedback_to_the_rknn_toolkit_dev_team.log'  详情 回复 发表于 2024-5-8 11:17
点赞 关注
 

回复
举报

11

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
求,rknn.config这种问题怎么解决呢,PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'C:\\Users\\24423\\AppData\\Local\\Temp\\tmpx00mgkkk\\log_feedback_to_the_rknn_toolkit_dev_team.log'
此帖出自编程基础论坛
 
 
 

回复

4942

帖子

12

TA的资源

版主

板凳
 
我也是这个问题 你往上看 应该你少个库
此帖出自编程基础论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表