计算机视觉知识点(一)——交并比(IoU)及其若干改进
交并比(IoU)
- 前言
- IoU
- 公式及示意图
- IoU Loss
- 缺点
- GIoU Loss
- 公式及示意图
- 缺点
- DIoU
- 公式及示意图
- CIoU
前言
目标检测是一个常见的计算机视觉任务,在目标检测任务中,交并比作为评判检测框的标准具有很重要的意义,在实际的应用中,人们又对最初的IoU进行了诸多的改进。本文将对IoU以及他的改进形式的思路以及公式进行详细通俗的介绍。
IoU
IoU是最早的用于评价预测框与实际框差距的标准,并被用于设置关于预测框回归的损失函数,其思路就是计算预测框与实际框相交区域的面积以及相并区域的面积
假设我们是在这样一张图片上进行目标检测
那么我们令蓝框为真实框,绿框为预测框,以这个图片的人脸检测为例介绍IoU
公式及示意图
IoU=T∩PT∪P,其中T为实际框,P为预测框IoU=\frac{T \cap P}{T \cup P},其中T为实际框,P为预测框IoU=T∪PT∩P,其中T为实际框,P为预测框
通俗来看
从直观上讲,就如上图,我们假设蓝框是真实框,绿框为预测框,上下红色阴影部分的面积之比就是IoU
示意图
IoU Loss
IoU越大说明真实框与预测框的重合度越高,即越好,所以我们可以使用IoU重建损失函数,一般有两种方式
IoULoss=1−IoU或IoULoss=−lnIoUIoU \space Loss =1-IoU或IoU\space Loss=-lnIoUIoU Loss=1−IoU或IoU Loss=−lnIoU
缺点
失效情况我们首先来看图
如果真实框与预测框没有重合区域,就会出现这样的情况
这种情况并不是少数,因为在模型训练初期,模型的参数趋近于混乱,所以基本上预测框和乱标的没什么太大差别,如果真实框与预测框没有相重合,拟合会较为困难,因为所有的没有重合的损失值都为1,并且没有指明梯度下降的合理方向。他的问题是只考虑了真实框与预测框的相交情况,并没有考虑框的位置关系
GIoU Loss
公式及示意图
GIoULoss=1−IoU+∣C−T∪P∣∣C∣,其中T为真实框,P为预测框,C为两个框的最小边界GIoU\space Loss=1-IoU+\frac{|C-T \cup P|}{|C|},其中T为真实框,P为预测框,C为两个框的最小边界GIoU Loss=1−IoU+∣C∣∣C−T∪P∣,其中T为真实框,P为预测框,C为两个框的最小边界
如果是上述不相交的情况
此时虽然1-IoU仍然为1,但是加入的一项会使得两个不相交的框距离越远损失越大,这样可以通过新加入的这一项继续进行梯度下降,这里的GIoU Loss可以大于1
缺点
当一个框被另一个框框住的时候,被框住的框无论在哪个位置,得出的GIoU Loss的值都是完全相同的,这种情况下又会影响梯度下降的方向
在这种情况下,绿框在蓝框里面,无论绿框如何移动,只要它还在蓝框内部,他的损失值就不变,显然这也是不利于框的拟合的,为了解决这种情况,可以采用DIoU
DIoU
公式及示意图
DIoULoss=1−IoU+ρ2(cT,cP)d2其中ρ2(cT,cP)是真实框中心(cT)与预测框中心(cP)的欧氏距离d2是两框对角线距离的平方DIoU \space Loss=1-IoU+\frac{\rho^2(cT,cP)}{d^2} \\其中\rho^2(cT,cP)是真实框中心(cT)与预测框中心(cP)的欧氏距离 \\ d^2是两框对角线距离的平方DIoU Loss=1−IoU+d2ρ2(cT,cP)其中ρ2(cT,cP)是真实框中心(cT)与预测框中心(cP)的欧氏距离d2是两框对角线距离的平方
使用DIoU时,不仅可以解决框不相交的问题,又解决了框在内部情况下遇到的问题,此时我们考虑了框的重合度和中心点的距离,还只剩下高宽比这种评价指标。如果深入理解DIoU可以发现在DIoU中,通过IoU和中心距离比的协调,高宽比实际上已经隐含在里边了,不过为了更加容易收敛,仍然可以在多考虑高宽比这一条件并加到损失函数中去
CIoU
这个损失函数画图并不是很好表示,所以只对公式进行讲解,如果理解不了也可以使用DIoU,DIoU也已经达到了很好的效果了
CIoULoss=1−IoU+ρ2(cT,cP)d2+αv其中ρ2(cT,cP)是真实框中心(cT)与预测框中心(cP)的欧氏距离d2是两框对角线距离的平方CIoU \space Loss=1-IoU+\frac{\rho^2(cT,cP)}{d^2}+ \alpha v \\其中\rho^2(cT,cP)是真实框中心(cT)与预测框中心(cP)的欧氏距离 \\ d^2是两框对角线距离的平方CIoU Loss=1−IoU+d2ρ2(cT,cP)+αv其中ρ2(cT,cP)是真实框中心(cT)与预测框中心(cP)的欧氏距离d2是两框对角线距离的平方
v=4π2(arctanwThT−arctanwPhP)2v=\frac{4}{\pi ^2}(arctan\frac{wT}{hT}-arctan\frac{wP}{hP})^2v=π24(arctanhTwT−arctanhPwP)2
α=v1−IoU+v\alpha=\frac{v}{1-IoU}+vα=1−IoUv+v
其中wT,hT是真实框的高宽,wP,hP是预测框的高宽其中wT,hT是真实框的高宽,wP,hP是预测框的高宽其中wT,hT是真实框的高宽,wP,hP是预测框的高宽
相关文章:

计算机视觉知识点(一)——交并比(IoU)及其若干改进
交并比(IoU)前言IoU公式及示意图IoU Loss缺点GIoU Loss公式及示意图缺点DIoU公式及示意图CIoU前言 目标检测是一个常见的计算机视觉任务,在目标检测任务中,交并比作为评判检测框的标准具有很重要的意义,在实际的应用中…...

一篇文章教你从零到一搭建自动化测试框架(附视频教程+源码)
目录 前言 1. 什么是自动化测试框架? 2. 没有万能的测试框架,适合自己项目的,能提高工作效率的就是好框架。 3. 设计框架的思路: 4.如何开展自动化测试 前言 关于测试框架的好处,比如快速回归提高测试效率&#x…...

【备战蓝桥杯】----01背包问题(动态规划)
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...

Golang1.18新特性介绍——泛型
社区长期高呼的泛型特性在Golang 1.18中终于正式发布,Go泛型实现与传统的C有较大差异,更像Rust的泛型实现。本文详细介绍Golang泛型及其特性,包括泛型语法、类型参数、类型约束、类型近似以及constraints包提供内置类型等。 最近写Dao代码&am…...

【SpringBoot17】SpringBoot中使用Quartz管理定时任务
定时任务在系统中用到的地方很多,例如每晚凌晨的数据备份,每小时获取第三方平台的 Token 信息等等,之前我们都是在项目中规定这个定时任务什么时候启动,到时间了便会自己启动,那么我们想要停止这个定时任务的时候&…...

杨辉三角形 (蓝桥杯) JAVA
目录题目描述:暴力破解(四成):二分法破解(满分):题目描述: 下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如…...

AI制药 - AlphaFold Multimer 的 MSA Pairing 源码
目前最新版本是v2.3.1,2023.1.12 AlphaFold multimer v1 于 2021 年 7 月发布,同时发表了一篇描述其方法和结果的论文。AlphaFold multimer v1 使用了与 AlphaFold 单体相同的模型结构和训练方法,但增加了一些特征和损失函数来处理多条链。Al…...

TitanIDE:云原生开发到底强在哪里?
原文作者:行云创新技术总监 邓冰寒 引言 是一种新的软件开发方法,旨在构建更可靠、高效、弹性、安全和可扩展的应用程序。与传统的应用程序开发方式不同,云原生是将开发环境完全搬到云端,构建一站式的云原生开发环境。云原生的开…...

单片机常用完整性校验算法
一、前言 单片机在开发过程中经常会遇到大文件传输,或者大量数据传输,在一些工业环境下,数据传输并不是很稳定,如何检验数据的完整性就是个问题,这里简单介绍一下单片机常用的几种数据完整性校验方法。 二、CheckSum校…...

Anaconda 的安装配置及依赖项的内外网配置
在分享anaconda 的安装配置及使用前,我们必须先明白anaconda是什么;Anaconda是一个开源的Python发行版本。两者区别在于前者是一门编程语言,后者相当于编程语言中的工具包。 由于python自身缺少numpy、matplotlib、scipy、scikit-learn等一系…...

p84 CTF夺旗-PHP弱类型异或取反序列化RCE
数据来源 文章参考 本课重点: 案例1:PHP-相关总结知识点-后期复现案例2:PHP-弱类型对比绕过测试-常考点案例3:PHP-正则preg_match绕过-常考点案例4:PHP-命令执行RCE变异绕过-常考点案例5:PHP-反序列化考题…...

2022财报逆转,有赞穿透迷雾实现突破
2022年,商家经营面临困难。但在一些第三方服务商的帮助下,也有商家取得了逆势增长。 2023年3月23日,有赞发布2022年业绩报告,它帮助许多商家稳住了一整年的经营。2022年,有赞门店SaaS业务的GMV达到425亿元,…...

蓝桥杯 - 求组合数【C(a,b)】+ 卡特兰数
文章目录💬前言885. 求组合数 I C(m,n) 【dp】886 求组合数 II 【数据大小10万级别】 【费马小定理快速幂逆元】887. 求组合数 III 【le18级别】 【卢卡斯定理 逆元 快速幂 】888.求组合数 IV 【没有%p -- 高精度算出准确结果】 【分解质因数 高精度乘法 --只用一…...

膳食真菌在癌症免疫治疗中的作用: 从肠道微生物群的角度
谷禾健康 癌症是一种恶性肿瘤,它可以发生在人体的任何部位,包括肺、乳房、结肠、胃、肝、宫颈等。根据世界卫生组织的数据,全球每年有超过1800万人被诊断出患有癌症,其中约有1000万人死于癌症。癌症已成为全球范围内的主要健康问题…...

怎么将模糊的照片变清晰
怎么将模糊的照片变清晰?珍贵的照片每个人都会有,而遇到珍贵的照片变模糊了,相信会让人很苦恼的。那么有没有办法可以解决呢?答案是有的,我们可以用工具让模糊的照片变得清晰。下面就来分享一些让模糊的照片变清晰的方法,有兴趣…...

【软件测试】基础知识第一篇
文章目录一. 什么是软件测试二. 测试和调试的区别三. 什么是测试用例四. 软件的生命周期五. 软件测试的生命周期一. 什么是软件测试 软件测试就是验证软件产品特性是否满足用户的需求。 那需求又是什么呢?在多数软件公司,会有两种需求,一种…...

【百面成神】java web基础7问,你能坚持到第几问
前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 ☕专栏简介:纯手打总结面试题,自用备用 🌰 文章简介:java web最基础、重要的8道面试题 文章目…...

Centos7安装、各种环境配置和常见bug解决方案,保姆级教程(更新中)
文章目录前言一、Centos7安装二、各种环境配置与安装2.1 安装net-tools(建议)2.2 配置静态网络(建议)2.1 修改Centos7的时间(建议)2.2 Centos7系统编码问题2.3 vim安装(建议)2.4 解决…...

【C++进阶】智能指针
文章目录为什么需要智能指针?内存泄漏什么是内存泄漏,内存泄漏的危害内存泄漏分类(了解)如何避免内存泄漏智能指针的使用及原理smart_ptrauto_ptrunique_ptrshared_ptr线程安全的解决循环引用weak_ptr删除器为什么需要智能指针&am…...

软件测试面试题 —— 整理与解析(3)
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能…...

springboot常用的20个注解
Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成, 而Spring Boot 之所以能够轻松地实现应的创建及与…...

USB组合设备——带鼠标功能的键盘
文章目录带鼠标功能的键盘一个接口实现报告描述符示例多个接口实现复合设备和组合设备配置描述符集合的实现报告的返回附 STM32 枚举日志复合设备:Compound Device 内嵌 Hub 和多个 Function,每个 Function 都相当于一个独立的 USB 外设,有自…...

数据结构与算法基础-学习-18-哈夫曼编码
一、个人理解在远程通讯中,需要把字符转成二进制的字符串进行传输,例如我们需要传输ABCD,我们可以用定长的字符串进行表示,例如:A:00B:01C:02D:03这样可能就造成空间的浪费,我们多存储了一个0号位。那用变长呢…...

ZMC408CE | 实现“8通道独立PSO”应用场景
一、ZMC408SCAN产品亮点 1.高性能处理器,提升运算速度、响应时间和扫描周期等; 2.一维/二维/三维、多通道视觉飞拍,高速高精; 3.位置同步输出PSO,连续轨迹加工中对精密点胶胶量控制和激光能量控制等; 4…...

QuickJS中JS_SetClassProto方法把JavaScript对象指定为某个类的原型对象
在 QuickJS 中,JS_SetClassProto 方法用于设置一个类的原型对象。这个方法的作用是将一个 JavaScript 对象指定为该类的原型对象,从而定义该类的属性和方法。 具体来说,JS_SetClassProto 方法的第一个参数是指向 QuickJS 引擎执行上下文的指…...

泰克信号发生器特点
泰克信号发生器是一种用于产生各种类型的电子信号的仪器,可以广泛应用于电子、通信、自动化、医疗等领域。泰克信号发生器具有以下特点:多种信号类型:泰克信号发生器可以产生多种类型的电子信号,包括正弦波、方波、三角波、脉冲等…...

贯穿设计模式第四话--里氏替换原则
🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…...

6501: 鸡兔同笼
描述 一个笼子里面关了鸡和免子(鸡有两只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。 输入 一个正整数a(a<32768)。 输出 包含两个正整数,第一个是最少的动物数,第二个是最多的…...

Linux项目自动化构建工具-make/makefile 介绍及使用
使用背景 在工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义一系列 规则来指定什么文件需要先编译,什么文件需要后编译,哪些文件需要重新编译,或者更复杂 的功能操作 makefile带来的好处…...

【云原生|Docker】06-dokcerfile详解
目录 前言 Dockerfile基础示例 Dockerfile简介 1. Dockerfile概念 2. Dokcer镜像分层理解 3. Doker build构建原理 Dockerfile参数解析 1. Dokcerfile组成 2. 指令说明 2.1 FROM引入基础镜像 2.2 LABEL 2.3 ENV 2.4 RUN 2.5 COPY 2.6 ADD 2…...