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


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


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

用法

tf.image.non_max_suppression_padded(
    boxes, scores, max_output_size, iou_threshold=0.5,
    score_threshold=float('-inf'), pad_to_max_output_size=False,
    name=None, sorted_input=False, canonicalized_coordinates=False, tile_size=512
)

参数

  • boxes 秩为 2 或更高的张量,形状为 [..., num_boxes, 4]。除最后两个外的维度是批次维度。
  • scores 秩为 1 或更高的张量,形状为 [..., num_boxes]。
  • max_output_size 一个标量整数Tensor,表示非最大抑制要选择的最大框数。请注意,将此值设置为较大的数字可能会导致 OOM 错误,具体取决于系统工作负载。
  • iou_threshold 一个浮点数,表示用于决定框是否相对于 IoU(交集超过联合)重叠过多的阈值。
  • score_threshold 表示框分数阈值的浮点数。得分不大于此阈值的框将被抑制。
  • pad_to_max_output_size 是否将输出 idx 填充到max_output_size。当输入是一批图像时必须设置为 True。
  • name 操作名称。
  • sorted_input 一个布尔值,指示输入框和分数是否按分数降序排序。
  • canonicalized_coordinates 如果框坐标为 [y_min, x_min, y_max, x_max] ,设置为 True 消除冗余计算以规范化框坐标。
  • tile_size 一个整数,表示图块中的框数,即每张图像可用于并行抑制其他框的最大框数;更大的tile_size 意味着更大的并行度和可能更多的冗余工作。

返回

  • idx:形状为 [..., num_boxes] 的张量,表示通过非最大抑制选择的索引。前导维度是输入框的批量维度。所有数字都在 [0, num_boxes) 内。对于每个图像(即 idx[i]),只有第一个 num_valid[i] 索引(即 idx[i][:num_valid[i]])是有效的。 num_valid:等级为 0 或更高的张量,形状为 [...],表示 idx 中有效索引的数量。它的维度是输入框的批量维度。
  • Raises ValueError:当为批量输入设置 pad_to_max_output_size 为 False 时。

对 tf.image.non_max_suppression 执行算法等效的操作,并添加一个可选参数 zero-pads 输出大小为 max_output_size 。此操作的输出是一个元组,其中包含索引到表示所选框的边界框输入集合中的整数集以及索引集中有效索引的数量。然后可以使用tf.slicetf.gather 操作获得与所选索引对应的边界框坐标。例如:

selected_indices_padded, num_valid = tf.image.non_max_suppression_padded(
      boxes, scores, max_output_size, iou_threshold,
      score_threshold, pad_to_max_output_size=True)
  selected_indices = tf.slice(
      selected_indices_padded, tf.constant([0]), num_valid)
  selected_boxes = tf.gather(boxes, selected_indices)

相关用法


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