Tensorflow对象检测API的每个边界盒的概率分布和置信度得分。

问题描述 投票:1回答:1

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

tensorflow object-detection-api
1个回答
1
投票

你可以通过以下方法获得图像的所有分数和各自的标签 output_dict 其中将包含关于该图像的所有信息。detection_scores, detection_classes, detection_boxesnum_detections.

对于一个给定的图像,你可以简单地执行以下操作来打印所有检测到的对象的分数。

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} 

你可以将索引名称与类别名称进行映射 如果你想让名称被打印出来。

希望这能回答你的问题,祝你学习愉快。

© www.soinside.com 2019 - 2024. All rights reserved.