Tensorflow对象检测API每个边界框的概率分布/置信度得分

Tensorflow对象检测API每个边界框的概率分布/置信度得分,tensorflow,object-detection-api,Tensorflow,Object Detection Api,通常,对于每个检测到的对象打印的每个边界框,我们只有一个置信分数。我的理解是,对于每个检测到的Tensorflow对象检测API都有多个分数,但最后它使用argmax打印具有最高分数的对象的名称。现在如果我想打印所有的分数(不仅仅是最高的分数),我在哪里可以找到它们 您可以使用output\u dict获取图像的所有分数和相应标签,该标签将包含图像中有关检测分数、检测类、检测框和num\u检测的所有信息 对于给定的图像,您只需执行以下操作即可打印检测到的对象的所有分数 all_scores ={

通常,对于每个检测到的对象打印的每个边界框,我们只有一个置信分数。我的理解是,对于每个检测到的Tensorflow对象检测API都有多个分数,但最后它使用argmax打印具有最高分数的对象的名称。现在如果我想打印所有的分数(不仅仅是最高的分数),我在哪里可以找到它们

您可以使用
output\u dict
获取图像的所有分数和相应标签,该标签将包含图像中有关
检测分数
检测类
检测框
num\u检测
的所有信息

对于给定的图像,您只需执行以下操作即可打印检测到的对象的所有分数

all_scores ={}
image_np = np.array(Image.open(image_path))
#Actual detection.
output_dict = run_inference_for_single_image(model, image_np)
for cls_idx,scr in zip(output_dict["detection_classes"],output_dict["detection_scores"]):
   all_scores[cls_idx] = scr
all_scores
的输出如下所示:

{1: 0.044680625,
 3: 0.05898307,
 9: 0.051253375,
 16: 0.04842608,
 18: 0.0313316,
 21: 0.031728894,
 33: 0.13961948,
 34: 0.07948237,
 38: 0.044567253,
 42: 0.047603823,
 47: 0.030417146,
 57: 0.0398438,
 62: 0.032532312,
 63: 0.04614881,
 84: 0.0338195,
 88: 0.036108077} 
如果要打印名称,可以将索引名称与类别名称映射


希望这能回答您的问题,快乐学习。

对于最新版本的对象检测API(对应于TensorFlow 2.2版),包含检测的字典具有以下键:

dict_keys([
'raw_detection_boxes',
'detection_multiclass_scores',
'raw_detection_scores', 
'detection_anchor_indices', 
'detection_scores',
'detection_boxes',
'detection_classes',
'num_detections'])
detection\u multiclass\u分数
是与每次检测的所有类别的分数相对应的分数(不仅仅是最高的)。因此,如果你想看到他们,你可以做如下事情:

model = tf.saved_model.load(model_directory)
detections = model(input_tensor)
detections = {key: value[0, :num_detections].numpy()
                for key, value in detections.items()}
print(detections['detection_multiclass_scores'])
其中,
model\u目录
是保存模型的目录,
input\u张量
是要推断为张量的图像


如果我没有弄错(如果我弄错了,请纠正我),这些分数不适用于较旧版本的对象检测API。

Hi@Mahdi,您能给出您问题的更多上下文吗?你能给出一个最小的可复制代码吗?我的问题是关于图像中每个对象的置信度得分。例如,如果一个图像有两个对象,但数据集有10个对象,那么假设我们需要:第一个对象)狗90%,猫3%,计算机1%。。。(总共100%)嗨@Mahdi,你是在谈论本教程吗?是的,我遵循了本教程和其他一些教程,但想法是一样的,
output_dict['detection_scores']
显示边界框的最大分数,从哪里获得所有分数。@Mahdi-如果你认为我已经回答了你的问题,请投票并接受答案,谢谢。