目标检测IOU和NMS详解

news2024/9/22 2:08:01

1. 目标检测中两个重要的概念:IOU和NMS

1, 具体来说,它是两边界框相交部分面积与相并部分面积之比,如下所示:

在这里插入图片描述

2.原理

这里详细解释一下计算的原理:
一般来说我们给定框的坐标有两种形式:
[x,y,w,h] (或者说是[x,y,h,w] 原理一样) 其中这里的x,y代表框的中心坐标,w代表宽,h代表高度。那么我们用中心坐标分别加上(减去)w/2和h/2就能把框四个角的坐标求出来。
[x1,y1,x2,y2] x1,y1代表左上角的顶点坐标,x2,y2代表右下角的坐标。也就是把对角的两个坐标给出。两种形式计算IoU的区别不大,以第一种形式为例子:
在这里插入图片描述
我们想要把两个框相交区域的面积(即深蓝色区域)S求出来,那么就要知道这个区域的宽和高,也就是图中的w和h。首先,我们根据给的[x,y,w,h] 坐标框可以把两个框的所有坐标计算出来:
在这里插入图片描述
看上图的两个虚线框,虚线框将两个框的上边线(下边线)框在了一起,要求h,我们只需要看Y轴方向,两条上边线的Y坐标分别是4(篮框)和3(黄框),两者取小即Ymax=3,同理下边线要取大即Ymin=2,很明显:
h=Ymax-Ymin=1,w同理。总结就是上取小下取大,右取小左取大

在这里插入图片描述
在这里插入图片描述

IOU全名为(Intersection over Union),又称为交并比,通常被应用在目前目标检测算法的评价中,IOU值越高,说明算法对目标的预测精度越高,下面本文将以图的方式来解释IOU的定义。
假设A是真实框(人为标记的框),C为预测框(目标检测算法预测的框),B为真实框A和预测框C的交集。
IOU的计算公式为:

在这里插入图片描述
IOU值越大,代表预测框和真实框的重叠面积越大,说明预测框预测的越为精准,此预测框的参数可以更好的代表该目标物在图像中的位置。
在这里插入图片描述
上图中黑框1代表的是人工标记真实框,红框2和黄框3分别是不同目标检测算法确定的预测框,其中预测狂3和真实框1的IOU值大于预测狂2和真实框1的IOU值,说明确定预测框3的目标检测算法较确定预测框2的目标检测算法精度高。
IOU虽然可以用来检测算法性能的好坏,但是其存在一些弊端,如下图,当预测框3太大时,此时框3的IOU和框2的IOU一样大,但是框2和框3所对应的目标检测算法性能却不相同。

在这里插入图片描述

3.IoU计算

下面我来带大家手动计算一下IoU:
在这里插入图片描述

如上图所示,黄色矩形与蓝色矩形相交,他们的顶点A、B、C、D分别是:

A:(0,0) B:(3,2) C:(6,8) D:(9,10)

此时IoU的计算公式应为:
在这里插入图片描述
所以,别看两个矩形相交了不少,但IoU的值其实只有0.23。

在这里插入图片描述

4. NMS

NMS也即非极大值抑制

所谓非极大值抑制:依靠分类器得到多个候选框,以及关于候选框中属于类别的概率值,根据分类器得到的类别分类概率做排序,具体算法流程如下:

(1)将所有框的得分排序,选中最高分及其对应的框
(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。(为什么要删除,是因为超过设定阈值,认为两个框的里面的物体属于同一个类别,比如都属于狗这个类别。我们只需要留下一个类别的可能性框图即可。)
(3)从未处理的框中继续选一个得分最高的,重复上述过程。

举例说明:(1)(2),这里设定交并比>=0.6就删除对比框图,留下最高分的框图;对于低于阈值的框图留下,然后在剩下的框图中排序,选出置信度值高的框图,然后重复交并比比较这个过程。
(1)选出Dog这个框图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
依次类推,最终保留一个置信度最大的值的框.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

区块链技术在溯源领域的应用

区块链技术具有去中心化、不可篡改、可追溯等特点,使其在溯源领域具有广阔的应用前景。具体而言,区块链技术可以应用于以下几个方面。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 产品溯源 产品溯源是指…

JAVA:Filer过滤器+案例:请求IP访问限制和请求返回值修改

JAVA:Filer过滤器 介绍 Java中的Filter也被称为过滤器,它是Servlet技术的一部分,用于在web服务器上拦截请求和响应,以检查或转换其内容。 Filter的urlPatterns可以过滤特定地址http的请求,也可以利用Filter对访问请求…

上位机图像处理和嵌入式模块部署(香橙派AI Pro开发板试用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和工控机相比较,linux嵌入式开发板使用上面方便很多、也容易很多。很多的第三方库都可以通过yum、apt-get这样的方法直接下载到,不需要自己通过源代码重新进行编译、安装。因为自…

PHP萌宠之家微信小程序系统源码

🐾萌宠之家微信小程序🐾 —— 铲屎官们的温馨小窝✨ 🏠【一键开启萌宠乐园】🏠 亲们,是不是每次刷手机都忍不住想看看那些软萌可爱的毛孩子?现在,有了“萌宠之家”微信小程序,你的…

进程与线程(二)线程相关

目录 一. 基本概念二. 线程与进程的比较三. 线程的属性四. 线程的状态与切换五. 线程的组织与控制线程控制块(TCB)线程创建线程终止 六. 线程的实现方式用户级线程(User-Level-Thread,ULT)内核级线程(Kerne…

刷题了:977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

学习记录,主要参考:代码随想录 977.有序数组的平方 题目链接:https://leetcode.cn/problems/remove-element/ 文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html 视频讲解:http…

【go】Excelize处理excel表 带合并单元格、自动换行与固定列宽的文件导出

文章目录 1 简介2 相关需求与实现2.1 导出带单元格合并的excel文件2.2 导出增加自动换行和固定列宽的excel文件 1 简介 之前整理过使用Excelize导出原始excel文件与增加数据校验的excel导出。【go】Excelize处理excel表 带数据校验的文件导出 本文整理使用Excelize导出带单元…

签名优化:请求数据类型不是`application/json`,将只对随机数进行签名计算,例如文件上传接口。

文章目录 I 签名进行请求数据类型类型判断1.1 常见的ContentType1.2 签名切面处理1.3 文件上传案例1.4 处理接口信息背景: 文件上传接口的请求数据类型通常为multipart/form-data,方便携带文本域和使用接口文档进行调试。 如果携带JSON数据,不方便调试接口。 前端数据也要特…

如何学习Hadoop:糙快猛的大数据之路(利用GPT 学习)

目录 引言Hadoop是什么?学习Hadoop的"糙快猛"之道1. 不要追求完美,先动手再说2. 从简单的MapReduce开始3. 利用大模型加速学习4. 循序渐进,建立知识体系 构建您的Hadoop技能树1. 夯实基础:Linux和Java2. 深入理解HDFS3.…

Chromium CI/CD 之Jenkins实用指南2024 - 常见的构建错误(六)

1. 引言 在前一篇《Chromium CI/CD 之 Jenkins - 发送任务到Ubuntu(五)》中,我们详细讲解了如何将Jenkins任务发送到Ubuntu节点执行,并成功验证了文件的传输和回传。这些操作帮助您充分利用远程节点资源,提升了构建和…

收银系统源码-商城下单,门店接单

随着新零售时代的不断进步,线下线上一体化的收银系统,被很多门店越来越重视。用户在线上商城下单后,门店如何接单呢,如何处理订单呢? 1.收银系统开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后合管理网…

【BUG】已解决:note: This is an issue with the package mentioned above,not pip.

已解决:note: This is an issue with the package mentioned above,not pip. 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷…

操作系统发展简史(Unix/Linux 篇 + DOS/Windows 篇)+ Mac 与 Microsoft 之风云争霸

操作系统发展简史(Unix/Linux 篇) 说到操作系统,大家都不会陌生。我们天天都在接触操作系统 —— 用台式机或笔记本电脑,使用的是 windows 和 macOS 系统;用手机、平板电脑,则是 android(安卓&…

1. 个人谈心 ——【如何学习编程及合理安排休息时间】

📖 声明 ! ! ! 此文章仅仅属于个人思想,如有不满或者意见不相同,可以在评论区讨论留言,非常感谢支持!!! 💕个人主页:三亿老奶奶心中的梦 📘收录专栏&#xff…

AI(Adobe lliustrator)教程+软件包

简介: 软件主要应用于印刷出版、海报书籍排版、专业插画、多媒体图像处理和互联网页面的制作等,也可以为线稿提供较高的精度和控制,适合生产任何小型设计到大型的复杂项目。 通常用于创建LOGO(商标或徽标),图标,插图…

Spring-Boot基础--yaml

目录 Spring-Boot配置文件 注意: YAML简介 YAML基础语法 YAML:数据格式 YAML文件读取配置内容 逐个注入 批量注入 ConfigurationProperties 和value的区别 Spring-Boot配置文件 Spring-Boot中不用编写.xml文件,但是spring-Boot中还是存在.prope…

深入理解CSS基础【代码审计实战指南】

文章目录 为什么需要cssCSS语法CSS的组成css注释: 快速入门示例:常用样式字体颜色和边框颜色介绍颜色示例:边框边框的宽度与高度 字体样式背景样式文本居中 字体颜色和边框颜色介绍颜色示例:边框边框的宽度与高度 字体样式背景样式…

了解PHY,MAC芯片

物理层芯片叫做PHY、数据链路层芯片叫做MAC。 1、MCU内置MAC芯片外部PHY芯片 1.1、PHY PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC&am…

拖拽上传(预览图片)

需求 点击上传图片&#xff0c;或直接拖拽图片到红色方框里面也可上传图片&#xff0c;上传后预览图片 效果 实现 <!DOCTYPE html> <html lang"zh-cn"><head><meta charset"UTF-8"><meta name"viewport" content&…

GIT--git clone fatal [文件过大或网络不稳定] [大型仓库]

GIT--git clone fatal 1 介绍1.1 原因分类1.2 文件过大或网络不稳定 2 分析3 操作3.1 指定克隆深度【浅克隆】3.2 分批次下载3.3 增大Git的HTTP POST缓冲区大小3.4 配置git的最低速度和最低速度时间(单位&#xff1a;秒)3.5 压缩3.6 过滤下载 git filter branch3.7 仅克隆一个分…