![]() |
||
---|---|---|
.. | ||
lenet | ||
README.md |
README.md
TensorFlow模型转换示例
本文档以 lenet 为例,介绍如何使用 Netrans 对 Tensorflow 模型进行转换。
Netrans 支持 TensorFlow 版本1.4.x, 2.0.x, 2.3.x, 2.6.x, 2.8.x, 2.10.x, 2.12.x 以tf.io.write_graph()保存的模型。
安装Netrans
创建 conda 环境 .
conda create -n netrans python=3.8 -y
conda activate netrans
下载 Netrans .
mkdir -p ~/app
cd ~/app
git clone https://gitlink.org.cn/nudt_dsp/netrans.git
安装 Netrans。
cd ~/app/netrans
./setup.sh
数据准备
转换 TensorFlow 模型时,模型工程目录应包含以下文件:
- .pb 文件:冻结图模型文件
- inputs_outputs.txt:输入输出节点定义文件
- dataset.txt:数据路径配置文件
我们的示例 已经完成数据准备,可以使用下面命令进入目录执行。
cd netrans/
cd examples/tensorflow
此时目录如下:
lenet/
├── 0.jpg # 校准数据
├── dataset.txt # 指定数据地址的文件
├── inputs_outputs.txt # 输入输出节点定义文件
└── lenet.pb # 冻结图模型文件
使用 nertans_cli 命令行工具
模型导入
import.sh lenet
该命令会在工程目录下生成包含模型信息的 .json 和 .data 数据文件。 此时 lenet 的目录结构如下:
lenet/
├── 0.jpg
├── dataset.txt
├── inputs_outputs.txt
├── lenet.data
├── lenet.json
└── lenet.pb
配置文件生成
数据在推理前一般会经过预处理,为了确保模型可以正确的输入数据,需要生产对应的配置文件。
config.sh lenet
此时 lenet 的目录结构如下:
lenet/
├── 0.jpg
├── dataset.txt
├── inputs_outputs.txt
├── lenet.data
├── lenet_inputmeta.yml
├── lenet.json
└── lenet.pb
模型量化
quantize.sh lenet uint8
此时 lenet 的目录结构如下:
lenet/
├── 0.jpg
├── dataset.txt
├── inputs_outputs.txt
├── lenet_asymmetric_affine.quantize
├── lenet.data
├── lenet_inputmeta.yml
├── lenet.json
└── lenet.pb
模型导出
使用 export.sh 将模型导出到nbg格式并生成应用程序工程。
export.sh lenet uint8
此时 lenet 的目录结构如下:
lenet/
├── 0.jpg
├── dataset.txt
├── inputs_outputs.txt
├── lenet_asymmetric_affine.quantize
├── lenet.data
├── lenet_inputmeta.yml
├── lenet.json
├── lenet.pb
└── wksp
└── asymmetric_affine
├── BUILD
├── dump_core_graph.json
├── graph.json
├── lenetasymmetricaffine.2012.vcxproj
├── lenet_asymmetric_affine.export.data
├── lenetasymmetricaffine.vcxproj
├── main.c
├── makefile.linux
├── network_binary.nb
├── vnn_global.h
├── vnn_lenetasymmetricaffine.c
├── vnn_lenetasymmetricaffine.h
├── vnn_post_process.c
├── vnn_post_process.h
├── vnn_pre_process.c
└── vnn_pre_process.h
使用 netrans_py python api
python3 example.py lenet -q uint8