新闻资讯

新闻资讯 行业动态

为什么要用NMS(非最大值抑制)?

编辑:008     时间:2020-02-11
现在我们学到的算法中可能存在对一个物体做出多次检测。所以算法不是对某个对象检测出一次,而是多次。

假设你需要在这张图片里检测行人和汽车,你可能会在上面放个 19×19 网格,理论上这辆车只有一个中点,所以它应该只被分配到一个格子里,左边的车子也只有一个中点,所以理论上应该只有一个格子做出有车的预测。
但是实践中,当你运行对象分类和定位算法时,每个格子都会运行一次,每个格子都可能认为这辆车的中点在格子内部。因此会产生很多预测框。

我们现在对于一个对象只需保留一个检测框即可,其余框通过非最大值抑制(NMS)来剔除。

NMS原理
我们首先提出得分小于阈值的框,然后把这么多重叠的框按照分类分数排一个序,选出得分最大的那一个框,然后根据设定的IoU阈值,刚刚用选择的框与其余框取交并比,大于阈值的框抛弃,然后在剩下的框中再选择一个最大得分框,剩下的一些继续做非极大抑制,直到全部处理完,最后留下的既是分类分数高的,又是框比较合适的窗口。


NMS在目标检测中应用的简单思路
1.我们把要找的目标先训练好一个分类器,比如上面的狗,人,骑车,马,训练一个4分类器。比如用SVM或者CNN训练一个分类器,输入一个固定大小图片,输出类别概率。
2.(滑动窗口法)用很多不同大小的窗口进行移动,把图片分成很多个小窗口,然后把每个窗口喂给分类器,如果给出较高的分类分数,那就说明这个窗口有物体,那就留着,这样处理完所有窗口。
(anchor box法)每个grid cell预测出指定尺度的anchor box,每个窗口喂给分类器,如果给出较高的分类分数,那就说明这个窗口有物体,那就留着,这样处理完所有窗口。
3.处理完的窗口当然会有很多重叠的啦,我们当然希望处理一些比较像我们标注的窗口啦,然后我们就使用 非极大抑制,留下合适的框,丢弃其他的框。
4.得到各种窗口和对应的类别,此时可以拿标注的数据框来进行回归,让窗口更加精确点,当然不回归也可以,可能不是很精确啦。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐