【目标检测中对IoU的改进】GIoU,DIoU,CIoU的详细介绍

文章目录

  • 1、IoU
  • 2、GIoU(Generalized Intersection over Union)
  • 3、DIoU
  • 4、CIoU

1、IoU

  • IoU为交并比,即对于pred和Ground Truth:交集/并集
    在这里插入图片描述

1、IoU可以作为评价指标使用,也可以用于构建IoU loss = 1 - IoU
缺点:
2、对于pred和GT相交的情况下,IoU loss可以被反向传播,因为IoU不为0,可以计算梯度。但是二者不相交的话,梯度将会为0,无法优化。
3、pred和GT不相交时,IoU为0,因此无法判断二者距离是远还是近
在这里插入图片描述
4、IOU不能反映两个物体如何重叠(相交方式)。两种情况下的IOU均为0.14,但(a)中两框要比(b)中的相交更整齐一些。
在这里插入图片描述

2、GIoU(Generalized Intersection over Union)

  • 考虑到上述IoU的缺点,在GIoU中做了改进。
    在这里插入图片描述
  • C是包含A与B的最小框,即两个框的外接矩形框
    在这里插入图片描述

1、GIoU对不相交的情况下,不为0,因此使用GIoU loss = 1 - GIoU可以进行梯度的反向传播
2、GIoU可以反应二者的相交情况,对的更齐时GIoU更大,例如上面的第二幅图
3、GIoU可以更好的反应pred和GT之间的距离情况
在这里插入图片描述

3、DIoU

  • DIoU主要考虑了如下的情况
    在这里插入图片描述
  • 即pred完全在GT内部,IoU和GIoU就相同了,不能判断pred中心位置是否接近GT中心
  • 因此,DIoU Loss是在IoU Loss基础上引入一个距离惩罚项,定义如下:
    在这里插入图片描述
  • 上述损失函数中,b,bgt分别代表了anchor框和目标框的中心点,且$$代表的是计算两个中心点间的欧式距离。c代表的是能够同时覆盖anchor和目标框的最小矩形的对角线距离,相当于做了归一化:d/c,如下图所示。
    在这里插入图片描述

1、与GIoU loss类似,DIoU loss在与目标框不相交时,梯度不为0,可以进行优化。
2、收敛更快:DIoU loss可以直接最小化两个目标框的距离,而GIOU loss优化的是两个目标框之间的面积,因此比GIoU loss收敛快得多。
3、对于包含两个框在水平方向和垂直方向上这种情况,DIoU损失可以使回归非常快,而GIoU损失几乎退化为IoU损失

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

4、CIoU

  • 考虑到pred和GT之间的长宽比也是很重要的,因此CIOU Loss又引入一个box长宽比的惩罚项:
    在这里插入图片描述
    在这里插入图片描述

参考链接:https://blog.csdn.net/leonardohaig/article/details/103394369

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习|DBSCAN 算法的数学原理及代码解析

机器学习|DBSCAN 算法的数学原理及代码解析 引言 聚类是机器学习领域中一项重要的任务,它可以将数据集中相似的样本归为一类。DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种是一种经典的密度聚类…

博客系统之单元测试

对博客系统进行单元测试 1、测试查找已存在的用户 测试名称 selectByUsernameTest01 测试源码 //查找用户,存在 Test public void selectByUsernameTest01 () { UserDao userDao new UserDao(); String ret1 userDao.selectByUsername("张三").toStr…

全开放式耳机什么品牌好?全开放式耳机推荐

​在音乐的世界中,开放式耳机提供了更真实、更通透的音质体验,开放式耳机采用不入耳设计,佩戴更为稳固舒适,还允许外界的声音自由地流入,使你在享受音乐的同时,也能保持对周围环境的感知,户外运…

自动驾驶卡车量产-第一章-用户需求

1、中国干线物流行业现状 万亿级市场,规模巨大。由中重卡承运的干线运输占到整体公路货运市场的82%,全国中重卡保有量约730 万台1,市场规模达4.6 万亿元1,体量全球第一,超过同城物流及乘用出租市场规模之和。同样&…

SpringBoot 的 RedisTemplate、Redisson

一、Jedis、Lettuce、Redisson的简介 优先使用Lettuce, 需要分布式锁,分布式集合等分布式的高级特性,添加Redisson结合使用。 对于高并发,1000/s的并发,数据库可能由行锁变成表锁,性能下降会厉害。 1.1、…

卷积神经网络全解!CNN结构、训练与优化全维度介绍!

目录 一、引言1.1 背景和重要性1.2 卷积神经网络概述 二、卷积神经网络层介绍2.1 卷积操作卷积核与特征映射卷积核大小多通道卷积 步长与填充步长填充 空洞卷积(Dilated Convolution)分组卷积(Grouped Convolution) 2.2 激活函数R…

Eclipse集成MapStruct

Eclipse集成MapStruct 在Eclipse中添加MapStruct依赖配置Eclipse支持MapStruct①安装 m2e-aptEclipse Marketplace的方式安装Install new software的方式安装(JDK8用到) ②添加到pom.xml 今天拿到同事其他项目的源码,导入并运行的时候抛出了异…

leetcode做题笔记86分隔链表

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入:head [1,4,3,2,5,2], x 3 输出&am…

【数据结构OJ题】复制带随机指针的链表

原题链接:https://leetcode.cn/problems/copy-list-with-random-pointer/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 此题可以分三步进行: 1. 拷贝链表的每一个结点,拷贝的结点先链接到被拷贝结点…

什么是异常处理

文章目录 异常处理介绍自定义异常页面文档:自定义异常页面说明 自定义异常页面-应用实例需求:代码实现 全局异常说明全局异常-应用实例需求:代码实现完成测试 自定义异常说明自定义异常-应用实例需求:代码实现完成测试 注意事项完成测试 异常处理 介绍 默认情况下…

飞天使-k8s简单搭建(编写中)

文章目录 k8s概念安装部署无密钥配置与hosts与关闭swap开启ipv4转发安装前启用脚本开启ip_vs安装指定版本docker 安装kubeadm kubectl kubelet,此部分为基础构建模版 k8s一主一worker节点部署k8s三个master部署虚拟负载均衡ip创建 参考链接地址 k8s概念 K8sMaster : 管理K8sNo…

Python学习笔记_基础篇(二)_数据类型之字符串

一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list 列表用[] 元祖:tuple 元祖用() 字典:dict 注:所有的数据类型都存在想对应…

Jmeter 连接 MySQL 数据库脚本

1、创建线程组 2、创建 JDBC Connection Configuration 3、创建 JDBC Request 4、最终创建的目录 5、重点来了 5.1 在百度中下载个 MySQL-connector-Java-8.0.28.jar,放在 jmeter 的 bin 目录下 5.2 在测试计划中,将 jar 包添加到脚本中 5.3 输入参…

【动态map】牛客挑战赛67 B

登录—专业IT笔试面试备考平台_牛客网 题意: 思路: 考虑动态的map 可以先定义一个状态,然后用map统计前缀这个状态的出现次数 在这里,定义{a,b}为cnt1 - cnt0和cnt2 - cnt0 当cnt0 和 cnt1都和cnt2相同时,统计贡献…

算法通关村第3关【白银】| 双指针思想

1. 双指针思想 双指针不仅指两个指针,也可以是两个变量,指向两个值。 有三种类型: 快慢型:一前一后对撞型:从两端向中间靠拢背向型:从中间向两端分开 2. 删除元素专题 2.1原地移除元素 (1)快慢指针 思…

Docker安装基础使用练习

目录 1、安装Docker-CE 1)简单使用yum方式安装 ! 2)配置镜像加速: 2、下载系统镜像(Ubuntu、 centos) 1)先查看我们所需的镜像有哪些版本。使用search命令! 2)下载镜像使用的是pul…

nestjs 基础、使用 passport 来进行鉴权

回顾一些定义 NestJS 部分 Module 模块结构 模块是一个图状引用关系。 模块的实例化有三种模式。默认情况是 singletones 模式,也就是模块可能被引用,但不同的引用处拿的是同一个共享实例,也就是说一个进程有一个唯一的实例被共享。 模块&a…

uni-app自定义多环境配置,动态修改appid

背景 在企业级项目开发中,一般都会分为开发、测试、预发布、生产等多个环境,在工程化中使用不同的打包命令改变环境变量解决不同环境各种变量需要手动修改的问题,比如接口请求地址,不同环境的请求路径前缀都是不同的。在使用uni-…

虚拟现实与增强现实技术的商业应用

章节一:引言 随着科技的不断发展,虚拟现实(Virtual Reality,简称VR)与增强现实(Augmented Reality,简称AR)技术正日益成为商业领域中的重要创新力量。这两种技术为企业带来了前所未…

深入源码分析kubernetes informer机制(四)DeltaFIFO

[阅读指南] 这是该系列第四篇 基于kubernetes 1.27 stage版本 为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 client-go中的存储结构DeltaFIFOdelta索引 keyqueue push操作delta push 去重 queue pop操作 总结 client-go中的存储结构…