Yolo算法检测之NMS(非极大值抑制)原理详解

刚开始学习算法的时候,nms非极大值一直学不明白,今天终于搞明白了,大致总结一下。

首先我们简单看一下NMS使用的这个背景

按照yolo目标检测算法的初步思想来说,把图片分成19*19网格之后,理论上这个19*19个网格里面包含汽车一部分的都会检测到汽车的存在,那么带来的问题就是,很多个网格都能检测到汽车如下图所示,显然这并不是我们想要的效果,我们只想一个网格里检测到车(一辆车),图像上两辆车应该是两个网格。

因为我们在检测的时候,可能对一个目标做重复多次检测,这个时候NMS的使用,就是为了删除那些无用的目标检测框,留下一个最佳的目标检测框。

 下面我们介绍NMS的工作思想:

        如上图所示,每个边框都有他的概率,我们选出概率最高的边框进行高亮显示,然后NMS对剩下的矩形进行逐一扫描对比,所有跟这个高亮边框有很高的的交并比,高度重叠的其他预测框都会被抑制。比如右边那个车辆,我们得到0.9的高亮框,因为0.6和0.7的两个高亮框跟0.9的这个IOU最高,因此我们要一直0.6和0.7的这两个高亮框使其变暗。左边汽车的处理方法同。然后经过NMS的处理,我们可以得到如下图所示的效果,即每个车辆身上只有一个预测框。

这就达到了非极大值抑制的效果,所谓非极大值抑制,即只输出概率最大的分类结果。

下面我们来具体分析一下NMS这个有意思的算法:

    一开始,我们需要设定一个阈值为Pc,例如Pc=0.6,我们删除掉所有概率小于0.6的目标边界框,然后对剩下的进行的NMS处理。如上诉。高亮概率最大的进行显示,其他的进行删除。往复如此,一直这样进行循环,直到只剩下一个边界框为止。

     在Yolo程序里面是构造了一个while进行循环不停的处理的,直到只剩下一个边界框,即跳出while。

总结:

      当然上述只是针对一种目标进行检测时候所进行的非极大值抑制,多个目标,假如你是三个目标进行非极大值抑制的时候,你就需要进行三次独立的非极大值抑制,然后作用于输出结果即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馨馨的小翟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值