NMS概述
NMS(non maximum suppression)是目标检测框架中的后处理模块,主要用于删除高度冗余的 bboxes,在一定区域内只保留属于同一种类别得分最大的框。
如下图,前面的网络可以给每个检测框一个score,score越大,说明检测框越接近真实值。
现在要去掉多余的检测框,分别在局部选出score最大框,然后去掉和这个框IOU>阈值的框。
NMS的算法流程
如上图所示,NMS的处理流程如下:
如果把上述的IOU阈值设为0.7,则处理结果如下图。可以发现,阈值如果太高,会造成重复的检测。
NMS的局限性
论文:《A Convnet for Non-maximum Suppression》
ConvNMS概述
其主要考虑IoU阈值设定得高一些,则可能抑制得不够充分,而将IoU阈值设定得低一些,又可能多个ture positive被merge到一起。其设计一个卷积网络组合具有不同overlap阈值的greedyNMS结果,通过学习的方法来获得最佳的输出。基础框架如下:
通过网络学习来获得一种泛化性能,是一种不错的思路,但是对于不同的场景要能起到作用应该需要重新训练及调参
论文:《Improving Object Detection With One Line of Code》
代码:soft-nms
Soft-NMS概述
nms的局限性 :对于IOU>阈值的两个相邻的检测框,传统的NMS的做法是将其得分暴力置零,相当于直接舍弃。这样的做饭很有可能造成漏检,尤其在遮挡的场景下。
如上图,传统的NMS会把被遮挡的马的检测框删除。
Soft-NMS的思想:
对于与最高分框的IOU大于阈值的框M,我们不把他直接去掉,而是将他的置信度降低(添加惩罚项来抑制,IOU越大,抑制的程度也越大),这样的方法可以使多一些框被保留下来,从而一定程度上避免遮挡的情况出现。
如果只是把置信度降低,那么是不是原来周围的多个表示同一个物体的框也没办法去掉了?
Soft-NMS这样来解决这个问题,同一个物体周围的框有很多,每次选择分数最高的框,抑制其周围的框,与分数最高的框的IoU越大,抑制的程度越大,一般来说,表示同一个物体的框(比如都是前面的马)的IoU是会比另一个物体的框(比如后面的马)的IoU大,因此,这样就会将其他物体的框保留下来,而同一个物体的框被去掉。
Soft-nms算法
如下图所示,红色的部分表示原始的NMS算法,绿色的部分表示Soft-NMS算法,区别在于,绿色的框只是把si
降低了,而不是把bi
直接去掉,极端情况下,如果f
只返回0,那么等同于普通的NMS。
f
函数: 降低目标框的置信度,如果bi
和M
的IOU越大,f(iou(M,bi))
就越小。
两种惩罚函数:
论文:《Inception Single Shot MultiBox Detector for object detection》
代码:Weighted-Boxes-Fusion
Weighted-NMS
论文:《Acquisition of Localization Confidence for Accurate Object Detection》
代码:vacancy/PreciseRoIPooling
IOU-Guided NMS概述
分类准确率和定位准确率的误匹配;
黄色:Groud-truth 绿色:位置置信度高 红色:分类置信度高
下图为IoU与分类置信度,定位置信度的相关性示意图。可以看出,IoU与定位置信度高度相关(0.617),而与分类置信度几乎无关(0.217)。
IOU-Guided NMS的算法流程
旷视 IOU-Net 论文提出了 IoU-Guided NMS,即一个预测框与真实框 IoU 的预测分支来 学习定位置信度,进而使用定位置信度来引导 NMS 的学习。具体来说,就是使用定位置信度
作为 NMS 的筛选依据,每次迭代挑选出最大定位置信度的框 M M M ,然后将IoU>=NMS 阈值的相邻框剔除,但把冗余框及其自身的最大分类得分
直接赋予 M M M 。因此,最终输出的框必定是同时具有最大分类得分与最大定位置信度的框
。
伪代码如下:
论文:《Learning Non-Maximum Suppression》
Pure NMS Network概述
考虑目标间具有高遮挡的密集场景,其提出一个新的网络架构来执行NMS。经分析,检测器对于每个目标仅产生一个检测结果有两个关键点是必要的,一是一个loss惩罚double detections以告诉检测器我们对于每个目标仅需一个检测结果,二是相邻检测结果的joint processing以使得检测器具有必要的信息来分辨一个目标是否被多次检测。论文提出Gnet,其为第一个“pure”NMS网络。Gnet图示如下:
《Bounding Box Regression with Uncertainty for Accurate Object Detection》
Softer NMS概述
提出背景
NMS 默认置信度分数较高的框,定位更精确,由于分类和回归任务没有直接相关性,因此这个条件并不总是成立。
如下图(a)中两个边界框位置都不够精确;(b)中置信度较高的边界框的左边界精确度较低。因此需要一种新的方法来衡量框的位置置信度。
解决方法
从Softer-NMS的公式来看,Softer-NMS可以看成是前面三种NMS变体的结合,即:其极大值的选择/设定采用了与类似Weighted NMS(加权平均)的方差加权平均操作,其加权的方式采用了类似Soft NMS的评分惩罚机制(受Soft-NMS启发,离得越近,不确定性越低,会分配更高的权重),最后,它的网络构建思路与IOU-Guided NMS相类似。
与 IOU-Guided NMS 区别 Softer-NMS 与 IOU-Guided NMS 的出发点同样是解决定位与分类置信度之间非正相关的问题
,所采用的思路一样是增加一个定位置信度的预测,但不一样的是 IoU-Guided NMS 采用 IoU 作为定位置信度
而 Softer-NMS 采用坐标方差作为定位置信度
,具体的做法就是通过 K L K L KL 散度来判别两个分布的相似性。
Softer NMS的算法流程
边界框参数化(预测一个分布替代唯一的定位)
;训练时边框回归时采取KL损失;一个新的NMS方法提高定位准确性。
其中,Softer NMS 论文中有两个先验假设:
(1) Bounding box的是高斯分布
(2) ground truth bounding box是狄拉克delta分布(即标准方差为 0 的高斯分布极限)。
当选择了最大分数的b之后,它的新位置根据它自身和邻居框计算。受Soft-NMS启发,离得越近,不确定性越低,会分配更高的权重。新的坐标计算如下:
p i = e − ( 1 − I o U ( b i , b ) ) 2 / σ t x = ∑ i p i x i / σ x , i 2 ∑ i p i / σ x , i 2 subject to IoU ( b i , b ) > 0 \begin{aligned} & p_i=e^{-\left(1-I o U\left(b_i, b\right)\right)^2 / \sigma_t} \\ & x=\frac{\sum_i p_i x_i / \sigma_{x, i}^2}{\sum_i p_i / \sigma_{x, i}^2} \\ & \quad \text { subject to } \operatorname{IoU}\left(b_i, b\right)>0 \end{aligned} pi=e−(1−IoU(bi,b))2/σtx=∑ipi/σx,i2∑ipixi/σx,i2 subject to IoU(bi,b)>0
论文:《Adaptive NMS: Refining Pedestrian Detection in a Crowd》
Adaptive NMS的概述
动态抑制策略
,其中阈值随着目标聚集和相互遮挡(密度)而上升,并在目标单独出现时衰减。并设了一个自网络用于学习密度的分数。Adaptive-NMS的算法流程
对于每个目标的密度,定义如下:
d i : = max b j ∈ G , i ≠ j iou ( b i , b j ) d_i:=\max _{b_j \in \mathcal{G}, i \neq j} \operatorname{iou}\left(b_i, b_j\right) di:=bj∈G,i=jmaxiou(bi,bj)
依据这个定义,则更新策略为:
N M : = max ( N t , d M ) s i = { s i , iou ( M , b i ) < N M s i f ( iou ( M , b i ) ) , iou ( M , b i ) ≥ N M \begin{gathered} N_{\mathcal{M}}:=\max \left(N_t, d_{\mathcal{M}}\right) \\ s_i= \begin{cases}s_i, & \operatorname{iou}\left(\mathcal{M}, b_i\right)
其中 N M N_M NM 表示 M M M 的Adaptive NMS 阈值, d M d M dM 是目标 M M M 覆盖的密度。
可以看出,这个抑制措施具有三个属性:
文中将密度估计看作一个回归问题,使用如下的三层的卷积子网络进行预测,采用Smooth L1 损失。
因为检测器的输出特征只包含目标本身的信息,也就是语义特征和位置,难以直接进行目标密度的预测,因为密度信息除了需要目标本身的特征图外,还需要周围目标的信息。论文首先使用11卷积层降维,然后concatenate降维后的特征与objectness和bounding boxes,作为Density-subnet的输入。而且,在最后一层应用55的大卷积核将周围的信息考虑进去。
如下,是Adaptive NMS的伪代码,与基本NMS算法相比仅替换了阈值。
论文:《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》
代码:DIOU
DIOU-NMS概述
NMS在DIoUloss一文中提出,在nms过程中采用DIoU的计算方式替换了IoU,由于DIoU的计算考虑到了两框中心点位置的信息,故使用DIoU进行评判的nms效果更符合实际,效果更优。
s i = { s i , IoU − R DIoU ( M , B i ) < ε 0 , IoU − R DIoU ( M , B i ) ≥ ε s_i= \begin{cases}s_i, & \text { IoU }-R_{\text {DIoU }}\left(M, B_i\right)<\varepsilon \\ 0, & \text { IoU }-R_{\text {DIoU }}\left(M, B_i\right) \geq \varepsilon\end{cases} si={si,0, IoU −RDIoU (M,Bi)<ε IoU −RDIoU (M,Bi)≥ε
论文:《Enhancing Geometric Factors in Model Learning and Inference for Object Detection and Instance Segmentation》
代码:CIoU
Cluster NMS的概述
研究者主要旨在弥补Fast NMS的性能下降,期望也利用pytorch的GPU矩阵运算进行NMS
,但同时又使得性能保持与Traditional NMS相同,此外作者在这其中加入了很多其他的操作,如得分惩罚机制(SPM),加中心点距离(DIOU),框的加权平均法(Weighted NMS)
根据是否需要训练分类
不需要训练的NMS方法(NMS、Soft-NMS、Weighted-NMS、Cluster-NMS)
需要训练的NMS(ConvNMS、PureNMS、 IOU-GuidedNMS、AdaptiveNMS)
根据改进策略进行分类
带权重的NMS(Soft NMS, Softer NMS,Weighted NMS)
考虑定位的NMS(IOU-Guided NMS)
阈值自适应的NMS(Adaptive NMS)
并行的NMS(Fast NMS, Cluster NMS)