Tensorflow ssd mobilenet v1 coco的输出节点名称推理冻结模型

Tensorflow ssd mobilenet v1 coco的输出节点名称推理冻结模型,tensorflow,intel,ncsdk,movidius,Tensorflow,Intel,Ncsdk,Movidius,我想把TensorFlow图编译成Movidius图。我使用Model Zoo的ssd\u mobilenet\u v1\u coco模型在我自己的数据集上对其进行训练 然后我跑了 python object_detection/export_inference_graph.py \ --input_type=image_tensor \ --pipeline_config_path=/home/redtwo/nsir/ssd_mo

我想把TensorFlow图编译成Movidius图。我使用Model Zoo的
ssd\u mobilenet\u v1\u coco
模型在我自己的数据集上对其进行训练

然后我跑了

python object_detection/export_inference_graph.py \
                --input_type=image_tensor \
                --pipeline_config_path=/home/redtwo/nsir/ssd_mobilenet_v1_coco.config \
                                --trained_checkpoint_prefix=/home/redtwo/nsir/train/model.ckpt-3362 \
                --output_directory=/home/redtwo/nsir/output
这将生成me
freezed\u interference\u graph.pb
&
saved\u model/saved\u model.pb

现在将保存的模型转换为Movidius图形。有人发出命令

导出GraphDef文件

python3 ../tensorflow/tensorflow/python/tools/freeze_graph.py \
        --input_graph=inception_v3.pb \
        --input_binary=true \
        --input_checkpoint=inception_v3.ckpt \
        --output_graph=inception_v3_frozen.pb \
        --output_node_name=InceptionV3/Predictions/Reshape_1
冻结推理模型

python3 ../tensorflow/tensorflow/python/tools/freeze_graph.py \
        --input_graph=inception_v3.pb \
        --input_binary=true \
        --input_checkpoint=inception_v3.ckpt \
        --output_graph=inception_v3_frozen.pb \
        --output_node_name=InceptionV3/Predictions/Reshape_1
最终可将其馈送至NCS Intel Movidius SDK

mvNCCompile -s 12 inception_v3_frozen.pb -in=input -on=InceptionV3/Predictions/Reshape_1
所有这些都在Intel Movidius网站上给出:

我的模型已经过训练,即输出/冻结推理图。为什么我要使用
/slim/export\u expression\u graph.py
再次冻结它,或者它是
输出/保存的\u model/保存的\u model.py
将作为
slim/export\u expression\u graph.py
的输入

我想要的只是输出\节点\名称=接收v3/预测/重塑\ 1。如何获得这个输出\u name\u name目录结构及其内部的任何内容?我不知道它包含了什么

model zoo的
ssd\u mobilenet\u v1\u coco
模型应该使用哪个输出节点(在我自己的自定义数据集上进行培训)

我理解和不理解的事情: 输入检查点:✓ [培训期间创建的检查点] 输出图形:✓ [输出冻结图形的路径] 输出节点名称:X

我不明白
out\u node\u names
参数&考虑到它的
ssd\u mobilnet
而不是inception\u v3,它应该包含什么


系统信息
  • 您正在使用的型号的顶级目录是什么
  • 我是否编写了自定义代码(而不是使用TensorFlow中提供的股票示例脚本)
  • 操作系统平台和发行版(如Linux Ubuntu 16.04):Linux Ubuntu 16.04
  • TensorFlow安装自(源代码或二进制文件):TensorFlow与pip一起安装
  • TensorFlow版本(使用下面的命令):1.13.1
  • Bazel版本(如果从源代码处编译)
  • CUDA/cuDNN版本:V10.1.168/7*
  • GPU型号和内存:2080Ti 11Gb
  • 复制的精确命令

saved_model/saved_model.pb中的图形是预训练的inception_v3模型的图形定义(图形体系结构),没有向图形加载权重。freezed_interference_graph.pb是使用您提供的检查点冻结的图,并使用inception_v3模型的默认输出节点。 要获取输出节点名称,可以使用Summary_图形工具

如果安装了bazel,您可以使用以下命令使用Summary_graph tool

bazel build tensorflow/tools/graph_transforms:总结图

bazel bin/tensorflow/tools/graph_transforms/Summary_graph\ --in\u graph=/tmp/inception\u v3\u inf\u graph.pb

如果未安装bazel,则可以使用tensorboard或任何其他图形可视化工具(如Netron)获取输出节点


附加freeze_graph.py可用于冻结指定输出节点的图形(即,在将附加输出节点添加到inceptionV3的情况下)。冻结干涉图.pb也同样适合于查询。

ncsdk v1和v2不推荐使用OpenVino:
python freeze_graph.py \
                 --input_graph=/path/to/graph.pbtxt \
                 --input_checkpoint=/path/to/model.ckpt-22480 \
                 --input_binary=false \
                 --output_graph=/path/to/frozen_graph.pb \
                 --output_node_names="the nodes that you want to output e.g. InceptionV3/Predictions/Reshape_1 for Inception V3 "