Py学习  »  机器学习算法

【深度学习】对象检测网络中的NMS算法详解

机器学习初学者 • 2 月前 • 40 次点击  

来源::OpenCV学堂


01

NMS定义

在一个典型的对象检测管道中,网络会在中间层输出很多候选框proposals(Bounding Box-BB)。在这个阶段输出的BB大多数都会关联同一个检测对象,这个时候需要一个方法来合并这些BB成为一个对象检测框,除了FP之外。Non-maximum-suppression(NMS)通过空间距离结合并交比(IOU)完成聚类划分,对每个cluster只保留得分最高的BB,这种方法中文也被称着-非最大抑制。


02

算法实现


NMS有两种最常见的代码实现方法

- 贪心算法Greedy

- 最优解算法Optimal

两种方法实现的伪代码如下:

Greedy

Optimal

两种算法提供了不同的解决思路:

03

NMS超参数

两个重要的参数是score阈值与overlap阈值,任何低于score阈值的BB将会被拒绝,当两个BB的IOU大于给定的overlap阈值时候,两个检测框将会被聚类分割为同一个对象检测框。Overlap阈值需要平衡精度与抑制效果:



当overlap阈值越大、proposals boxes被压制的就越少,结果就是导致大量的FP(False Positives),进一步导致检测精度下降与丢失(原因在于对象与背景图像之间不平衡比率,导致FP增加数目远高于TP)




当overlap阈值很小的时候,导致proposals boxes被压制的很厉害,导致recall大幅下降。


提升:

使用soft-NMS,在soft-NMS中score被乘以负向IOU,图示如下:



下图是基于soft-NMS实现了对部分重叠对象的成功检测:





    
往期精彩回顾




  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/168038
 
40 次点击