computer vision笔记:non-max suppression

Non-max Suppression即非极大值抑制,可简写为NMS,顾名思义就是抑制不是极大值,可以理解为局部最大搜索。由于在目标检测时,我们的算法可能会对同一个对象做出多次检测。我们的目标就是要去除冗余的检测框,仅保留最好的一个。这时就可以采用非极大值抑制的方法来确保算法对每个对象只检测一次。
如果本文阅读时有不懂之处,可以先看一下computer-vision笔记:anchor-box

References

电子文献:
https://www.cnblogs.com/makefile/p/nms.html


交并比(IoU)

或许在之前你已经看到过这个名词,比如computer-vision笔记:anchor-box。这里就简单介绍一下交并比。
可直接根据字面意思理解,下面直接通过一张图介绍,看完就懂。

实际上,IoU也是存在一定缺陷的,详见computer-vision笔记:IoU与GIoU


非极大值抑制(NMS)

非极大值抑制主要可以分为如下几步:

  1. 抛弃概率很低的预测

    这一步在网上大多数的文章中都没有被提及,但我认为是有必要的。因为有可能会存在着孤立的bounding box,它不会被抑制掉但它的概率很低,而它的内部的确没有框出目标,这是我们不希望的情况。因此非极大值抑制的第一步就是抛弃概率很低的预测,因为它们很有可能不包含任何目标。比如,我们可以抛弃$p_{c}< 0.5$的所有box。
  2. 选取概率最大的box并对其它box进行抑制

    在剩余的一系列box(记为$B$)中,选取概率$p_{c}$(这里是0到1之间的一个数)最大的box,并把它作为最终要输出的一个预测,从$B$中移除。
    同时我们从$B$中移除和刚刚选出的box的IoU达到一定阈值的box,因为它们很有可能在标注同一个目标。比如,我们可以把IoU大于阈值0.4的box都舍去。
  3. 重复直到列表为空

    重复第二步操作,也就是寻找剩余$B$中的下一个概率最大的box,并把它作为输出从$B$中移除,同时用它对它周围的box进行抑制。以此类推,直到$B$中不含未处理的box,即所有的有效预测均已输出。在图片所示的例子中,我们共需要进行两次循环,最终输出两个预测:人和汽车。

可用如下伪代码表示NMS的处理过程。


碰到底线咯 后面没有啦

本文标题:computer vision笔记:non-max suppression

文章作者:高深远

发布时间:2020年01月28日 - 16:24

最后更新:2020年02月13日 - 23:25

原始链接:https://gsy00517.github.io/computer-vision20200128162422/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%