要回答您的原始问题,您应该设置 skip_scores 和 skip_labels 输入参数 visualize_boxes_and_labels_on_image_array 真的。
skip_scores
skip_labels
visualize_boxes_and_labels_on_image_array
您正在获得冗余框,因为当您将None作为分数传递时,可视化功能无法再为预测分数设置阈值。
看看的定义 visualize_boxes_and_labels_on_image_array ,你会发现一个 min_score_thresh 输入参数默认设置为0.5。除非您没有通过,否则默认情况下不会显示分数小于0.5的检测到的框 scores 在这种情况下,所有框都可视化。
min_score_thresh
scores
我假设你正在使用官方提供的代码 物体检测演示 笔记本,还是它的一些变种?如果是这样,这部分代码就是负责渲染边界框的部分:
vis_util.visualize_boxes_and_labels_on_image_array( image_np, output_dict['detection_boxes'], output_dict['detection_classes'], output_dict['detection_scores'], category_index, instance_masks=output_dict.get('detection_masks'), use_normalized_coordinates=True, line_thickness=8)
要从渲染的边界框中删除检测分数,您只需要替换 output_dict['detection_scores'] 同 scores=None :
output_dict['detection_scores']
scores=None
vis_util.visualize_boxes_and_labels_on_image_array( image_np, output_dict['detection_boxes'], output_dict['detection_classes'], scores=None, # replace here category_index, instance_masks=output_dict.get('detection_masks'), use_normalized_coordinates=True, line_thickness=8)
你可以查看这个函数的源代码 tensorflow/models/research/object_detection/utils/visualization_utils.py 。这就是它在其中一条评论中所说的:
tensorflow/models/research/object_detection/utils/visualization_utils.py
分数:形状[N]或无形的numpy数组。如果得分=无,则此函数假定要绘制的框是groundtruth框,并将所有框绘制为黑色,没有类或分数。