系列文章目录
IOU 系列:IOU,GIOU,DIOU,CIOU
文章目录
- 系列文章目录
- 一、NMS简介
- (一)为什么要使用NMS
- (二)NMS的算法流程
- (三)NMS的置信度重置函数
- (四)NMS的局限性
- (五)改进思路
- 二、Soft-NMS概述
- (一)Soft-NMS的思想
- (二)Soft-NMS的置信度重置函数
- 三、softer NMS
- (一)提出背景
- (二)softer NMS的核心思想
- (三)softer NMS的算法流程
- 1、先验假设
- 2、KL 损失
- 3、网络架构
- 4、算法步骤
- 四、Weighted-NMS
- (一)提出背景
- (二)Weighted-NMs思想
- 五、IOU-Guided NMS
- (一)lOU-Guided NMs的思路
- (二)lOU-Guided NMs的算法流程
- 六、DIOU-NMS
- 七、 Adaptive NMS
- (一)Adaptive NMS的提出背景
- (二)Adaptive-NMS的思想
- (三)Adaptive-NMS的算法流程
- (四)Adaptive-NMS的网络结构
- 八、NMS系列总结
- (一)根据是否需要训练分类
- (二)根据改进策略进行分类
一、NMS简介
(一)为什么要使用NMS
非极大抑制的功能:筛选出一定区域内属于同一种类得分最大的框
大多数目标检测算法(稠密预测)在得到最终的预测结果时,特征图的每个位置都会输出多个检测结果,整个特征图上会出很多个重叠的框。例如要检测一辆车,可能会有多个bbox都把这辆车给框了出来,因此需要从这些bbox中选出框得最好的,删除掉其它的。要定义框得好与不好,就得看bbox的预测置信度;为了删掉重叠的多余的框,就得利用IoU来检查重叠程度。
(二)NMS的算法流程
每轮选取置信度最大的 Bounding Box ,接着关注所有剩下的 BBox 中与选取的 BBox 有着高重叠(IoU)的,它们将在这一轮被抑制。这一轮选取的 BBox 会被保留输出,且不会在下一轮出现。接着开始下一轮,重复上述过程:选取置信度最大 BBox ,抑制高 IoU BBox。
(三)NMS的置信度重置函数
对于IOU>阈值的两个相邻的检测框,NMS将其得分暴力置零,相当于直接舍弃。
(四)NMS的局限性
- 循环步骤,GPU难以并行处理,运算效率低
- 以分类置信度为优先衡量指标分类置信度高的定位不一定最准,降低了模型的定位准确度
- 直接提高阈值暴力去除bbox 将得分较低的边框强制性地去掉,如果物体出现较为密集时,本身属于两个物体的边框,其中得分较低的框就很有可能被抑制掉,从而降低了模型的召回率,且阈值设定完全依赖自身经验。
(五)改进思路
-
根据手动设置阈值的缺陷,通过自适应的方法在目标系数时使用小阈值,目标稠密时使用大阈值。例如Adaptive NMS。
-
将低于阈值的直接置为0的做法太hard,通过将其根据IoU大小来进行惩罚衰减,则变得更加soft。例如Soft NMS,Softer NMS。
-
只能在CPU上运行,速度太慢的改进思路有三个,一个是设计在GPU上的NMS,如CUDA NMS,一个是设计更快的NMS,如Fast NMS,最后一个是掀桌子,设计一个神经网络来实现NMS,如ConvNMS。
-
IoU的做法存在一定缺陷,改进思路是将目标尺度、距离引进IoU的考虑中。如DIoU。
二、Soft-NMS概述
nms的局限性:对于IOU>阈值的两个相邻的检测框,传统的NMS的做法是将其得分暴力置零相当于直接舍弃。这样的做法很有可能造成漏检,尤其在遮挡的场景下。
(一)Soft-NMS的思想
对于与最高分框的IOU大于阈值的框M,我们不把他直接去掉,而是将他的置信度降低(添加惩罚项来抑制,I0U越大,抑制的程度也越大),这样的方法可以使多一些框被保留下来,从而一定程度上避免遮挡的情况出现。
(二)Soft-NMS的置信度重置函数
如果只是把置信度降低,那么是不是原来周围的多个表示同一个物体的框也没办法去掉了? Soft-NMS这样来解决这个问题,同一个物体周围的框有很多,每次选择分数最高的框,抑制其周围的框,与分数最高的框的loU越大,抑制的程度越大,一般来说,表示同一个物体的框(比如都是前面的马)的loU是会比另一个物体的框(比如后面的马)的loU大,因此,这样就会将其他物体的框保留下来,而同一个物体的框被去掉。
Soft-NMS算法的置信度重置函数有两种方式:
-
一种采用线性加权:
-
另一种采用高斯加权:
三、softer NMS
(一)提出背景
NMS 默认置信度分数较高的框,定位更精确,由于分类和回归任务没有直接相关性,因此这个条件并不总是成立。
- 图(a)中两个边界框位置都不够精确;
- 图(b)中置信度较高的边界框的左边界精确度较低。
(二)softer NMS的核心思想
- 针对图(a)中的问题一:提出一种方法根据IoU置信度加权合并多个框优化最终生成框
- 针对图(b)中的问题二:构建一种IoU的置信度,来建模有多大把握认为当前框和GT是重合的
基于上述观察,softer NMS算法设计了一个新的网络结构来对检测框的位置概率分布进行建模,对所有框不仅预测位置坐标,还预测位置方差。对于重叠的检测框,根据重叠程度和位置不确定性进行投票,重叠程度高,位置分布方差小的检测框权重大,从而获得更精确的检测框。该文还提出了一种新的包围框回归的损失函数(KL Loss),用来同时学习包围框变换和定位置信度。
softer NMS的特点:
- 边界框参数化(预测一个分布替代唯一的定位);
- 训练时边框回归时采取KL损失;
- 一个新的NMS方法提高定位准确性。
(三)softer NMS的算法流程
1、先验假设
Softer NMS 论文中有两个先验假设:( x x x表示偏移前的预测框, x e x_e xe表示偏移后的预测框, x g x_g xg表示GT框)
- Bounding box的是高斯分布: P θ ( x ) = 1 2 π σ 2 e ( x − x e ) 2 2 σ 2 P_\theta(x)=\frac{1}{2\pi\sigma^2}e^{\frac{(x-x_e)^2}{2\sigma^2}} Pθ(x)=2πσ21e2σ2(x−xe)2
- ground truth bounding box是狄拉克delta分布(即标准方差为0的高斯分布极限): P D ( z ) = δ ( x − x g ) P_D(z)=\delta(x-x_g) PD(z)=δ(x−xg)
2、KL 损失
然后,考虑到KL散度常用于衡量两个分布之间的差异,作者将最小化包围框预测的高斯分布和ground truth的狄拉克delta分布的KL散度作为文章的KL Loss。直观上解释,KL Loss使得包围框预测呈高斯分布,且与ground truth相近。而将包围框预测的标准差看作置信度。
最终推导后损失函数:
3、网络架构
softer NMS的网络结构图如下,上面是原始fasterRCNN的结构,下面是softer-nms结构,多加了一个sigma预测,也就是box std,而Box的预测其实就是上面公式中的 x e x_e xe。由图中可知,标准差估计与包围框定位都包含在损失函数Lreg中。
4、算法步骤
下图所示为Softer-NMS的实现过程,其实很简单,预测的四个顶点坐标,分别对IoU>Nt的预测加权平均计算,得到新的4个坐标点:
- 蓝色部分是soft-nms,只是降低了S的权值
- 绿色部分表示拿出所有与B的IoU大于Nt的框(用idx表示),然后将所有这些框做一个加权,B[idx]/C[idx]其实是B[idx] * 1/C[idx],后者是置信度,并使用sum做了归一化。
四、Weighted-NMS
(一)提出背景
NMS方法在一组候选框中选择分数最大的框作为最终的目标框。然而,非极大的检测结果保存了特征的最大值,因此忽略非极大的检测检测结果是不合适的。
(二)Weighted-NMs思想
soft NMS是通过抑制机制来改善剔除结果(降低超阈值的得分策略),Weighted NMS(W-NMS)则是从极大值这个方面进行改进。W-NMS认为Traditional NMS每次迭代所选出的最大得分框未必是精确定位的,冗余框也有可能是定位良好的。因此,W-NMS通过分类置信度与IOU来对同类物体所有的边框坐标进行加权平均,并归一化。 其中,加权平均的对象包括M自身以及IoU≥NMS阈值的相邻框。
五、IOU-Guided NMS
(一)lOU-Guided NMs的思路
在一般检测的框架中,增加了一个额外的分支用来预测每个框的定位置信度(该框与GT的loU,下图),然后用预测的loU代替分类置信度作为NMS排序的关键,消除误导性分类置信度引起的抑制失效。
(二)lOU-Guided NMs的算法流程
lOU-Guided NMs的伪代码如下图所示。具体来说,就是使用 定位置信度 作为 NMS 的筛选依据,每次迭代挑选出最大定位置信度的框 M ,然后将loU>=NMS 阈值的相邻框剔除,但把 冗余框及其自身的最大分类得分 直接赋子 M 。因此,最终输出的框必定是 同时具有最大分类得分与最大定位置信度的框。
六、DIOU-NMS
DIOU-NMS在nms过程中采用DloU的计算方式替换了loU,由于DloU的计算考虑到了两框中心点位置的信息,故使用DloU进行评判的nms效果更符合实际,效果更优。
七、 Adaptive NMS
(一)Adaptive NMS的提出背景
使用单一阈值的NMS会面临这种困境:较低的阈值会导致丢失高度重叠的对象(图中蓝框是未检测出来的目标),而较高的阈值会导致更多的误报(红框是检测错误的目标)。这在密集场景下,如行人检测中,会导致较低的准确率。
(二)Adaptive-NMS的思想
Adaptive NMS应用了动态抑制策略,其中阈值随着目标聚集和相互遮挡(密度)而上升,并在目标单独出现时衰减。并设了一个自网络用于学习密度的分数。
- 对于远离M的检测框,它们被误报的可能性较小,因此应该保留它们。
- 对于高度重叠的相邻检测,抑制策略不仅取决于与M的重叠,还取决于M是否位于拥挤区域。如果M位于拥挤的区域,其高度重叠的相邻框很可能是真正的正例,应该分配较轻的惩罚或保留。但是对于稀疏区域中的实例,惩罚应该更高以修剪误报。
(三)Adaptive-NMS的算法流程
对于每个目标的密度,定义如下:
依据这个定义,更新策略为:(其中 N M N_M NM表示 M M M的Adaptive NMS 阈值, d M dM dM 是目标 M M M覆盖的密度。)
可以看出,这个抑制措施具有三个属性:
- 当相邻box远离 M M M时,即 loU ( M , b i ) < N t \operatorname{loU}(\mathrm{M}, \mathrm{bi})<N_t loU(M,bi)<Nt时,他们的分值仍为 s i s_i si;
- 如果M位于拥挤区域, 即 d M > N t \mathrm{dM}>\mathrm{Nt} dM>Nt, 则NMS的阈值为 M M M的密度 d M dM dM。因此,相邻的边框被保留,既然它们非常可能定位到M周围的其他目标;
- 如果目标在稀疏区域,即 d M < = N t \mathrm{dM}<=\mathrm{Nt} dM<=Nt,则NMS的阈值为 N t Nt Nt 。
(四)Adaptive-NMS的网络结构
文中将密度估计看作一个回归问题,使用如下的三层的卷积子网络进行预测,采用Smooth L1 损失。
Adaptive NMS的伪代码,与基本NMS算法相比仅替换了阈值。
八、NMS系列总结
(一)根据是否需要训练分类
- 不需要训练的NMS方法(NMS、Soft-NMS、Weighted-NMS、Cluster-NMS)
- 需要训练的NMS(softerNMS、ConvNMS、PureNMS、 IOU-GuidedNMS、AdaptiveNMS)
(二)根据改进策略进行分类
- 带权重的NMS(Soft NMS, Softer NMS,Weighted NMS)
- 考虑定位的NMS(IOU-Guided NMS)
- 阈值自适应的NMS(Adaptive NMS)
- 并行的NMS(Fast NMS, Cluster NMS)
参考:
NMS系列(NMS,Soft-NMS,Weighted-NMS,IOU-Guided NMS,Softer-NMS,Adaptive NMS,DIOU NMS,Cluster NMS)
NMS方法总结(不需要训练的NMS方法&&需要训练的NMS方法)