megengine.functional.nn.nms

nms(boxes, scores, iou_thresh, max_output=None)[源代码]

根据小方框的 IoU 值进行 非最大值抑制(NMS)。

参数
  • boxes (Tensor) – 形状为 (N, 4) 的张量;表示所有会被进行 nms 的小方框;每个小方框期望的格式为 (x1, y1, x2, y2)

  • iou_thresh (float) – IoU 重叠的阈值。

  • scores (Tensor) – 形状为 (N,) 的张量,表示小方块的分值。

  • max_output (Optional[int]) – 将要保留的小方框的最大数目;如果这个算子未被追溯则此参数是可选的,否则必须指定;如果未被指定,所有的小方框都会被保留。

返回类型

Tensor

返回

按scores排序的NMS保留的元素的指数。

注解

应该保留max_output并且跟踪有效正值。

实际案例

import numpy as np
from megengine import tensor
import megengine.functional as F

x = np.zeros((100,4))
np.random.seed(42)
x[:,:2] = np.random.rand(100,2)*20
x[:,2:] = np.random.rand(100,2)*20 + 100
scores = tensor(np.random.rand(100))
inp = tensor(x)
result = F.vision.nms(inp, scores, iou_thresh=0.7)
print(result.numpy())

输出:

[75 69]