YOLOv1预测阶段后处理----Non-maximum suppression(NMS非极大值抑制)

前言:预了解 

        NMS,去掉冗余的框。在目标检测中,不论是最初的region proposal,还是后来的anchor box,不可避免的一个问题就是对于同一个物体,会预测出多个bounding box,如下左图所示。而NMS所做的就是去除掉多余的bounding box,只保留和ground truth重叠度最高的bounding box,如下右图所示。

        在目标检测中,分类器会给每个bounding box(bb)计算出一个class score,就是这个bb属于每一类的概率,NMS就是根据这些值来进行的,主要流程:

  • 对于每一类,首先把所有score<thresh1的bb的score设为0
  • 之后,将所有的bb按照得分排序,选中最高分及其对应的bb
  • 遍历其余的bb,如果和当前最高分bb的重叠面积(IoU)大于一定的阀值,便将遍历的bb删除
  • 从未处理的bb中继续选择一个最高分的bb,重复上述过程
  • 重复上述过程,直到找到全部保留的bb
  • 然后根据所有保留bb的class score和class color画出最后的预测结果

铺垫:基础知识 

        在YOLOv1论文中,我们知道,网络输出的结果是一个7×7×30的一个张量(向网络输入一张图片的前提下会得到7×7×30的张量,如果输入一个批为batch_size的图像,那么最后输出结果为batch_size×7×7×30的一个张量),在这里,我们以一张图片所得到的结果为例,说明非极大值抑制算法的思路。

        如下图所示,网络输出结果为一个7×7×30的一个张量,7×7表示7×7个grid_cell,我们取出其中的一个grid_cell来看,如下图红框所示的grid_cell,该grid_cell所包含的是一个30维度的向量,该向量的结构为 2×5【4+1】 + 20 ,第一个5表示第一个bounding box的4个位置坐标(x,y,w,h)和一个置信度分数confidence score(物体在这个 bounding box 中的概率),

第二个5表示的是第二个bounding box的信息,后面的20维是该 grid_cell 在包含物体的条件下是哪种类别的概率。

 

        每一个grid_cell要预测C个条件类别概率,即为Pr(Classi | Object)。即在一个grid_cell中包含一个Object的前提下,这个grid_cell属于某个类别的概率,如下图所示。

注意:

条件类别概率针对的是每个grid_cell;置信度分数 confidence score 针对的是每个预测的bounding box。 

        在测试阶段,将每个 grid_cell 的conditional class probabilities 与每个 bounding box的 confidence score 相乘:

        这样即可得到每个bounding box的具体类别的class score。
        这乘积既包含了bounding box中预测的class的 probability信息,也反映了bounding box是否含有Object和bounding box坐标的准确度。

        每一个grid_cell都能够获得两个20维度的全概率向量,49个 grid_cell 则能获得98个20维度的全概率向量。每一个黄色的竖条表示对于每个bounding box而言,它所预测的20个物体类别的概率是多少。

        这98个20维的向量可视化出来的结果就是下图中间部分的上面图。 

         如何从含有98个框的图到最终的只有三个框的目标检测结果图,这就是NMS要做的事情,如下所示。

正题:NMS处理过程 

        我们现在获得了98个竖条,我们以狗这一个类别为例,假设狗是20个类别的第1个类别,则98个竖条的第一个数字是狗的概率,这98个概率中必然会有比较小的,此时我们设置一个阈值thresh(0.2),把所有小于0.2的概率一律抹零,然后按照狗的概率的高低进行排序,将高的放在前面,低的放在后面,然后在对排序后的结果进行NMS算法处理。如下图所示。

        仍然是98个竖条,我们现在只看狗的概率,即看第一行,如下图所示。那么NMS如何进行排序呢?先将最高的拿出来,然后将后面的每一个与最高的作比较。

        比如说我们现在来比较第一高和次高,如果这两个预测框的IoU大于设定的阈值,那么我们就认为这两个预测框重复识别了一个物体,那我们就将低概率的这个预测框删掉,直接将所对应的概率置0即可。

        接下来我们比较最高和第三高,如下图所示,我们发现这两个预测框的IoU没有大于设定的IoU阈值,那么我们就保留这个第三高所对应的蓝框。

        随后,我们将其余的均和第一高进行比对,删除掉大于IoU阈值的框。【注意:在狗这一类别中,经过NMS处理后不一定只剩预测狗这一个预测框,还有可能有其他的预测框存在,但其他类别经过这样处理之后,多余的预测框就会被删掉,此时就可保留预测狗的预测框】

        上述流程是针对狗这一个类别,我们应该对20个类别均执行上述的操作,那么就可以得到最终的目标检测结果,也就是得到最终的三个预测框,如下图所示。

        在对20个类别均经过NMS处理之后,得到的结果是一个稀疏矩阵,肯定会有很多全零向量,即上面的部分黄色竖条所包含的元素是全零元素。如果某个黄色竖条不是全为零的向量,那么我们把不为零所对应的类别拎出来,再将对应的得分拎出来,作为目标检测的结果。

参考:

YOLOv1论文理解-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/458266.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 使用 EasyExcel 实现导入导出(新手篇教程)

官网镇楼↓&#xff0c;觉得我写的不好的同学可以去官网看哦 EasyExcel Maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version> </dependency> Excel 导入 示例&…

6、Design Script之列表

Range 在DesignScript中,Range是从起点到终点的一系列数字,使用指定的步距(间距类型),并有以下的初始化方法: start..end..step; start..end..#amount; start..end..~approximate; Range可以是数字的,也可以是字母的。 字母范围因大小写而异。 开始,结束. .#数量范围(…

【软考高项】六、信息技术发展之计算机网络知识点

1、网络作用划分 个人局域网(PAN)、局域网(LAN)、城域网(MAN)、广域网(WAN)、公用网、专用网。 2、OSI七层 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 3、广域网协议类型 PPP点对点协议、ISDN综合业务数字网、xDSL(DSL数字用户线路的统称:HDSL.SDSL、M…

遗嘱消息(Will Message)介绍与示例 _ MQTT 5.0 特性详解

什么是 MQTT 遗嘱消息&#xff1f; 在现实世界中&#xff0c;一个人可以制定一份遗嘱&#xff0c;声明在他去世后应该如何分配他的财产以及应该采取什么行动。在他去世后&#xff0c;遗嘱执行人会将这份遗嘱公开&#xff0c;并执行遗嘱中的指示。 在 MQTT 中&#xff0c;客户端…

比较不错超声波清洗机有哪些?2024年口碑一绝超声波清洗机推荐

2024年&#xff0c;随着科技的不断进步和消费者需求的日益增长&#xff0c;超声波清洗机在生活中的应用变得越来越广泛。无论是珠宝首饰、眼镜、电子产品还是医疗器械&#xff0c;高效、快速、安全的清洗方式正成为人们追求的目标。超声波清洗机以其独特的清洗方式和卓越的清洗…

让数据在业务间高效流转,镜舟科技与NineData完成产品兼容互认

近日&#xff0c;镜舟科技与NineData完成产品兼容测试。在经过联合测试后&#xff0c;镜舟科技旗下产品与NineData云原生智能数据管理平台完全兼容&#xff0c;整体运行高效稳定。 镜舟科技致力于帮助中国企业构建卓越的数据分析系统&#xff0c;打造独具竞争力的“数据护城河”…

Redis 除了做缓存,还能做什么?

分布式锁&#xff1a;通过 Redis 来做分布式锁是一种比较常见的方式。通常情况下&#xff0c;我们都是基于 Redisson 来实现分布式锁。关于 Redis 实现分布式锁的详细介绍&#xff0c;可以看这篇文章&#xff1a;分布式锁详解open in new window 。限流&#xff1a;一般是通过 …

无GPU搭建开源大模型--LLAMA2

在Grok之前,脸书就开源了LLAMA2的大模型,从第三方数据来看Grok各方面都碾压LLAMA2 但如果是初学AI,llama无疑还是一个很好的突破口,在Grok没有到来之前,就让我们先向LLAMA2开刀。 本次介绍如何在无需GPU参与的情况下,在本地部署llama2,方法来自国外大神:Georgi Gergan…

了解常用开发模型 -- 瀑布模型、螺旋模型、增量与迭代、敏捷开发

目录 瀑布模型 开发流程 开发特征 优缺点 适用场景 螺旋模型 开发流程 开发特征 优缺点 适用场景 增量与迭代开发 什么是增量开发&#xff1f;什么是迭代开发&#xff1f; 敏捷开发 什么是敏捷开发四原则&#xff08;敏捷宣言&#xff09;&#xff1f; 什么是 s…

基于微信小程序的作业管理系统的设计与实现【附项目源码】分享

基于微信小程序的作业管理系统的设计与实现&#xff1a; 源码地址&#xff1a;https://download.csdn.net/download/qq_41810183/88842836 一、引言 随着移动互联网的普及和微信小程序的广泛应用&#xff0c;教育领域也在积极探索如何利用这些新技术提升教学质量和效率。本需…

工具篇--分布式定时任务springBoot--elasticjob简单使用(1)

文章目录 前言一、elasticjob 介绍&#xff1a;二、elasticjob 使用&#xff1a;2.1 部署zookeeper&#xff1a;2.2 引入库2.2 定义任务&#xff1a;2.3 任务执行&#xff1a;2.4 任务执行控制台输出&#xff1a; 三、elasticjob 启动错误&#xff1a;3.1 KeeperErrorCode Ope…

Infineon_TC264智能车代码初探及C语言深度学习(二)

本篇文章记录我在智能车竞赛中&#xff0c;对 Infineon_TC264 这款芯片的底层库函数的学习分析。通过深入地对其库函数进行分析&#xff0c;C语言深入的知识得以再次在编程中呈现和运用。故觉得很有必要在此进行记录分享一下。 目录 ​编辑 一、代码段分析 NO.1 指向结构体…

《恩爱兔》

恩爱兔 类型&#xff1a;休闲跳跃 视角&#xff1a;2d 乐趣点&#xff1a;通过挑战不同的关卡&#xff0c;战胜困难&#xff0c;乐趣无限&#xff0c;运用智慧跳上高台 时间&#xff1a;2019 个人职责&#xff1a; 所有程序部分的设计开发 此游戏是我和朋友独立开发的一款小游戏…

web作业2024.3.15

案例1&#xff1a; 使用CSS行内式为页面元素引入样式。b) 按照CSS样式规则为3号标题设置成微软雅黑、蓝色、26px字体c) 按照CSS样式规则为段落设置成微软雅黑、红色、28px字体。 七步诗 煮豆燃豆萁&#xff0c; 豆在釜中泣。 本是同根生&#xff0c; 相煎何太急。 案例2…

html--bug

文章目录 html html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>老师</title><style>body {background-color: #008000;margin: 0px;cursor: none;overflow: hidden;}</style></head><bod…

自动开箱机的工作原理与未来发展趋势

随着物流行业的迅猛发展&#xff0c;自动化、智能化的设备逐渐成为行业的新宠。其中&#xff0c;自动开箱机以其高效、精准的特点&#xff0c;受到了广泛关注。星派将详细解析自动开箱机的工作原理&#xff0c;并探讨其未来发展趋势&#xff0c;带领读者一同走进这一先进技术的…

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞(2024年3月发布)

漏洞简介 某赛通电子文档安全管理系统 DecryptApplication 接口处任意文件读取漏洞&#xff0c;未经身份验证的攻击者利用此漏洞获取系统内部敏感文件信息&#xff0c;导致系统处于极不安全的状态。 漏洞等级高危影响版本*漏洞类型任意文件读取影响范围>1W 产品简介 …

关系代数-练习

设有一个SPJ数据库&#xff0c;包括4个关系模式S、P、J和 SPJ。 S(SNO, SNAME,STATUS,CITY) ; P(PNO,PNAME,COLOR,WEICHT) ; J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY)。 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商…

MySQL查询学生相关信息

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

OSI(Open Systems Interconnection)模型和TCP/IP模型

OSI模型 OSI模型是一个概念模型&#xff0c;由国际标准化组织&#xff08;ISO&#xff09;在1984年提出&#xff0c;用于促进不同系统间的通信互联。OSI模型将网络通信的过程分为七层&#xff0c;每一层都有其特定的功能&#xff0c;从下至上依次是&#xff1a; 物理层&#x…