首页 > 解决方案 > 如何删除检测分数(百分比)?

问题描述

我正在尝试使用faster_rcnn_inception_v2模型检测自定义对象,并且正在使用 Tensorflow Object-Detection API。

在测试模型时,它会将对象检测为带有分数的对象名称,例如*Person: 99%*.

如何删除分数

这是我的可视化功能

vis_util.visualize_boxes_and_labels_on_image_array(
                image_np,
                np.squeeze(boxes),
                np.squeeze(classes).astype(np.int32),
                np.squeeze(scores),
                category_index,
                use_normalized_coordinates=True,
                line_thickness=8)

我已将分数更改为无

vis_util.visualize_boxes_and_labels_on_image_array(
                image_np,
                np.squeeze(boxes),
                np.squeeze(classes).astype(np.int32),
                None,
                category_index,
                use_normalized_coordinates=True,
                line_thickness=8)

更改后,我得到了这个结果 在此处输入图像描述

标签: object-detection-api

解决方案


我假设您使用的是官方对象检测演示笔记本提供的代码,还是它的一些变体?如果是这样,这部分代码就是负责渲染边界框的部分:

  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

  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。这是它在其中一条评论中所说的:

分数:一个形状为 [N] 或 None 的 numpy 数组。如果 score=None,则此函数假定要绘制的框是 groundtruth 框,并将所有框绘制为黑色,没有类别或分数。


推荐阅读