我想将TensorFlow Graph编译为Movidius Graph。我已经使用Model Zoo的ssd_mobilenet_v1_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
这使我frozen_interference_graph.pb
和saved_model/saved_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
所有这些信息均可在英特尔Movidius网站上找到:https://movidius.github.io/ncsdk/tf_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
模型应使用什么输出节点(在我自己的自定义数据集中训练)
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,应该在其中做什么
答案 0 :(得分:0)
Saved_model / saved_model.pb中的图形是预训练的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_graph = / tmp / inception_v3_inf_graph.pb
如果未安装bazel,则可以使用张量板或任何其他图形可视化工具(如Netron)获得输出节点。
附加的freeze_graph.py可用于冻结指定输出节点的图(即,在将其他输出节点添加到inceptionV3的情况下)。 Frozen_interference_graph.pb同样非常适合侵权。