zcc720 / Campare_NMS_And_SoftNMS_cpp

NMS\SoftNMS\两种非极大值抑制算法实现

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Campare_NMS_And_SoftNMS_cpp

(如果您觉得这个项目帮助到您,麻烦给颗星星) (If you think this project helps you, please give a star)

///////////传统的NMS

计算过程

1、根据候选框的类别分类概率做排序,假如有4个 BBox ,其置信度A>B>C>D。

2、先标记最大概率矩形框A是算法要保留的BBox;

3、从最大概率矩形框A开始,分别判断ABC与D的重叠度IOU(两框的交并比)是否大于某个设定的阈值(0.5),假设D与A的重叠度超过阈值,那么就舍弃D;

4、从剩下的矩形框BC中,选择概率最大的B,标记为保留,然后判读C与B的重叠度,扔掉重叠度超过设定阈值的矩形框;

5、一直重复进行,标记完所有要保留下来的矩形框。

NMS缺点:

1、NMS算法中的最大问题就是它将相邻检测框的分数均强制归零(既将重叠部分大于重叠阈值Nt的检测框移除)。在这种情况下,如果一个真实物体在重叠区域出

现,则将导致对该物体的检测失败并降低了算法的平均检测率(average precision, AP)。

2、NMS的阈值也不太容易确定,设置过小会出现误删,设置过高又容易增大误检。

3、NMS一般只能使用CPU计算,无法使用GPU计算。

///////////soft_NMS

softNMS优点:

1、SoftNMS可以很方便地引入到object detection算法中,不需要重新训练原有的模型、代码容易实现,

不增加计算量(计算量相比整个object detection算法可忽略)。并且很容易集成到目前所有使用NMS的目标检测算法。

    2、softNMS在训练中采用传统的NMS方法,仅在推断代码中实现softNMS。作者应该做过对比试验,

     在训练过程中采用softNMS没有显著提高。
 
3、NMS是Soft - NMS特殊形式,当得分重置函数采用二值化函数时,Soft - NMS和NMS是相同的。soft - NMS算法是一种更加通用的非最大抑制算法。

softNMS缺点:

softNMS也是一种贪心算法,并不能保证找到全局最优的检测框分数重置。除了以上这两种分数重置函数,我们也可以考虑开发其他包含更多参数的分数重置函

数,比如Gompertz函数等。但是它们在完成分数重置的过程中增加了额外的参数。

tu1

tu2

About

NMS\SoftNMS\两种非极大值抑制算法实现


Languages

Language:C++ 100.0%