近段时间一直在看multi-person pose estimation,在最后有一个剔除候选keypoint的过程,该过程采用的NMS方法。但我一直对NMS不理解,经过查找资料,整理出本人对NMS的理解内容,如有不对请指出。
在引进NMS概念之前我们先介绍IOU(交并比),因为在NMS中选出框图起到至关重要的作用
1、IOU(交并比)
物体检测需要定位出物体的bounding box,就像上面的图片一样,我们不仅要定位出车辆的bounding box 我们还要识别出bounding box 里面的物体就是车辆。
对于bounding box的定位精度,有一个很重要的概念,那就是定位精度评价公式:IOU。
IOU表示了bounding box 与 ground truth 的重叠度,如下图所示:
矩形框A、B的一个重合度IOU计算公式为:
IOU=Area(A∩B)/Area(A∪B)
就是矩形框A、B的重叠面积占A、B并集的面积比例:
IOU=SI/(SA+SB-SI)
如何计算IOU(交并比)
首先求出重合面积:
选取两个矩形框左顶角的横,纵坐标的最大值,x21,y21;选取两个矩形框右下边角的横纵坐标的最小值,x12,y12;
重合面积计算:
inter=
并集的面积计算:
计算IOU:
具体实例如下:
有了IOU(交并比)的概念理解,接下来我们就进入正题,介绍NMS
2、NMS概念
NMS也即非极大值抑制。在最近几年常见的物体检测算法(包括rcnn、sppnet、fast-rcnn、faster-rcnn等)中,最终都会从一张图片中找出很多个可能是物体的矩形框,然后为每个矩形框为做类别分类概率:
所谓非极大值抑制:依靠分类器得到多个候选框,以及关于候选框中属于类别的概率值,根据分类器得到的类别分类概率做排序,具体算法流程如下:
(1)将所有框的得分排序,选中最高分及其对应的框
(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。(为什么要删除,是因为超过设定阈值,认为两个框的里面的物体属于同一个类别,比如都属于狗这个类别。我们只需要留下一个类别的可能性框图即可。)
(3)从未处理的框中继续选一个得分最高的,重复上述过程。
举例说明:(1)(2),这里设定交并比>=0.6就删除对比框图,留下最高分的框图;对于低于阈值的框图留下,然后在剩下的框图中排序,选出置信度值高的框图,然后重复交并比比较这个过程。
(1)选出Dog这个框图
(1)选出Bike这个框图