使用Tensorflow的异物检测API,可以训练SSD起始对象检测器并通过查询与边界数组相对应的张量detection_boxes:0
,detection_scores:0
和detection_classes:0
来进行推理框坐标,包含每个边界框最大分数的数组以及分别对应于每个边界框最大分数类别标签的整数数组。
我感兴趣的是每个边界框所有类的分数。首先,我尝试查看detection_scores
操作是否具有多个张量,但是查询detection_scores:1
张量时抛出一个错误,指出张量不存在。其次,我尝试遍历模型的节点名称以找到相关的探测操作:张量进行查询,但名称往往很通用。有人知道查询这些值的方法吗?
(P.S。我正在使用tensorflow-gpu 1.5和ssd inception v2在python 2.7中工作)
答案 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_1
和BoxPredictor
ops。
第一个输出的形状为?x1917x1x4
的张量,其中包含这些框。
另一个输出的形状为?x1917x91
的张量,其中包含每个框的每个类的分数。
请注意,concat
之后是Squeeze
op,以使其?x1917x4
,而concat_1
之后是名为Sigmoid的Postprocessor/convert_scores