目标检测中的损失函数:IOU_Loss、GIOU_Loss、DIOU_Loss和CIOU_Loss

文章目录

  • 前言
  • 1.IOU_Loss(Intersection over Union Loss)
  • 2.GIOU_Loss(Generalized Intersection over Union Loss)
  • 3.DIOU_Loss(Distance Intersection over Union Loss)
  • 4.CIOU_Loss(Complete Intersection over Union Loss)
  • 总结


前言

之前在项目中存在目标检测框内嵌的情况(目标检测框存在内嵌情况分析与解决),正好趁这个机会记录下目标检测中常用的几种IOU_loss函数。


1.IOU_Loss(Intersection over Union Loss)

IOU_Loss是目标检测任务中广泛使用的损失函数,其主要思想是通过计算预测框和真实框的交并比(IOU)来衡量两个框之间的重叠程度,并将其作为损失进行优化。
在这里插入图片描述

公式
在这里插入图片描述
其中,A为两框交集,B为两框并集;

可以看到IOU_Loss其实很简单,主要是交集/并集,但其实也存在两个问题。
在这里插入图片描述
问题1:即状态1的情况,当预测框和目标框不相交时,IOU=0,无法反应两个框距离的远近,此时损失函数不可导,IOU_Loss无法优化两个框不相交的情况。

问题2:即状态2和状态3的情况,当两个预测框大小相同,两个IOU也相同,IOU_Loss无法区分两者相交情况的不同。

2.GIOU_Loss(Generalized Intersection over Union Loss)

GIOU_Loss是对IOU_Loss的改进,考虑了预测框和真实框之间的边界框面积不同的情况,引入了一个修正因子,使其更加准确。
在这里插入图片描述

公式
GIOU_LOSS=1−IoU+GIoU
GIoU=

其中,B为两框并集,C为能够包围两个框的最小外接矩形框的面积。

可以看到上图GIOU_Loss中,增加了相交尺度的衡量方式,缓解了单纯IOU_Loss时的尴尬。但为什么仅仅说缓解呢?因为还存在一种不足:
在这里插入图片描述
问题:状态1、2、3都是预测框在目标框内部且预测框大小一致的情况,这时预测框和目标框的差集都是相同的,因此这三种状态的GIOU值也都是相同的,这时GIOU退化成了IOU,无法区分相对位置关系。

3.DIOU_Loss(Distance Intersection over Union Loss)

DIOU_Loss在GIOU_Loss的基础上引入了框心点之间的距离,进一步考虑了两个框之间的位置关系,使得损失函数更加全面。
在这里插入图片描述

公式
在这里插入图片描述
其中,Distance_2为两框中心点的欧式距离,Distance_C为最小外接矩形框的对角线距离。

DIOU_Loss考虑了重叠面积中心点距离,当目标框包裹预测框的时候,直接度量2个框的距离,因此DIOU_Loss收敛的更快。

但就像前面好的目标框回归函数所说的,没有考虑到长宽比。
在这里插入图片描述
比如上面三种情况,目标框包裹预测框,本来DIOU_Loss可以起作用。

但预测框的中心点的位置都是一样的,因此按照DIOU_Loss的计算公式,三者的值都是相同的。

4.CIOU_Loss(Complete Intersection over Union Loss)

CIOU_Loss是对DIOU_Loss的进一步改进,考虑了宽高的比率对损失的影响,使得损失函数更具鲁棒性。

公式
在这里插入图片描述

其中, v是衡量长宽比一致性的参数,wg,hg是真实框的宽和高,wp,hp是预测框的宽和高。

这样CIOU_Loss就将目标框回归函数应该考虑三个重要几何因素:重叠面积、中心点距离,长宽比全都考虑进去了。


总结

IOU_Loss作为传统的衡量标准,为我们提供了一个基础,而GIOU_Loss、DIOU_Loss和CIOU_Loss则在其基础上引入了更多的信息,如目标框的形状和相对位置等,从而使得模型更加准确地学习目标的位置和形状。

参考文档:
https://zhuanlan.zhihu.com/p/143747206

如果阅读本文对你有用,欢迎关注点赞留言收藏呀!!!
2023年12月4日20:03:02
在这里插入图片描述

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

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

相关文章

行云创新:与德国汽车业交流Catena-X数据空间技术有感

近日,行云创新CEO马洪喜先生受深圳高新投、Plug&Play邀请参加Catena-X技术研讨交流会,与西门子全球汽车生态系统总监Claus CREMERS,大众汽车全球数字化生产及流程负责人Frank GOELLER,宝马全球数字化政策负责人Sebastian SCHL…

Gensim训练中文词向量实战

引言 实现文本匹配模型时经常需要预训练好的中文词/字向量,今天通过gensim和中文维基百科数据训练一个中文字向量。 安装相关包 首先要安装所需的几个包: zhconv 1.4.3 gensim 4.3.2由于中文维基百科是繁体字,需要用zhconv转换为简体&…

【国际会议】2024年材料科学与机械应用发展国际会议(ICMSMAD 2024)

2024年材料科学与机械应用发展国际会议(ICMSMAD 2024) 2024 International Conference on Materials Science and Mechanical Application Development(ICMSMAD 2024) 一、【会议简介】 ​2024年材料科学与机械应用发展国际会议(ICMSMAD 2024)即将在美丽的中国成都盛大召开。这…

贪心法之柠檬水找零

题目: 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。 你必须给每个顾客正确找零&am…

使用gdb调试正在运行的程序

写一个一秒打印一个数的c程序&#xff0c;并编译运行。 #include<unistd.h> #include<stdio.h> int main(int argc,char **argv){int i0;while(1){sleep(1);i;printf("%d\n",i);}return 0; }vim loop.c gcc loop.c -o loop ./loop 查看该进程的进程号。…

《数据库系统概论》学习笔记——王珊 萨师煊

第一章 绪论 一、数据库系统概述 1.数据库的4个基本概念 &#xff08;1&#xff09;数据 描述事物的符号记录称为数据 &#xff08;2&#xff09;数据库 存放数据的仓库 &#xff08;3&#xff09;数据库管理系统 主要功能&#xff1a; &#xff08;1&#xff09;数据定…

APP逆向工具环境安装

环境安装及配置&#xff1a; 1.JDK安装及配置链接&#xff1a;https://pan.baidu.com/s/146I4vDJdz8YeR0OEqLS8xw 提取码&#xff1a;7h00 2.SDK环境配置链接&#xff1a;https://pan.baidu.com/s/1A8rwqyw8Nn7p93Axqpll3A 提取码&#xff1a;cwv43.NDK环境配置链接&#xff1…

【Spark基础】-- 理解 Spark shuffle

目录 前言 1、什么是 Spark shuffle? 2、Spark 的三种 shuffle 实现 3、参考 前言 以前,Spark 有3种不同类型的 shuffle 实现。每种实现方式都有他们自己的优缺点。在我们理解 Spark shuffle 之前,需要先熟悉 Spark 的 execution model 和一些基础概念,如:MapReduce、…

【问题】C++ libcurl实现PUT时阻塞问题

解决方案 将 curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);换成 curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); 原因 在项目中对方要求使用PUT来发送控制指令&#xff0c;于是直接使用Libcurl来实现。原本是一个非常简单的事情&#xff0c;确怎么都没发…

SpringBoot:SpringMVC(上)

文章目录 前言一、SpringMVC是什么&#xff1f;1.1 MVC的定义&#xff1a;1.2 MVC 和 Spring MVC 的关系 二、Spring MVC 创建和连接2.1创建springmvc2.2接下来&#xff0c;创建⼀个 UserController 类&#xff0c;实现⽤户到 Spring 程序的互联互通&#xff0c;具体实现代码如…

MYSQL练题笔记-聚合函数-即时食物配送

我做完上一道题&#xff0c;决定总结一下了&#xff0c;因为现在还是没有一个我认为好的思路去构造语句&#xff0c;这里开始试一试新的思路。果然想要好一点的时候&#xff0c;总是像便秘一下&#xff0c;真的想拉&#xff0c;但是真的难拉啊 一、题目相关内容 1&#xff09…

科普关于msvcp140.dll文件是什么内容,解决msvcp140.dll丢失的修复方法

在使用电脑时出现了关于msvcp140.dll丢失的问题&#xff0c;这是什么情况&#xff0c;出现这样的问题通常都会导致电脑中的一些软件不能使用&#xff0c;那么都有什么办法能够解决msvcp140.dll丢失的问题呢&#xff1f;今天就给大家科普一些关于msvcp140.dll文件是什么的内容&a…

小程序长按识别二维码

小程序开发中要实现长按识别二维码的功能很简单&#xff0c;只需要在image标签里添加如下属性即可&#xff1a; 小程序版本&#xff1a; show-menu-by-longpress"{{true}}" uniapp版本&#xff1a; :show-menu-by-longpress"true" 举例&#xff1a; …

小红书种草笔记多少钱?给大家揭秘

小红书&#xff0c;一个以生活方式分享为主题的社交电商平台&#xff0c;吸引了众多年轻用户。种草笔记&#xff0c;是指用户在小红书上分享的关于某一产品或服务的使用体验、心得感悟&#xff0c;通过图文并茂的形式&#xff0c;激发其他用户的好奇心和购买欲望&#xff0c;从…

资深老鸟整理,高级测试工程师应具备的能力...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、业务熟悉 熟悉…

在国内Facebook广告怎么解决充值渠道问题?

怎么解决Facebook预充值跑广告营销的付款方式问题呢&#xff1f; Facebook跑广告是很多做出口营销的公司或团队喜欢的平台之一&#xff0c;那就避免不了需要支付给Facebook平台广告费用了&#xff0c;那到底用什么方式去充值到FB号上去解决呢&#xff1f;FB预充值有什么咔可以…

操作系统·设备管理

I/O系统是计算机系统的重要组成部分&#xff0c;是OS中最复杂且与硬件密切相关的部分 I/O系统的基本任务是完成用户提出的I/O请求&#xff0c;提高I/O速率以及改善I/O设备的利用率&#xff0c;方便高层进程对IO设备的使用 I/O系统包括用于实现信息输入、输出和存储功能的设备和…

stm32L071KB单片机字节对齐问题

字节对齐问题由来很关键 字节对齐问题由来 字节对齐问题由来 在移植同事代码的时候发现到一个赋值变量的地方就会出现死机&#xff0c;进入hardfault,怎么也找不不到原因&#xff0c;最后没办法去了github https://github.com/armink/CmBacktrace/blob/master/README_ZH.md Cm…

Git 还原文件修改

文章目录 前言还原文件修改的三种情况情况一&#xff1a;只是修改了文件&#xff0c;没有进行任何Git操作情况二&#xff1a;修改了文件&#xff0c;并提交到暂存区情况三&#xff1a;修改了文件&#xff0c;并提交到仓库区 前言 在使用Git进行文件修改和提交时&#xff0c;有…

Android : ViewModel+LiveData observe观察数据 改变内容简单应用

observe观察数据 改变内容 1.导包 // 使用androidx版本库implementation androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03// 或者&#xff0c;使用support版本库implementation android.arch.lifecycle:extensions:1.1.1 2.继承ViewModel package com.example.myli…