记录一下对非极大值抑制的理解。
非极大值抑制法
顾名思义,是在抑制不是极大值的元素,即搜索一个局部最大值。
在目标检测中应用比较广泛。对一个目标而言,算法对该目标肯产生多个候选框,每个框对应一个score,将这些score全部排序,选出得分最大的一个,再用其他框与当前最大的框计算其重叠程度,就是常说的iou,当大于某个阈值,比如0.5时,将这些大于阈值0.5的框删除,只保留score最大的一个框,因此就是抑制了不是极大值的框,即非极大值抑制。。
单个目标和多目标
若只有一个目标,直接选取得分最大的框即可,若有多个目标,NMS算法会迭代的进行选择,保留每个目标的得分最大框。
假设图中有两个人脸待检测,首先对现有的框按score的大小进行排序,选出得分最大的一个框,通过计算iou,将大于某个阈值的几个非极大值的框删除,并标记第一个框,是最终保留下来的;然后在剩下的框中,继续按照之前的方法,选出score最大的框,计算iou,将大于某个阈值的框删除。这样不断迭代,就可以对多目标进行检测。
假设有6个得分框,分别按从score从小到大记A,B,C,D,E,F,
(1)选出当前最大的得分框F,计算剩下的框与F的iou,选出大于某个阈值的框,如A,B,然后将A,B删除,标记现在所选择的框F
(2)在剩下的框中C,D,E中,选出score最大的框E,计算C,D与E之间的iou,将大于某个阈值的框删除,标记现在选择的框E
(3)不断重复该过程,就可以得到所需要的框
如图,共有如下5个得分框,有两个人脸待检测,按score大小从小到大排序,为0.67,0.75,0.81,0.83,0.98!
首先选出score最大的框,即得分为0.98的红框,计算剩余框与它的iou,将大于某阈值的框删除,在图中可以看出,删除的框是得分为0.75和0.83的框。标记0.98的得分框。
在剩余的两个框中,继续按照之前的方法进行操作,即可得出另一个所需要的框。
小白理解,如有错误请指正。