4

我使用TensorFlow Object Detection API训练 SSD ,如此所述。它产生一个ckpt、元和索引文件。为了在我的图像上运行它,我尝试检查演示代码。它要求将模型转换为冻结图。我尝试将我的模型转换为此处所述的冻结推理图。在该程序中,我必须提供输出节点名称。我无法确定必须在此处使用的 SSD 模型中的节点名称。请帮忙。我试过'num_detections:0','detection_boxes:0'等。只是得到错误:

AssertionError:num_detections 不在图中

4

3 回答 3

3

我们有一个特殊的工具可以在 Tensorflow 对象检测 API 中转换为冻结图 --- 只需运行export_inference_graph.py二进制文件。使用此工具的说明在此处

于 2017-07-10T23:00:33.760 回答
0

您可以自行探索图:TensorFlow 模型文件的工具开发人员指南并查找节点名称。我可以从我的模型中给出样本:“prefix/digit1/Softmax:0”(在我的 keras 模型中是“digit1”)另外我记得你应该将这些名称的列表提供给 transform_graph 实用程序(“--output”参数) .

于 2017-07-10T17:10:32.730 回答
0

我正在使用这个小 python 脚本根据其操作来本地化节点。"PLaceholder" 和 "Identity" 似乎对查找输入和输出节点很有趣:

import tensorflow as tf

NODE_OPS = ['Placeholder','Identity']
MODEL_FILE = '/path/to/frozen_inference_graph.pb'

gf = tf.GraphDef()
gf.ParseFromString(open(MODEL_FILE,'rb').read())

print([n.name + '=>' +  n.op for n in gf.node if n.op in (NODE_OPS)])
于 2018-01-11T14:29:45.153 回答