当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.image.non_max_suppression_with_scores用法及代码示例


贪心地按分数的降序选择边界框的子集。

用法

tf.image.non_max_suppression_with_scores(
    boxes, scores, max_output_size, iou_threshold=0.5,
    score_threshold=float('-inf'), soft_nms_sigma=0.0, name=None
)

参数

  • boxes 形状为 [num_boxes, 4] 的二维浮点数 Tensor
  • scores 形状为[num_boxes] 的一维浮点数Tensor,表示对应于每个框(每行框)的单个分数。
  • max_output_size 一个标量整数Tensor,表示非最大抑制要选择的最大框数。
  • iou_threshold 一个 0-D 浮点张量,表示用于决定框相对于 IOU 是否重叠过多的阈值。
  • score_threshold 一个 0-D 浮点张量,表示根据分数决定何时移除框的阈值。
  • soft_nms_sigma 一个 0-D 浮点张量,表示 Soft NMS 的 sigma 参数;见 Bodla 等人 (c.f.https://arxiv.org/abs/1704.04503)。什么时候soft_nms_sigma=0.0(这是默认设置),我们回退到标准(硬)NMS。
  • name 操作的名称(可选)。

返回

  • selected_indices 形状为 [M] 的一维整数 Tensor 表示从框张量中选择的索引,其中 M <= max_output_size
  • selected_scores 形状为 [M] 的一维浮点张量,表示每个选定框的相应分数,其中 M <= max_output_size 。使用 Soft NMS 时(即 soft_nms_sigma>0 时),分数仅与相应的输入分数不同

修剪掉与先前选择的框重叠的 intersection-over-union (IOU) 高的框。边界框以 [y1, x1, y2, x2] 的形式提供,其中 (y1, x1)(y2, x2) 是任何对角框角对的坐标,并且坐标可以以标准化(即位于区间 [0, 1] 中)或绝对坐标的形式提供。请注意,此算法与原点在坐标系中的位置无关。请注意,该算法对坐标系的正交变换和平移是不变的;因此,坐标系的平移或反射会导致算法选择相同的框。此操作的输出是一组整数,索引到表示所选框的边界框的输入集合中。然后可以使用tf.gather 操作获得与所选索引对应的边界框坐标。例如:

selected_indices, selected_scores = tf.image.non_max_suppression_padded(
      boxes, scores, max_output_size, iou_threshold=1.0, score_threshold=0.1,
      soft_nms_sigma=0.5)
  selected_boxes = tf.gather(boxes, selected_indices)

此函数通过支持Soft-NMS(具有高斯加权)模式(参见 Bodla 等人,https://arxiv.org/abs/1704.04503)来概括 tf.image.non_max_suppression 操作,其中框会降低其他重叠框的分数,而不是直接导致它们被修剪。因此,与 tf.image.non_max_suppression 相比,tf.image.non_max_suppression_padded 在第二个输出 selected_scores 中返回每个输入框的新分数。

要启用此Soft-NMS 模式,请将soft_nms_sigma 参数设置为大于0。当soft_nms_sigma 等于0 时,tf.image.non_max_suppression_padded 的行为与tf.image.non_max_suppression 的行为相同(除了额外的输出)函数和运行时间。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.image.non_max_suppression_with_scores。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。