目标检测的过程中,会产生多个候选区域proposals,但是最终一个目标只能选取匹配程度最大的框,抑制其他框。
过程:
- 检测结果会有目标的区域建议及区域得分score,按照得分大小排列(理论上从小到大排,但个人认为从大到小也没差),这个过程中也可去掉得分太小的框(比如小于0.5的直接去掉,不参与后边的筛选)
- 取出得分最大的候选框,比如图中左边的0.98(图片源于https://blog.youkuaiyun.com/xiexu911/article/details/80609298),依次与其他的框做一次IOU的计算,如果大于某一阈值,去掉
- 确保每个框都与得分最大的框做一次IOU计算,最终保留得分最大的框
- 如果有多个目标,需要独立进行三次非极大值抑制,找出各自的得分最大框
个人认为单目标的检测过程中,NMS好像没什么重要的作用,为何不直接选取最大score框?但是多目标检测时,如下图,若直接选取最大框而不做多次IOU计算,会出现右边目标漏检。