社区所有版块导航
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算法详解

机器学习初学者 • 1 年前 • 166 次点击  

来源::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
 
166 次点击