计算机视觉知识点(一)——交并比(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】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
