Tensorflow对象检测API:访问给定边界框的所有类分数吗?

时间:2018-06-22 23:04:10

标签: python tensorflow object-detection

使用Tensorflow的异物检测API,可以训练SSD起始对象检测器并通过查询与边界数组相对应的张量detection_boxes:0detection_scores:0detection_classes:0来进行推理框坐标,包含每个边界框最大分数的数组以及分别对应于每个边界框最大分数类别标签的整数数组。

我感兴趣的是每个边界框所有类的分数。首先,我尝试查看detection_scores操作是否具有多个张量,但是查询detection_scores:1张量时抛出一个错误,指出张量不存在。其次,我尝试遍历模型的节点名称以找到相关的探测操作:张量进行查询,但名称往往很通用。有人知道查询这些值的方法吗?

(P.S。我正在使用tensorflow-gpu 1.5和ssd inception v2在python 2.7中工作)

1 个答案:

答案 0 :(得分:0)

我不确定这个答案是否令人满意,但是请尝试一下:

您可以加载模型并将其保存在张量板中以供检查:

import tensorflow as tf
from tensorflow.python.summary import summary

# I used mobilenet v2 with ssdlite from the tf model zoo
with tf.gfile.FastGFile('frozen_inference_graph.pb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())

sess = tf.Session()

sess.graph.as_default()
tf.import_graph_def(graph_def, name='')

pb_visual_writer = summary.FileWriter('.')
pb_visual_writer.add_graph(sess.graph)

在tensorboard中,您将看到模型,在concat之后,我能找到的最接近您要搜索的内容是concat_1BoxPredictor ops。

第一个输出的形状为?x1917x1x4的张量,其中包含这些框。 另一个输出的形状为?x1917x91的张量,其中包含每个框的每个类的分数。

请注意,concat之后是Squeeze op,以使其?x1917x4,而concat_1之后是名为Sigmoid的Postprocessor/convert_scores