非最大值抑制(NMS)

为什么要用NMS?

现在我们学到的算法中可能存在对一个物体做出多次检测。所以算法不是对某个对象检测出一次,而是多次。如图:
在这里插入图片描述
假设你需要在这张图片里检测行人和汽车,你可能会在上面放个 19×19 网格,理论上这辆车只有一个中点,所以它应该只被分配到一个格子里,左边的车子也只有一个中点,所以理论上应该只有一个格子做出有车的预测。
但是实践中,当你运行对象分类和定位算法时,每个格子都会运行一次,每个格子都可能认为这辆车的中点在格子内部。因此会产生很多预测框,如图:
在这里插入图片描述
我们现在对于一个对象只需保留一个检测框即可,其余框通过非最大值抑制(NMS)来剔除。

NMS原理

我们首先提出得分小于阈值的框,然后把这么多重叠的框按照分类分数排一个序,选出得分最大的那一个框,然后根据设定的IoU阈值,刚刚用选择的框与其余框取交并比,大于阈值的框抛弃,然后在剩下的框中再选择一个最大得分框,剩下的一些继续做非极大抑制,直到全部处理完,最后留下的既是分类分数高的,又是框比较合适的窗口,过程如下图:
在这里插入图片描述
下图选自Andrew Ng卷积神经网络-非极大值抑制中的伪代码:
在这里插入图片描述

NMS在目标检测中应用的简单思路

1.我们把要找的目标先训练好一个分类器,比如上面的狗,人,骑车,马,训练一个4分类器。比如用SVM或者CNN训练一个分类器,输入一个固定大小图片,输出类别概率。
2.(滑动窗口法)用很多不同大小的窗口进行移动,把图片分成很多个小窗口,然后把每个窗口喂给分类器,如果给出较高的分类分数,那就说明这个窗口有物体,那就留着,这样处理完所有窗口。
anchor box法)每个grid cell预测出指定尺度的anchor box,每个窗口喂给分类器,如果给出较高的分类分数,那就说明这个窗口有物体,那就留着,这样处理完所有窗口。
3.处理完的窗口当然会有很多重叠的啦,我们当然希望处理一些比较像我们标注的窗口啦,然后我们就使用 非极大抑制,留下合适的框,丢弃其他的框。
4.得到各种窗口和对应的类别,此时可以拿标注的数据框来进行回归,让窗口更加精确点,当然不回归也可以,可能不是很精确啦。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值