IoU、GIoU、DIoU、CIoU_Replete的博客-程序员秘密

技术标签: 算法  机器学习  计算机视觉  深度学习  人工智能  

IoU就是我们所说的交并比

IoU = \frac{\left| A\cap B \right|}{\left| A\cup B \right|}


作为损失函数会出现的问题(缺点)

  1. 如果两个框没有相交,根据定义,IoU=0,不能反映两者的距离大小(重合度)。同时因为loss=0,没有梯度回传,无法进行学习训练。
  2. IoU无法精确的反映两者的重合度大小。如下图所示,三种情况IoU都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。

022815f7a38d26acaeafae47c411839d.png


GIoU:

先计算两个框的最小闭包区域面积

A_{c}
(通俗理解:同时包含了预测框和真实框的最小框的面积),再计算出IoU,再计算闭包区域中不属于两个框的区域(Ac-U)占闭包区域的比重(U=AUB),最后用IoU减去这个比重得到GIoU。

GIoU = IoU - \frac{\left|  A_{c} - U \right|}{\left| A_{c} \right|}
  • GIoU是IoU的下界,在两个框无限重合的情况下,IoU=GIoU=1
  • IoU取值[0,1],但GIoU有对称区间,取值范围[-1,1]。在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。
  • 与IoU只关注重叠区域不同,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。


GIoU不足:重叠区域相同但方向和距离不同时不能反应到损失函数中。


DIoU

要比GIou更加符合目标框回归的机制,将目标与anchor之间的距离,重叠率以及尺度都考虑进去,使得目标框回归变得更加稳定,不会像IoU和GIoU一样出现训练过程中发散等问题。

0eb5a66b50b76a6f9b05bd6d8bdaf82f.png

其中,

b
b^{gt}分别代表了预测框和真实框的中心点,且
\rho代表的是计算两个中心点间的欧式距离。
c代表的是能够同时包含预测框和真实框的
最小闭包区域的对角线距离。

2e39bc0b8890acf460bbce71bc6120dd.png
  • 与GIoU loss类似,DIoU loss(
    L_{DIoU} = 1-DIoU )在与目标框不重叠时,仍然可以为边界框提供移动方向。
  • DIoU loss可以直接最小化两个目标框的距离,因此比GIoU loss收敛快得多。
  • 对于包含两个框在水平方向和垂直方向上这种情况,DIoU损失可以使回归非常快,而GIoU损失几乎退化为IoU损失。
  • DIoU还可以替换普通的IoU评价策略,应用于NMS中,使得NMS得到的结果更加合理和有效。

CIoU

考虑到bbox回归三要素中的长宽比还没被考虑到计算中,因此,进一步在DIoU的基础上提出了CIoU。其惩罚项如下面公式:

\mathcal{R}_{C I o U}=\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}}+\alpha v 其中
\alpha 是权重函数,


\nu 用来度量长宽比的相似性,定义为
v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{g t}}-\arctan \frac{w}{h}\right)^{2}

完整的 CIoU 损失函数定义:

\mathcal{L}_{C I o U}=1-I o U+\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}}+\alpha v
Error:IoU、GIoU、DIoU、CIoU损失函数的那点事儿

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38906715/article/details/125538299

智能推荐

Java框架SSM的架构_java架构ssm_樊家隆的博客-程序员秘密

Java框架SSM的架构本章为个人项目的记录,仅供产考pom.xml配置web.xml配置springmvc.xml配置db.properties配置本章为个人项目的记录,仅供产考内容包括Spring+ SpringMVC + Mybatispom.xml配置 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent

Kubernetes PVC一直处于Pending状态_pvc一直pending_孤烟。的博客-程序员秘密

1. 问题# pvc一直处于pending状态$ kubectl get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEbzx-claim Pending bzx-sc 3m13s# pods一直处于pending状态$ kubectl get podsNAME

VictoriaMetrics如何运用?_Linux小百科的博客-程序员秘密

上次说到我们不用docker,而是使用containerd作为CRI了。没想到,连监控告警这一块也换了。以前我们使用的prometheus进行监控数据的采集、存储和提供查询,alertmanager进行告警推送,同时使用了grafana做数据展示。那么现在呢,我们选择使用OpenTelemetry和VictoriaMetrics。那么这两者究竟是何方神圣呢?请允许我慢慢道来。考虑到我也是刚接触,所以今天先给大家介绍一下VictoriaMetrics。OpenTelemetry后续再做介绍。 上次说到我们

UmiJS介绍--基本配置(六)_exportstatic_辛木木的博客-程序员秘密

1.plugins类型:Array默认值:[]export default { plugins: [ 'umi-plugin-react', // 插件有参数时为数组,数组的第二项是参数,类似 babel 插件 ['umi-plugin-react', { dva: true, }], ],};2.routes类型:Array默认...

python笔记-4(装饰器、生成器、迭代器)_weixin_30492601的博客-程序员秘密

一、熟练掌握装饰器的原理(在装饰器学习的过程中,查了看了很多资料,个人感觉走了很多的弯路,这个笔记,分享我的理解,希望能帮助到一些人。本文对装饰器的描述,侧重点是条理与逻辑思路,想通过从无到有的方式,描述一个理解的过程,重点在step by step 更快的理解这个东西)需要理解装饰器的两大组成,使用装饰器时能解决不确定长度的形参传递、函数返回值及条件判断的场景。1、使用装饰器的目的及...

华为eNSP最稳定的装法_ensp哪个版本最稳定_士别三日wyx的博客-程序员秘密

最稳定的eNSP 一、VirtualBox二、Wireshark:1、安装2、eNSP中添加工具 三、WinPcap四、Ensp1、安装2、打开使用3、添加镜像 五、镜像及安装包 一、VirtualBox VirtualBox-5.2....

随便推点

QGIS基本功 | 18 坐标参照系_qgis坐标系_QGIS课堂的博客-程序员秘密

在地理空间领域中,所谓坐标系(coordinate system、CS)指的是描述空间位置是表达形式,即采用什么方法来表示空间位置。人们为了描述空间位置, 采用了多 种方法, 从而也产生了不同的坐标系。常用的坐标系分为两种:地理坐标系和投影坐标系,其中地理坐标系属于球面坐标系,投影坐标系属于平面坐标系。01地理坐标系地理坐标系是用于地理学的另一种版本的球坐标系,一般是指由经度、纬度和相对高度组成的坐标系,能够表示地球上的任何一个位置。经度和纬度常合称为经纬度。...

推荐一款强大的开发运维工具FinalShell_闪电7的博客-程序员秘密

FinalShell一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求特色功能:云端同步免费海外服务器远程桌面加速ssh加速本地化命令输入框支持自动补全命令历史自定义命令参数Windows版下载地址: http://www.hostbuf.com/downloads/finalshell_install.exemacOS版下载地址: http://www.hostbuf.com/downloads/finalshell_instal

解决项目中log4j版本漏洞_log4j-over-slf4j漏洞_leejie*.的博客-程序员秘密

解决项目中log4j版本漏洞前言:作为程序员应该都知道最近log4j出现的漏洞问题,讲一讲我所在的公司,其实领导在log4j被爆出存在漏洞的当天就在群里说了这个事,并且让我们把自己负责的系统都检查一遍,有使用到log4j存在漏洞的版本都要进行更新(因为有些版本还没爆出存在安全问题),但是当时都没什么人去注意,结果直到上周末,我们组负责的一个缴费系统出现不能缴费的情况,才发现是中了病毒。然后领导们开始极度重视,专门安排人监督我们来更新log4j版本。废话不多说了,讲一下我负责的系统更新方式:首先,一般

apache spark_为什么我们需要Apache Spark_dfsgwe1231的博客-程序员秘密

apache spark 拥有大量数据,我们需要一种工具来快速消化它 Greg Rakozy在Unsplash上拍摄的照片 数据无处不在。 IDC估计,2013年“数字宇宙”的大小为4.4 ZB(1万亿千兆字节)。目前,数字宇宙每年以40%的速度增长,IDC预计到2020年,其数字将达到44 ZB,相当于物理宇宙中每个恒星的单个数据。 我们有很多数据,但并没有消除任何数据。 我们需要一...

Spring Framework反射型文件下载漏洞(CVE-2020-5421)解决方案_spring-cve_2020_5398_三侠剑的博客-程序员秘密

一、综述近日,VMware Tanzu发布安全公告,公布了一个存在于Spring Framework中的反射型文件下载(Reflected File Download,RFD)漏洞CVE-2020-5421。CVE-2020-5421 可通过jsessionid路径参数,绕过防御RFD攻击的保护。先前针对RFD的防护是为应对 CVE-2015-5211 添加的。攻击者通过向用户发送带有批处理脚本扩展名的URL,使用户下载并执行文件,从而危害用户系统。官方已发布修复了漏洞的新版本。二、影响范围

如何快速自定义 Visual Studio 中部分功能的快捷键_visualtab快捷键在哪设置_walter lv的博客-程序员秘密

Visual Studio 中有些自带的快捷键与现有软件有冲突,那么如何修改这些快捷键让这些功能正常工作起来呢?本文内容打开快捷键设置界面修改一个现有功能的快捷键打开快捷键设置界面在 Visual Studio 中打开 “工具 -> 选项”,打开选项设置界面。在其中找到 “环境 -> 键盘” 项。我们设置快捷键的地方就在这里。修改一个现有功能的快捷键默认情况下,在 Vi...

推荐文章

热门文章

相关标签