netrans/docs/html/netrans_py.html

276 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>netrans_py 使用 &#8212; netrans 0.1 文档</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=5ecbeea2" />
<link rel="stylesheet" type="text/css" href="_static/basic.css?v=b08954a9" />
<link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=27fed22d" />
<script src="_static/documentation_options.js?v=52efc512"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="索引" href="genindex.html" />
<link rel="search" title="搜索" href="search.html" />
<link rel="next" title="附录" href="appendix.html" />
<link rel="prev" title="netrans_cli 使用" href="netrans_cli.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="netrans-py">
<h1>netrans_py 使用<a class="headerlink" href="#netrans-py" title="Link to this heading"></a></h1>
<p>netrans_py 为 Netrans 编译器的 python 调用接口。
使用 ntrans_py 完成模型转换的步骤如下:</p>
<ol class="simple">
<li><p>导入模型</p></li>
<li><p>生成并修改前处理配置文件 *_inputmeta.yml</p></li>
<li><p>量化模型</p></li>
<li><p>导出模型</p></li>
</ol>
<section id="netrans">
<h2>Netrans 类<a class="headerlink" href="#netrans" title="Link to this heading"></a></h2>
<p>创建 Netrans</p>
<p>描述: 实例化 Netrans 类。
代码示例:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">netrans</span><span class="w"> </span><span class="kn">import</span> <span class="n">Netrans</span>
<span class="n">yolo_netrans</span> <span class="o">=</span> <span class="n">Netrans</span><span class="p">(</span><span class="s2">&quot;../examples/darknet/yolov4_tiny&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>参数</p>
<table border="1" class="docutils">
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th>类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">model_path</td>
<td>str</td>
<td>第一位置参数,模型文件的路径</td>
</tr>
<tr>
<td style="text-align: left;">netans</td>
<td>str</td>
<td>如果 NETRANS_PATH 没有设置可通过该参数指定netrans的路径</td>
</tr>
</tbody>
</table><p>输出返回:
无。</p>
<!-- <font color="#dd0000">注意:</font> 模型目录准备需要和netrans_cli一致具体数据准备要求见[introduction](./introduction.md)。 --></section>
<section id="netrans-import">
<h2>Netrans.import 模型导入<a class="headerlink" href="#netrans-import" title="Link to this heading"></a></h2>
<p>描述: 将模型转换成 Pnna 支持的格式。
代码示例:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">yolo_netrans</span><span class="o">.</span><span class="n">import</span><span class="p">()</span>
</pre></div>
</div>
<p>参数:
无。</p>
<p>输出返回:
无。
在工程目录下生成 Pnna 支持的模型格式,以.json结尾的模型文件和 .data结尾的权重文件。</p>
</section>
<section id="netrans-config">
<h2>Netrans.config 预处理配置文件生成<a class="headerlink" href="#netrans-config" title="Link to this heading"></a></h2>
<p>描述: 将模型转换成 Pnna 支持的格式。
代码示例:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">yolo_netrans</span><span class="o">.</span><span class="n">config</span><span class="p">()</span>
</pre></div>
</div>
<p>参数:</p>
<div class="highlight-{table} notranslate"><div class="highlight"><pre><span></span>:widths: 20, 30, 50
:align: left
| 参数名 | 类型 | 说明 |
|:---| -- | -- |
|inputmeta| bool,str, [Fasle, True, &quot;inputmeta_filepath&quot;] | 指定 inputmeta, 默认为False。 &lt;br/&gt; 如果为False则会生成inputmeta模板可使用mean、scale、reverse_channel 配合修改常用参数。&lt;br/&gt;如果已有现成的 inputmeta 文件则可通过该参数进行指定也可使用True, 则会自动索引 model_name_inputmeta.yml |
|mean| float, int, list | 设置预处理中 normalize 的 mean 参数 |
|scale| float, int, list | 设置预处理中 normalize 的 scale 参数 |
|reverse_channel | bool | 设置预处理中的 reverse_channel 参数 |
</pre></div>
</div>
<p>输出返回:
无。</p>
</section>
<section id="netrans-quantize">
<h2>Netrans.quantize 模型量化<a class="headerlink" href="#netrans-quantize" title="Link to this heading"></a></h2>
<p>描述: 对模型生成量化配置文件。
代码示例:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">yolo_netrans</span><span class="o">.</span><span class="n">quantize</span><span class="p">(</span><span class="s2">&quot;uint8&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>参数:</p>
<div class="highlight-{table} notranslate"><div class="highlight"><pre><span></span>:widths: 20, 30, 50
:align: left
| 参数名 | 类型 | 说明 |
|:---| -- | -- |
|quantize_type| str| 第一位置参数,模型量化类型,仅支持 &quot;uint8&quot;, &quot;int8&quot;, &quot;int16&quot;|
</pre></div>
</div>
<p>输出返回:
无。</p>
</section>
<section id="netrans-export">
<h2>Netrans.export 模型导出<a class="headerlink" href="#netrans-export" title="Link to this heading"></a></h2>
<p>描述: 对模型生成量化配置文件。
代码示例:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">yolo_netrans</span><span class="o">.</span><span class="n">export</span><span class="p">()</span>
</pre></div>
</div>
<p>参数:
无。</p>
<p>输出返回:
无。请在目录 “wksp/*/” 下检查是否生成nbg文件。</p>
</section>
<section id="netrans-model2nbg-nbg">
<h2>Netrans.model2nbg 模型生成nbg文件<a class="headerlink" href="#netrans-model2nbg-nbg" title="Link to this heading"></a></h2>
<p>描述: 模型导入、量化、及nbg文件生产
代码示例:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span> <span class="c1"># 无预处理</span>
<span class="n">yolo_netrans</span><span class="o">.</span><span class="n">model2nbg</span><span class="p">(</span><span class="n">quantize_type</span><span class="o">=</span><span class="s1">&#39;uint8&#39;</span><span class="p">)</span>
<span class="c1"># 需要对数据进行normlize, menas为128, scale 为 0.0039</span>
<span class="n">yolo_netrans</span><span class="o">.</span><span class="n">model2nbg</span><span class="p">(</span><span class="n">quantize_type</span><span class="o">=</span><span class="s1">&#39;uint8&#39;</span><span class="p">,</span><span class="n">mean</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> <span class="n">scale</span> <span class="o">=</span> <span class="mf">0.0039</span><span class="p">)</span>
<span class="c1"># 需要对数据分通道进行normlize, menas为128,127,125,scale 为 0.0039, 且reverse_channel 为 True </span>
<span class="n">yolo_netrans</span><span class="o">.</span><span class="n">model2nbg</span><span class="p">(</span><span class="n">quantize_type</span><span class="o">=</span><span class="s1">&#39;uint8&#39;</span><span class="n">mean</span><span class="o">=</span><span class="p">[</span><span class="mi">128</span><span class="p">,</span> <span class="mi">127</span><span class="p">,</span> <span class="mi">125</span><span class="p">],</span> <span class="n">scale</span> <span class="o">=</span> <span class="mf">0.0039</span><span class="p">,</span> <span class="n">reverse_channel</span><span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
<span class="c1"># 已经进行初始化设置</span>
<span class="n">yolo_netrans</span><span class="o">.</span><span class="n">model2nbg</span><span class="p">(</span><span class="n">quantize_type</span><span class="o">=</span><span class="s1">&#39;uint8&#39;</span><span class="p">,</span> <span class="n">inputmeta</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
</div>
<p>参数</p>
<div class="highlight-{table} notranslate"><div class="highlight"><pre><span></span>:widths: 20, 30, 50
:align: left
| 参数名 | 类型 | 说明 |
|:---| -- | -- |
|quantize_type| str, [&quot;uint8&quot;, &quot;int8&quot;, &quot;int16&quot; ] | 量化类型,将模型量化成该参数指定的类型 |
|inputmeta| bool,str, [Fasle, True, &quot;inputmeta_filepath&quot;] | 指定 inputmeta, 默认为False。 &lt;br/&gt; 如果为False则会生成inputmeta模板可使用mean、scale、reverse_channel 配合修改常用参数。&lt;br/&gt;如果已有现成的 inputmeta 文件则可通过该参数进行指定也可使用True, 则会自动索引 model_name_inputmeta.yml |
|mean| float, int, list | 设置预处理中 normalize 的 mean 参数 |
|scale| float, int, list | 设置预处理中 normalize 的 scale 参数 |
|reverse_channel | bool | 设置预处理中的 reverse_channel 参数 |
</pre></div>
</div>
<p>输出返回:
请在目录 “wksp/*/” 下检查是否生成nbg文件。</p>
</section>
<section id="id1">
<h2>使用示例<a class="headerlink" href="#id1" title="Link to this heading"></a></h2>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">nertans</span><span class="w"> </span><span class="kn">import</span> <span class="n">Netrans</span>
<span class="n">model_path</span> <span class="o">=</span> <span class="s1">&#39;example/darknet/yolov4_tiny&#39;</span>
<span class="n">netrans_path</span> <span class="o">=</span> <span class="s2">&quot;netrans/bin&quot;</span> <span class="c1"># 如果进行了export定义申明这一步可以不用</span>
<span class="c1"># 初始化netrans</span>
<span class="n">net</span> <span class="o">=</span> <span class="n">Netrans</span><span class="p">(</span><span class="n">model_path</span><span class="p">,</span><span class="n">netrans</span><span class="o">=</span><span class="n">netrans_path</span><span class="p">)</span>
<span class="c1"># 模型载入</span>
<span class="n">net</span><span class="o">.</span><span class="n">import</span><span class="p">()</span>
<span class="c1"># 配置预处理 normlize 的参数</span>
<span class="n">net</span><span class="o">.</span><span class="n">config</span><span class="p">(</span><span class="n">scale</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">mean</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="c1"># 模型量化</span>
<span class="n">net</span><span class="o">.</span><span class="n">quantize</span><span class="p">(</span><span class="s2">&quot;uint8&quot;</span><span class="p">)</span>
<span class="c1"># 模型导出</span>
<span class="n">net</span><span class="o">.</span><span class="n">export</span><span class="p">()</span>
<span class="c1"># 模型直接量化成 int16 并导出, 直接复用刚配置好的 inputmeta</span>
<span class="n">net</span><span class="o">.</span><span class="n">model2nbg</span><span class="p">(</span><span class="n">quantize_type</span> <span class="o">=</span> <span class="s2">&quot;int16&quot;</span><span class="p">,</span> <span class="n">inputmeta</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">netrans</a></h1>
<search id="searchbox" style="display: none" role="search">
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
<input type="submit" value="提交" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script><h3>导航</h3>
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="quick_start_guide.html">快速入门</a></li>
<li class="toctree-l1"><a class="reference internal" href="netrans_cli.html">netrans_cli 使用</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">netrans_py 使用</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#netrans">Netrans 类</a></li>
<li class="toctree-l2"><a class="reference internal" href="#netrans-import">Netrans.import 模型导入</a></li>
<li class="toctree-l2"><a class="reference internal" href="#netrans-config">Netrans.config 预处理配置文件生成</a></li>
<li class="toctree-l2"><a class="reference internal" href="#netrans-quantize">Netrans.quantize 模型量化</a></li>
<li class="toctree-l2"><a class="reference internal" href="#netrans-export">Netrans.export 模型导出</a></li>
<li class="toctree-l2"><a class="reference internal" href="#netrans-model2nbg-nbg">Netrans.model2nbg 模型生成nbg文件</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id1">使用示例</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="appendix.html">附录</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="netrans_cli.html" title="上一章">netrans_cli 使用</a></li>
<li>Next: <a href="appendix.html" title="下一章">附录</a></li>
</ul></li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&#169;2025, ccyh.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.2.3</a>
&amp; <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
<a href="_sources/netrans_py.md.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>