非极大值抑制的python代码
时间: 2023-12-20 13:28:32 浏览: 75
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
***)是目标检测中常用的一种算法,用于去除重叠的检测框,只保留置信度最高的那个框。下面是一个用Python实现的NMS代码:
```
def nms(boxes, threshold=0.3, isMin=False):
new_boxes = boxes[boxes[:, 0].argsort()[::-1]] # 根据置信度进行从大到小排序
keep_boxes = []
while len(new_boxes) > 0:
_box = new_boxes[0]
keep_boxes.append(_box)
if len(new_boxes) > 1:
_boxes = new_boxes[1:]
iou_value = iou(_box, _boxes, isMin)
new_boxes = _boxes[np.where(iou_value < threshold)]
else:
break
return np.stack(keep_boxes)
```
其中,boxes是一个二维数组,每一行代表一个检测框,第一列是置信度,后面四列是框的坐标。threshold是阈值,用于判断两个框是否重叠。isMin表示是否使用最小值作为分母计算IOU,如果为False,则使用并集作为分母。
在代码中,首先将所有框按照置信度从大到小排序,然后依次遍历每个框,将置信度最高的框加入结果列表中。接着,计算当前框与剩余框的IOU值,将IOU值大于阈值的框从剩余框中删除。最后返回结果列表。
阅读全文