wangerxian 发表于 2024-5-28 14:07

#AI挑战营第二站# Windows环境ONNX转RKNN模型

<p><span style="font-size:16px;"><strong>1、开发环境搭建</strong></span></p>

<p>ONNX转RKNN模型最主要的是环境的安装,也是比较麻烦的,由于电脑性能一般,没开虚拟机,所以打算用Windows直接实现ONNX转RKNN模型,也参考了之前坛友的经验,最终实现了ONNX转RKNN模型。</p>

<hr />
<p>还是用Anaconda来搭建开发环境。</p>

<p>首先输入命令【conda create --name=rknn python=3.6.13】安装新的开发环境,似乎只能用这个版本的Python。</p>

<p>安装完成之后,使用命令【conda activate rknn】进入环境。</p>

<p>之后输入命令来安装一些环境包【pip install scikit-build opencv-python==4.3.0.38 tensorflow==1.15.5 matplotlib】。</p>

<div style="text-align: center;"></div>

<div style="text-align: center;"></div>

<p>还有两个比较大的安装包,安装过程可能会出现问题。分别是【rknn_toolkit-1.7.5-cp36-cp36m-win_amd64.whl】和【torch-1.10.1-cp36-cp36m-win_amd64.whl】,我的torch倒是正常安装成功了,rknn_toolkit安装需要进行一些配置。</p>

<p>【rknn_toolkit-1.7.5】和【torch-1.10.1】百度云盘:<a href="https://pan.baidu.com/s/1ZvpGoRd6G1z1ej2fkdSlgA?pwd=b3oq " target="_blank">https://pan.baidu.com/s/1ZvpGoRd6G1z1ej2fkdSlgA?pwd=b3oq&nbsp;</a></p>

<div style="text-align: center;"></div>

<p>直接安装【rknn_toolkit】会报错,我就用离线的方式安装。安装过程中,可能会出现网络问题,大家可以用这个命令来更换pip源【pip&nbsp;config set global.index-url <a href="https://mirror.baidu.com/pypi/simple" target="_blank">https://mirror.baidu.com/pypi/simple</a>】。我更换完源之后,还是报了下面的错误,也是大多数Windows安装环境都会报的错误。</p>

<div style="text-align: center;"></div>

<div style="text-align: center;"></div>

<div style="text-align: center;"></div>

<p>然后我查找了一下用windows安装过的小伙伴的帖子,在这个帖子下面找到了解决方案【<a href="https://bbs.eeworld.com.cn/thread-1280724-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1280724-1-1.html</a>】,默认的环境是不带cmake的,所以需要安装一下cmake,输入命令【pip install cmake】,安装cmake工具,这样再次安装【rknn_toolkit】就不会报错了。</p>

<div style="text-align: center;"></div>

<div style="text-align: center;">&nbsp;</div>

<p><span style="font-size:16px;"><strong>2、模型转换</strong></span></p>

<p>最难的环境搭建完成了,就是模型转换了,代码如下,把之前的onnx模型拿来,就可以直接进行转换了。</p>

<pre>
<code class="language-python">from rknn.api import RKNN
# 创建 RKNN 对象
rknn = RKNN()
# 加载 ONNX 模型
ret = rknn.load_onnx(model='mnist_cnn.onnx')

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

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

# 释放 RKNN 对象
rknn.release()
</code></pre>

<p>执行代码,将模型成功转换。</p>

<div style="text-align: center;"></div>

<p>&nbsp;</p>

<div></div>

<p>&nbsp;</p>

Jacktang 发表于 2024-5-29 07:28

<p>环境搭建的步骤有点复杂,步骤和装的东西真多</p>

wangerxian 发表于 2024-5-29 09:20

Jacktang 发表于 2024-5-29 07:28
环境搭建的步骤有点复杂,步骤和装的东西真多

<p>很多时间都在解决报错问题。</p>

akheb 发表于 2024-11-20 17:00

测试有效,作者辛苦了

wangerxian 发表于 2024-11-20 19:12

akheb 发表于 2024-11-20 17:00
测试有效,作者辛苦了

<p>没事,开始玩AI吗~</p>

akheb 发表于 2024-11-22 12:52

<p>不过我发现一个问题,转换后的模型在rk3588上提示:<br />
E RKNN: Invalid RKNN format<br />
E RKNN: rknn_init, load model failed!<br />
rknn_init failed! ret=-1<br />
用附件给的rknn模型也是一样的,,,不知道是什么原因</p>

wangerxian 发表于 2024-11-22 13:13

akheb 发表于 2024-11-22 12:52
不过我发现一个问题,转换后的模型在rk3588上提示:
E RKNN: Invalid RKNN format
E RKNN ...

<p>可能3588配置需要更多一些操作。</p>
页: [1]
查看完整版本: #AI挑战营第二站# Windows环境ONNX转RKNN模型