非极大值抑制(Non-Maximum Suppression,简称NMS)是一种常用于目标检测任务
中的后处理技术,主要用于从多个候选框中
选出最合适的边界框
,并抑制那些与最优候选框重叠度高
且分类置信度低
的框。
NMS的目的:
在目标检测算法中,经过分类和边界框回归后,可能会得到多个 重叠 或 重复 的候选框(Region Proposals),这些框可能是针对同一个目标生成的
。NMS的目的是从这些重叠的框中 选出最合适的框,并去除那些冗余的框
,以减少重复检测的结果
。
NMS的工作原理:
-
输入框排序:首先,将所有候选框按照 置信度(通常是目标分类的概率或得分)进行排序,
得分高
的框会排在前面。 -
选择框:选择
得分最高的候选框
作为当前的最佳框,并将其加入最终检测结果。 -
计算重叠度(IoU):对剩下的候选框与当前选择的框,计算它们的 交并比(Intersection over Union,IoU)。
IoU 是两个框的交集区域与它们的并集区域的比值
。 -
抑制框:如果某个候选框与当前选定框的IoU大于
某个设定的阈值
(通常为0.5),则认为这个候选框与当前框有较高的重叠
,它代表了同一个物体,因此会被 抑制(去除)。 -
重复步骤:继续选择得分最高的框,并重复步骤3和步骤4,直到
所有候选框
都被处理完。
非极大值抑制的流程:
- 对所有候选框按照
置信度
排序。 - 选择
置信度最高
的框,加入最终结果。 - 对其余候选框,计算与选定框的
IoU
。 - 如果
IoU大于预设阈值
,则去除该框。 - 重复步骤2至4,直到所有候选框处理完毕。
举个例子:
假设有四个候选框:框A、B、C、D,分别有以下得分:
- 框A:得分 0.9
- 框B:得分 0.8
- 框C:得分 0.7
- 框D:得分 0.6
首先按得分
排序得到:A > B > C > D。然后选择得分最高
的 框A,接下来计算框B、C、D与A的IoU
,假设:
- 框A与B的IoU为0.6
- 框A与C的IoU为0.4
- 框A与D的IoU为0.2
假设设定的IoU阈值为0.5
,那么框A与B的重叠度超过了0.5,因此框B会被抑制
,去除。接着再检查框C和框D,继续按照IoU的规则去除冗余框。最终,留下框A、C和D。
NMS的参数:
- 置信度阈值:通常在筛选框时,设定一个
最低的置信度阈值
,低于这个阈值的框会被丢弃。 - IoU阈值:设定IoU的阈值,用来判断两个框是否属于同一个物体。当IoU超过这个阈值时,较低得分的框会被抑制。
为什么需要NMS?
在目标检测中,由于候选区域生成算法
(如选择性搜索)和目标检测算法
(如Faster R-CNN)都会 生成多个框,这些框可能是不同的区域,但是它们可能代表同一个物体。NMS通过抑制冗余的重叠框,保留最有可能代表目标的框,减少重复检测的结果。
总结:
非极大值抑制(NMS) 是一种用于去除重复框
的算法,它根据框的置信度和重叠度(IoU)筛选最合适的边界框,以提高目标检测的精度和效率。在目标检测任务中,NMS能够有效地避免多次检测到同一个物体
。