YOLO拓展-NMS算法
1.概述
NMS(non maximum suppression)即非极大值抑制,其本质就是搜索局部极大值,抑制非极大值元素,可以理解为局部最大搜索。
这里不讨论通用的NMS算法(参考论文《Efficient Non-Maximum Suppression》对1维和2维数据的NMS实现),而是用于目标检测中提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。
2.算法流程演示
Step1:按置信概率排列相应的备选框
Step2:取最大的框作为保留框,把与其IOU大于阈值的重叠框删除掉
Step3:剩下的框执行Step2
如上图,A,B,C为一组重叠框 F,D为一组重叠框。
根据候选框的类别分类概率做排序:F<B<D<E<A<C
先标记最大概率矩形框F是我们要保留下来的;
那么第一步会先按置信概率选择C框,分别判断A~F(除C外)与C的重叠度IOU(两框的交并比)是否大于某个设定的阈值,假设B、A与C的重叠度超过阈值,那么就扔掉B、A;
再从剩下的矩形框F、D、E中,选择概率最大的E,标记为要保留下来的,然后判读E与D、F的重叠度,扔掉重叠度超过设定阈值的矩形框D
剩余步骤如上重复操作,直到剩下的矩形框没有了,标记完所有要保留下来的矩形框C,E,F三个框