通常情况下,我们对每个检测到的对象只有一个边界框的置信度分数,而这个分数会被打印出来。我的理解是,对于每个检测到的Tensorflow对象检测API有多个分数,但最后它使用argmax来打印具有最高分数的对象名称。现在如果我想打印所有的分数(不只是最高的那个),我在哪里可以找到它们?
你可以通过以下方法获得图像的所有分数和各自的标签 output_dict
其中将包含关于该图像的所有信息。detection_scores
, detection_classes
, detection_boxes
和 num_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}
你可以将索引名称与类别名称进行映射 如果你想让名称被打印出来。
希望这能回答你的问题,祝你学习愉快。