关于非极大值抑制NMS(Non-maximum suppression)的理解

前一段时间看过一次NMS,但是也只是含含糊糊的,理解的不是很到位。最近在做一个东西的时候必须要用到NMS,因此重新仔细的看了一遍NMS。那么我将从三个方面阐述对于NMS的一些理解。

1.什么是NMS?

NMS的中文意思就是非极大值抑制。故名思意就是抑制不是极大值的一些值,在概念这块的理解来说,它不是一个最大值而是一个局部最大值。那对于目标检测来说的话,就是要删除一些不是极大框的目标区域。

2.为什么要用NMS?

在做目标检测的时候,往往会生成很多很多候选框,不管是在R-CNN中还是在Faster R-CNN中都会出现这种问题,那么生成很多候选框或者是重叠的或者是两个框的IOU值特别大,这个时候我们就需要对这些候选框做一些处理。因此我们选择使用NMS算法。下图所示,左边是没有经过NMS处理过的,右边是经过NMS处理过的。

关于非极大值抑制NMS(Non-maximum suppression)的理解_第1张图片

 

3.NMS算法的具体流程处理

1.对某一类按score对候选框进行排序,并选出score最高的候选框,我们称之为Max_s

2.设定一个阈值,称这个阈值为Th。

3.计算其他候选框与Max_s的IOU值,如果大于IOU>Th,则表明与Max_s重叠太多应该删去;如果IOU

4.重复步骤3,直至待比较的候选框集合为空,那么保留下来的候选框就是经过NMS算法过滤后剩下的候选框。

4.其它说明

1.在算法描述的步骤中,我们只是对一类的候选框进行这样的处理。假如说有20个类别,我们要进行20次这样的处理。

2.所提到的score分数是通过分类器分类之后生成的分数。

3.这个阈值是有我们自己设置的,一般情况下设置0.6/0.5/0.4.

4.这个NMS也是有缺陷的,如下图所示。红色框和绿色框的IOU>0.6,如果删除绿色的框显得不合理。所以这也是NMS的缺陷,需要改进这个算法,接下来就出现了soft NMS。

关于非极大值抑制NMS(Non-maximum suppression)的理解_第2张图片

你可能感兴趣的:(卷积神经网络,NMS,非极大值抑制)