社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

机器学习初学者 • 2 年前 • 372 次点击  


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实现了对部分重叠对象的成功检测:

转载自:OpenCV学堂

往期精彩回顾




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