NMS算法基础
NMS将分成以下几篇进行讨论:
- NMS算法基本描述
- NMS算法代码实现以及性能分析与优化
- NMS不同框架支持以及性能调研
- NMS不同加速平台支持以及性能
本节只讲述基本算法描述.
1. NMS算法背景
[NMS]为非极大值抑制,在目标检测任务中主要对检测结果进行处理,使得结果中一个对象尽可能得到一个检测结果,过程如图1所示:
可以看出通过NMS,可以抑制掉过多重复结果。
2. 单类别NMS算法描述
首先针对单类别NMS进行描述,基本算法如下所示:
上述算法简单描述如下:
- 对于Box的置信度进行排序,选取最大值
- 获取当前做大值box位置,并加入输出集合,同时从已有box中删去当前最大box
- 对于当前box,计算其与剩余box的iou指标,当iou大于设定阈值,则对其进行抑制
- 重复上述过程,遍历所有box, 最后输出保留box
整个抑制过程如下图示意:
其中 IoU计算指标为交并比,即两个box相交面积比上面积的并集,可以通过下图进行表示 [IoU]
其计算逻辑如下图所示:
3. 多类别NMS处理
上面讲述了单个类别的抑制过程,对于多个类别,则是通独立运行NMS,每次针对单个类型进行输出。
4. 总结
本文中主要讲述NMS算法基本描述,以及其IoU计算过程, 后续将结合算法进行代码实现以及性能分析优化
[1] https://ayameyao.github.io/NMS/Chapter1/4singleboj.html
[2] https://machinelearningspace.com/intersection-over-union-iou-a-comprehensive-guide/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo!