NMS原理
Non-Maximum-Suppression(非极大值抑制):
当两个box空间位置非常接近,就以score更高的那个作为基准,看IOU即重合度如何,如果与其重合度超过阈值,就抑制score更小的box,因为没有必要输出两个接近的box,只保留score大的就可以了。
应用:在目标检测过程中,(Faster-RCNN / YOLOv2)采用NMS来消除冗余的boxes,最终只留下最好的较少的box。
过程:
1 将各组box按照score降序排列
2 从score最大值开始,置为当前box,保存idex,然后依次遍历后面的box,计算与当前box的IOU值,若大于阈值,则抑制,不会输出
3 完成一轮遍历后,继续选择下一个非抑制的box作为当前box,重复步骤2
4 返回没有被抑制的index即符合条件的box
代码实现(被问过)
def NMS(dects,threshhold):
"""
detcs:二维数组(n_samples,5)
5列:x1,y1,x2,y2,score
threshhold: IOU阈值
"""
x1=dects[:,0]
y1=de