首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于output_node_name的ssd移动网络v1 coco推理冻结模型

基于output_node_name的ssd移动网络v1 coco推理冻结模型
EN

Stack Overflow用户
提问于 2019-07-17 18:49:35
回答 1查看 1.1K关注 0票数 0

我想把TensorFlow图编译成Movidius图。我使用了Model的ssd_mobilenet_v1_coco模型来在我自己的数据集上训练它。

然后我跑了

代码语言:javascript
复制
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

它生成了frozen_interference_graph.pb & saved_model/saved_model.pb

现在要将这个保存的模型转换为Movidius图。有一些命令

导出GraphDef文件

代码语言:javascript
复制
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

冻结推理模型

代码语言:javascript
复制
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

代码语言:javascript
复制
mvNCCompile -s 12 inception_v3_frozen.pb -in=input -on=InceptionV3/Predictions/Reshape_1

所有这些都是在英特尔Movidius网站上提供的:modelzoo.html

我的模特已经接受了output/frozen_inference_graph的训练。为什么我再次使用/slim/export_inference_graph.py冻结它,或者output/saved_model/saved_model.py将作为slim/export_inference_graph.py的输入?

我只想要output_node_name=Inceptionv3/Predictions/Reshape_1.如何获得这个output_name_name目录结构&它中的任何内容?我不知道它包含了什么

对于模型动物园的ssd_mobilenet_v1_coco模型(在我自己的自定义数据集上进行培训),应该使用哪个输出节点?

代码语言:javascript
复制
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 "

我理解和不理解的东西: input_checkpoint:✓检查点是在培训期间创建的,output_graph:✓路径输出冻结图out_node_names: X

我不理解out_node_names参数&考虑到它的ssd_mobilnet而不是inception_v3,应该在里面做些什么

系统信息

  • 您正在使用的模型的顶层目录是什么:
  • 编写了自定义代码(而不是使用TensorFlow中提供的股票示例脚本)
  • 操作系统平台和发行版(例如LinuxUbuntu16.04):LinuUbuntu16.04
  • 从(源或二进制)安装的TensorFlow :与pip一起安装的TensorFlow
  • TensorFlow版本(使用下面的命令):1.13.1
  • Bazel版本(如果从源代码编译)
  • CUDA/cuDNN版本:V10.1.168/7.*
  • GPU模型与内存:2080Ti11GB
  • 用于复制的精确命令
EN

回答 1

Stack Overflow用户

发布于 2019-07-26 04:29:09

保存模型/保存模型. to中的图是预先训练过的inception_v3模型的图定义(图体系结构),而没有加载到图中的权重。frozen_interference_graph.pb是用您提供的检查点冻结的图形,并接受inception_v3模型的默认输出节点。要获得输出节点名称,可以使用summarise_graph工具

如果安装了bazel,可以使用以下命令使用summarise_graph工具

bazel构建tensorflow/tools/graph_transforms:summarize_graph

bazel-bin/tensorflow/tools/graph_transforms/summarize_graph _-in_图=/tmp/inception_v3_inf_Graph.pb

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

附加的freeze_graph.py可用于冻结指定输出节点的图(即,在向inceptionV3添加额外输出节点的情况下)。frozen_interference_graph.pb也同样适合打广告。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57082444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档