soft nms

一.动机

非最大抑制(Non-maximum suppression, NMS)是物体检测流程中重要的组成部分(如下图划线部分)。NMS算法首先按照得分从高到低对建议框进行排序,然后分数最高的检测框M被选中,其他框与被选中建议框有明显重叠的框被抑制。该过程被不断递归的应用于其余检测框。根据算法的设计,如果一个物体处于预设的重叠阈值之内,可能会导致检测不到该待检测物体。即当两个目标框接近时,分数更低的框就会因为与之重叠面积过大而被删掉。

例如在Fiugre1中,检测算法本来应该输出两个框,但是传统的NMS算法可能会把score较低的绿框过滤掉(如果绿框和红框的IOU大于设定的阈值就会被过滤掉),导致只检测出一个object(一个马),显然这样object的recall就比较低了。

                                                这里写图片描述

 二.soft nms的优势

可以看出NMS算法是略显粗暴(hard),因为NMS直接将和得分最大的box的IOU大于某个阈值的box的得分置零,那么有没有soft一点的方法呢?这就是本文提出Soft NMS。那么Soft-NMS算法到底是什么样呢?简单讲就是:An algorithm which decays the detection scores of all other objects as a continuous function of their overlap with M. 换句话说就是用稍低一点的分数来代替原有的分数,而不是直接置零。另外由于Soft NMS可以很方便地引入到object detection算法中,不需要重新训练原有的模型,因此这是该算法的一大优点。

  • 它仅需要对传统的NMS算法进行简单的改动且不增额外的参数。该Soft-NMS算法在标准数据集PASCAL VOC2007(较R-FCN和Faster-RCNN提升1.7%)和MS-COCO(较R-FCN提升1.3%,较Faster-RCNN提升1.1%)上均有提升。
  • Soft-NMS具有与传统NMS相同的算法复杂度,使用高效。
  • Soft-NMS不需要额外的训练,并易于实现,它可以轻松的被集成到任何物体检测流程中。

三.soft nms实现

Figure2是Soft NMS算法的伪代码。首先是关于三个输入B、S、Nt,在FIgure2中已经介绍很清楚了。D集合用来放最终的box,在boxes集合B非空的前提下,搜索score集合S中数值最大的数,假设其下标为m,那么bm(也是M)就是对应的box。然后将M和D集合合并,并从B集合中去除M。再循环集合B中的每个box,这个时候就有差别了,如果是传统的NMS操作,那么当B中的box bi和M的IOU值大于阈值Nt,那么就从B和S中去除该box;如果是Soft NMS,则对于B中的box bi也是先计算其和M的IOU,然后该IOU值作为函数f()的输入,最后和box bi的score si相乘作为最后该box bi的score。就是这么简单!        

 综上,soft-nms的核心就是降低置信度。比如一张人脸上有3个重叠的bounding box, 置信度分别为0.9, 0.7, 0.85 。选择得分最高的建议框,经过第一次处理过后,得分变成了0.9, 065, 0.55(此时将得分最高的保存在D中)。这时候再选择第二个bounding box作为得分最高的,处理后置信度分别为0.65, 0.45(这时候3个框也都还在),最后选择第三个,处理后得分不改变。最终经过soft-nms抑制后的三个框的置信度分别为0.9, 0.65, 0.45。最后设置阈值,将得分si小于阈值的去掉。

四.Soft-NMS与NMS检测实例对比

                  

假如还检测出了3号框,而我们的最终目标是检测出1号和2号框,并且剔除3号框,原始的nms只会检测出一个1号框并剔除2号框和3号框,而softnms算法可以对1、2、3号检测狂进行置信度排序,可以知道这三个框的置信度从大到小的顺序依次为:1-》2-》3(由于是使用了惩罚,IoU越大,得分越低,所有可以获得这种大小关系),如果我们再选择了合适的置信度阈值,就可以保留1号和2号,同时剔除3号,实现我们的功能。

但是,这里也有一个问题就是置信度的阈值如何选择,作者在这里依然使用手工设置的值,依然存在很大的局限性,所以该算法依然存在改进的空间。

五.f(iou(M,bi))权重函数的形式

原来的NMS可以描述如下:将IoU大于阈值的窗口的得分全部置为0。

                                                      

Soft-NMS的改进有两种形式,一种是线性加权的,这是不连续的:

                                             

一种是高斯加权的,这是连续的:

                                                        

这个式子满足了:A continuous penalty function should have no penalty when there is no overlap and very high penalty at a high overlap,即为当没有重叠时,连续惩罚函数应该没有惩罚,而在高重叠时,惩罚函数很高。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值