基于OpenVINO的多输入model optimizer(Tensorflow)

Posted fourmi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于OpenVINO的多输入model optimizer(Tensorflow)相关的知识,希望对你有一定的参考价值。

Step I:下载预训练模型

wget -O - https://github.com/mozilla/DeepSpeech/releases/download/v0.3.0/deepspeech-0.3.0-models.tar.gz | tar xvfz -

文件内容如下

 技术图片

StepII:利用tensorflow中的summarize_graph对fronzen后的网络结构进行可视化

首先执行如下语句:得到大致的输入输出信息

bazel-bin/tensorflow/tools/graph_transforms/summarize_graph --in_graph="/home/gsj/mutil_input/models/output_graph.pb" --print_structure=false

输出信息如下:

 技术图片

存在四个输入:分别为input_node,input_lengths,previous_state_c,previous_state_h,输入形状分别为:[1,16,19,26] [1] [1,2048] [1,2048]

输出节点为:logits

将上述命令中的—print_structure设置为true得到精确的网络结构,部分结构如下图所示

 技术图片

输出节点由上可以得到raw_logits,^Assign_2,^Assign_3三个节点。往上查^Assign_2的节点,发现节点为previous_state_c,lstm_fused_cell/Gather ^Assign_3中为previous_state_h,lstm_fused_cell/Gather_1

查找previous_state_c及previous_state_h的相关节点的输入节点分别为

previous_state_c/read , previous_state_h/read

for benchmark_model:

bazel run tensorflow/tools/benchmark:benchmark_model -- --graph=/home/gsj/mutil_input/models/output_graph.pb --show_flops --input_layer=input_node,input_lengths,previous_state_c,previous_state_h --input_layer_type=float,int32,float,float --input_layer_shape=1,16,19,26:1:1,2048:1,2048 --output_layer=logits

 技术图片

 

Step III: Model optimizer生成IR文件

python3.6 mo.py --input_model /home/gsj/mutil_input/models/output_graph.pb --input input_node,previous_state_h/read,previous_state_c/read,input_lengths     --input_shape [1,16,19,26],[1,2048],[1,2048],[1] --output raw_logits,lstm_fused_cell/Gather,lstm_fused_cell/Gather_1 --freeze_placeholder_with_value "input_lengths->[16]"

 

以上是关于基于OpenVINO的多输入model optimizer(Tensorflow)的主要内容,如果未能解决你的问题,请参考以下文章

Windows 10 下 torch模型转换为 OpenVINO需要的IR文件

Ubuntu16.04+openVINO安装流程中出现的各种问题解决方法

Ubuntu16.04+openVINO安装流程中出现的各种问题解决方法

OpenVINO Model Server的服务化部署——step4(实现天空替换)

模型推理openvino 推理实践

使用 OpenVINO 工具包转换posenet模型?