【目标检测】NMS算法的理论讲解

将NMS就必须先讲IOU,
在这里插入图片描述
IOU就是交并比,两个检测框的交集除以两个检测框的并集就是IOU

为什么要做NMS操作,因为要去除同一个物体的多的冗余检测框
在这里插入图片描述

那么NMS算法是如何做的呢?
在这里插入图片描述
以上是算法的流程图
下面讲解算法的流程
首先输入是预测框的集合B,置信度分数S,IoU的阈值 τ \tau τ,以及置信度的阈值T
①首先我们创建一个过滤后的检测框的集合F
将这个集合设为空集进行初始化
②根据置信度的阈值过滤已有的预测框,根据我们设置的置信度的阈值T,假设我们现在设置阈值T为0.7,那么现有的置信度小于0.7的检测框就都被排除掉了,剩下的大于0.7的才能入选到预测框的集合B中去。
在这里插入图片描述
比如对于上面这张图,设置置信度阈值为0.7的话,这个左边的置信度为0.3的检测框就不可能作为B集合中的一部分了。
③对于入选B集合的检测框,我们按照置信度分数进行排序,因为如果要保留检测框,肯定是希望保留置信度更高的。
④做一个while循环,只要B集合不为空
⑤从B集合中选择置信度最高的检测框b,放到我们最终需要的返回结果F集合中,b肯定有冗余框,但是不要紧,为什么呢?因为b是置信度分数最高的,就算要删除冗余框,b也是会被保留下来的。
⑥对于B集合中剩下的检测框,我们逐个将其与b做IoU的计算,这个计算结果只要大于IoU的阈值 τ \tau τ,就可以视作是b的冗余检测框,从B中删除
循环重复上面的过程,直至B变为一个空集合

相关推荐

  1. 经典目标检测算法

    2024-03-26 23:26:03       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 23:26:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 23:26:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 23:26:03       87 阅读
  4. Python语言-面向对象

    2024-03-26 23:26:03       96 阅读

热门阅读

  1. 验证回文串

    2024-03-26 23:26:03       40 阅读
  2. 掌握大型语言模型的指南

    2024-03-26 23:26:03       43 阅读
  3. 如何解析Mysql中的binlog日志?

    2024-03-26 23:26:03       38 阅读
  4. Linux 下移植代码到ARM9 芯片需要注意的事项

    2024-03-26 23:26:03       40 阅读
  5. AI大模型学习

    2024-03-26 23:26:03       44 阅读