Non-Maximum Suppression 非极大值抑制
NMS目的:
在检测任务中,一个目标很有可能预测出多个bbox,我们需要剔除不适合的,只留下最好的。这就是NMS的目的。
NMS处理之后
NMS过程:
在目标检测中,很可能需要预测很多类。拿预测人类的特征图来举例,他可能出现很多的bbox,每个bbox网络都会有它是人类框的置信度,我们选出其中置信度最大的一个bbox,然后比较其它的框与它的IoU大小,我们设定一个阈值(threshold),把与最好框的IoU超过阈值的bbox去除。这些超过阈值的bbox与最好的框的重叠程度过大,表明很有可能标定的是同一个物体。
提问:为什么不直接选择最好(置信度最高)的框呢?把其它置信度低的都去掉就好了呀。
因为与最好bbox的IoU低于阈值的框,很可能预测的不是同一个人,不应该去除它。
普通NMS存在的两个问题:
1)图片上存在稀疏不同的两组物体:
例如一张图片,一边有一群人,都站在一起(贴得足够近),而另一边只有一个人。
那么如果我们把threshold设高,则很有可能一群人那边只有一两个离得较远的人被框住了。因为当两个人站得很近得时候,它们得框也会很近,即IoU很大,很有可能超过阈值,被NMS除去了:
那如果我们把threshold设低一点以避免这个问题的话,则又会出现右边的人有多个bbox的情况,因为threshold过低,无法得到有效抑制:
2)一些特殊的问题,例如动物存在长长的尾巴:
如上图,这只猫有两个预测的bbox,很明显,蓝色框的置信度会更大,因为红色框的尾巴这一块有太多的背景。NMS会除去红色框,但是就我们希望的角度看,我们肯定是希望留下红色框的,因为尾巴也是猫的一部分对吧?
以上是普通的NMS存在的两个问题,这些问题都有很多的论文进行讨论和解决,提出了NMS的很多进阶版,融合NMS等等,接下来我也会跟进学习!