上QQ阅读APP看书,第一时间看更新
第1章 双阶段检测
1.1.5 NMS
NMS一般用于在检测任务的后处理中过滤多余的检测框。当我们执行一个检测任务时,不可避免地会出现大量且重复的检测框以及它们的分类得分。因为一个目标只有一个检测框,所以这些检测结果存在很大的冗余,需要对其进行过滤。常见的对检测框进行过滤的方案有两个:一个是提高分类得分的阈值,以减少输出的检测框;另一个是根据分类得分和检测框之间的IoU来过滤,也就是这里要介绍的NMS(见图1.4)。
图1.4 NMS示意
NMS的计算有如下几步:
(1)将所有的检测框按照分类得分进行分类,根据类别(PASCAL VOC是20类非背景类别)将检测框分成若干个列表;
(2)在每个列表内部,根据分类得分进行降序排序;
(3)从每个列表中的得分最高的检测框(即bbox1)开始,计算其他检测框(即bboxk)与得分最高的检测框之间的IoU,如果IoU大于阈值,则剔除bboxk,并将bbox1从列表中取出;
(4)从去掉bbox1的列表中再选取得分最高的检测框,重复步骤(3)的操作,直到该列表中所有检测框都被筛选完毕。