YOLO中的NMS

转载 发布者:WaitFoF 发表于:2021-12-16

YOLO中的NMS

对于每一个种类的概率,比如Dog,我们将所有98个框按照预测概率从高到低排序(为方便计算,排序前可以剔除极小概率的框,也就是把它们的概率置为0),然后通过非极大抑制NMS方法,继续剔除多余的框:

NMS方法在这里如何运行呢?

1)首先因为经过了排序,所以第一个框是概率最大的框(下图橘色)。然后继续扫描下一个框跟第一个框,判断是否IOU大于0.5:

  • 如果IOU大于0.5,那么第二个框是多余的,将它剔除:
  • 继续扫描到第三个框,它与最大概率框的IOU小于0.5,保留:
  • 继续扫描到第四个框,同理需要保留:
  • 继续扫描后面的框,直到所有框都与第一个框比较完毕。

2)接下来,以次大概率的框(因为一开始排序过,它在顺序上也一定是保留框中最靠近上一轮的基础框的)为基础,将它后面的其它框与之比较。。

  • 即第三个bb15与其后面的bbox进行IoU比较,重复上面1)的比较步骤
    =

  • 若IOU大于0.5,所以可以剔除第4个框:

3)重复步骤2),每一个非0的bbox与其后面的bbox进行比较,直到只剩最后一个非0的bbox,结束。

假设上面的bbox对于Dog类别经历了所有的扫描之后,只留下了两个框:

这时候,或许会有疑问:明显留下来的蓝色框,并非Dog,为什么要留下?因为对计算机来说,图片可能出现两只Dog,保留概率不为0的框是安全的。不过的确后续设置了一定的阈值(比如0.3)来删除掉概率太低的框,这里的蓝色框在最后并没有保留,因为它在20种类别里要么因为IOU不够而被删除,要么因为最后阈值不够而被剔除。

4)上面描述了对Dog种类进行的框选择。接下来,继续对其它19种类别分别进行上面的操作。

即每一行都组成一个集合进行上述1)、2)、3)的操作。

==5)最后进行纵向跨类的比较(为什么?因为上面就算保留了橘色框为最大概率的Dog框,但该框可能在Cat的类别也为概率最大且比Dog的概率更大,那么我们最终要判断该框为Cat而不是Dog)。判定流程和法则如下:

注意:

NMS是对所有的类别分别执行的。
举个栗子,假设最后预测出的矩形框有2类(分别为cup, pen),在NMS之前,每个类别可能都会有不只一个bbx被预测出来,这个时候我们需要对这两个类别分别执行一次NMS过程。

相关标签:# 传统目标检测机器学习NMS目标检测# 相关知识
声明:本文来自用户分享或转自网络,版权属于原作者,内容中的观点不代表编程技术网的观点。文章内容如有侵权,请联系管理员(QQ:3106529134)删除,本站将在一月内处理。
来源:aHR0cHM6Ly93YWl0Zm9mLmJsb2cuY3Nkbi5uZXQvYXJ0aWNsZS9kZXRhaWxzLzEyMTk4MzAxMg==