下载
中文
注册

NonMaxSuppression

功能

过滤掉与先前选定的框有较高重叠的“交集-并集”(IOU)框。移除得分小于score_threshold的边界框。边界框格式由属性center_point_box表示。

注意,该算法不知道原点在坐标系中的位置,更普遍地说,它对坐标系的正交变换和平移是不变的。因此,平移或反射坐标系统的结果在相同的方框被算法选择。selected_indices输出是一组整数,索引到表示所选框的边界框的输入集合中。然后可以使用Gather或gathernd操作获得与所选索引对应的边框坐标。

输入

2-5输入:

boxes: tensor(float)。

scores: tensor(float)。

max_output_boxes_per_class: 可选,数据类型:int64。

iou_threshold: 可选,数据类型:float。

score_threshold: 可选,数据类型:float。

输出

一个输出:

selected_indices: tensor(int64)。

属性

center_point_box: int,默认值0。决定了边界框格式。

  • 等于0时,主要用于TF模型,数据以(y1,x1,y2,x2)形式提供,其中(y1,x1)(y2,x2)是对角线框角坐标,需要用户自行保证x1<x2、y1<y2。
  • 等于1时,主要用于pytorch模型,框数据以(x_center, y_center, width, height)形式提供。

约束

Atlas 200/300/500 推理产品Atlas 训练系列产品对于输入boxes和scores的数据类型仅支持float16。

max_output_boxes_per_class数值大于700时,可能会引发硬件资源不足问题。

该算子在昇腾AI处理器上的输出Shape为[max_output_boxes_per_class * batch_size * class_num, 3],如果最终每个类筛选出的框不足max_output_boxes_per_class个,则会填充-1。例如:

batch_size = 1

class_num = 2

max_output_boxes_per_class = 5

第一个类筛选出 3 个框 第二个类帅选出 1 个框,则最终结果为:

[0, 0, 8]

[0, 0, 5]

[0, 0, 7]

[-1, -1, -1]

[-1, -1, -1]

[0, 1, 9]

[-1, -1, -1]

[-1, -1, -1]

[-1, -1, -1]

[-1, -1, -1]

支持的ONNX版本

Opset v11/v12/v13/v14/v15/v16/v17/v18