#AI挑战营第二站# 基于RKNN toolkit的模型转换与部署
<div class='showpostmsg'> 本帖最后由 hollyedward 于 2024-5-7 01:07 编辑<p>RKNN Toolkit2 是由<a data-pretit="瑞芯微" data-report-click="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=%E7%91%9E%E8%8A%AF%E5%BE%AE&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"瑞芯微\"}"}" data-tit="瑞芯微" href="https://so.csdn.net/so/search?q=%E7%91%9E%E8%8A%AF%E5%BE%AE&spm=1001.2101.3001.7020" target="_blank">瑞芯微</a>电子 (Rockchip) 开发的一套用于深度学习模型优化和推理的工具。它主要面向在瑞芯微SoC上进行AI应用开发,但也可以用于PC平台进行模型的转换、量化、推理等操作。</p>
<p>Rockchip RK3566/RK3568 系列, RK3588 系列, K3562 系列, RV1103/RV1106 系列芯片搭载神经网络处理器 NPU, 利用 RKNN 可以帮助用户快速部署 AI 模型到 Rockchip 芯片上使用 NPU 硬件加速模型推理。 为了使用 RKNPU,用户首先需要在 x86 计算机上使用 RKNN-Toolkit2 工具,将训练好的模型转换为 RKNN 格式的模型,然后在开发板上使用 RKNN C API 或 Python API进行推断。</p>
<p>所需工具:</p>
<p> </p>
<ul>
<li>RKNN-Toolkit2 是一个软件开发工具包,供用户在 PC 和 Rockchip NPU 平台上执行模型转换、推断和性能评估。</li>
<li>RKNN-Toolkit-Lite2 为 Rockchip NPU 平台提供了 Python 编程接口,帮助用户部署 RKNN 模型并加速实施AI应用。</li>
<li>RKNN Runtime 为 Rockchip NPU 平台提供了 C/C++ 编程接口,帮助用户部署 RKNN 模型并加速实施AI应用。</li>
<li>RKNPU 内核驱动负责与 NPU 硬件交互。</li>
</ul>
<p>rknn 软件框图</p>
<p> </p>
<p> </p>
<p>环境搭建</p>
<p> </p>
<p>查看系统版本</p>
<pre>
<code class="language-bash">cat /proc/version</code></pre>
<p> ubuntu版本为22.04,对应的环境python版本为3.10</p>
<p> </p>
<p>安装miniconda</p>
<p>创建虚拟环境</p>
<pre>
<code class="language-bash"># 下载 RKNN-Toolkit2 仓库
git clone https://github.com/airockchip/rknn-toolkit2.git -b v1.6.0</code></pre>
<p> </p>
<p> </p>
<p>安装项目需要的依赖文件,使用python 3.10对应的配置文件</p>
<pre>
<code class="language-bash">pip install -r ./rknn-toolkit2/packages/requirements_cp310-1.6.0.txt </code></pre>
<h2> </h2>
<p>需要下载的依赖</p>
<h2 id="拉取和安装-rknn-toolkit2"> </h2>
<p>安装 rknn toolkit2</p>
<pre>
<code class="language-bash"> pip install ./rknn-toolkit2/packages/rknn_toolkit2-1.6.0+81f21f4d-cp38-cp38-linux_x86_64.whl </code></pre>
<p> </p>
<p> </p>
<p><strong>遇到的问题待解决</strong>:在服务器的ubuntu系统(版本22.04)上不能正常使用rknn-toolkit2</p>
<p>换版本都试过了没有用</p>
<p> </p>
<p>py38+rknn1.6.0</p>
<p>py39+rknn1.6.0</p>
<p>py310+rknn1.6.0</p>
<p>py310+rknn2.0.0</p>
<p> </p>
<p> </p>
<p>以上均报错Illegal instruction (core dumped)</p>
<p>这是系统原因吗?</p>
<p> </p>
<p>这里执行自带的yolov5 example也没有用</p>
<pre>
<code>python test.py
I rknn-toolkit2 version: 2.0.0b0+9bab5682
--> Config model
done
--> Loading model
I It is recommended onnx opset 19, but your onnx model opset is 12!
I Model converted from pytorch, 'opset_version' should be set 19 in torch.onnx.export for successful convert!
I Loading : 0%| | 0/125
done
--> Building model
D base_optimize ...
D base_optimize done.
D
D fold_constant ...
D fold_constant done.
D
D correct_ops ...
D correct_ops done.
D
D fuse_ops ...
D fuse_ops done.
D
D sparse_weight ...
Illegal instruction (core dumped)</code></pre>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 有解决了吗
页:
[1]