YOLO中对IOU、GIOU、DIOU、CIOU的理解
根据YOLO版本或者论文顺序可以看出来,对于图像损失的计算先后出现了IOU、GIOU、DIOU、CIOU这几个版本
其中IOU表示的是两个框的交集比上两个框的并集如图:
IOU=A⋂BA⋃BIOU = \frac{A\bigcap B}{A\bigcup B}IOU=A⋃BA⋂B
只用IOU的缺点是1、如果两个框没有相交则IOU为0,则无法计算梯度、2、如果一个锚框包围着另一个锚框则无法精确确定两个锚框的相对位置(因为损失是一样的)所以他们想出了另一种GIOU:
ςgiou=1−IoU+∣C−B⋃Bgt∣∣C∣\varsigma _{giou} = 1 - IoU+\frac{|C-B\bigcup B^{gt}|}{|C|}ςgiou=1−IoU+∣C∣∣C−B⋃Bgt∣
这里边的C就是正好能包着A和B框的一个最小的框的面积,这样就可以解决两个锚框没有交集的不能求导的缺点,具体是:如果没有交集,则IOU为0而B和BgtB^{gt}Bgt的面积则会小于C的面积,所以ςgiou\varsigma _{giou}ςgiou不会为0则可以继续求梯度,但是这同样存在一个问题:如果一个框完全包着另一个框则GIOU和IOU就一样,无法精确确定锚框位置这就带来了精度上的损失:
形如上边的图,GIOU又束手无策了所以就又提出来了DIOU:
ςdiou=1−IoU+ρ2(b,bgt)c2\varsigma _{diou} = 1 - IoU+\frac{\rho^2(b,b^{gt})}{c^2}ςdiou=1−IoU+c2ρ2(b,bgt)
其中ρ2\rho^2ρ2为计算的为两个中心点的距离的平方,c2c^2c2为能包围这两个框的最小包围框的对角线距离的平方,这样做的好处是可以解决两个框相互包着的情况(同心的除外)即如果包着了,则IOU为0,GIOU也为0,但是两个中心点的距离不为0所以DIOU不为0,则可以求梯度,但是对于同心包着的DIOU又解决不了了,所以提出了CIOU:
ςdiou=1−IoU+ρ2(b,bgt)c2+av其中\varsigma _{diou} = 1 - IoU+\frac{\rho^2(b,b^{gt})}{c^2}+av \quad 其中ςdiou=1−IoU+c2ρ2(b,bgt)+av其中
v=4π2(arctanwgthgt−arctanwh)2v = \frac{4}{π^2}(arctan\frac{w^{gt}}{h^{gt}}-arctan\frac{w}{h})^2v=π24(arctanhgtwgt−arctanhw)2
a=v(1−IoU)+va= \frac{v}{(1-IoU)+v}a=(1−IoU)+vv
为啥用acrtan?首先看一下arctan的函数曲线
从图上可以看出arctan不管里边的参数是啥即arctan(x) 不管x为啥值输出的结果总在-π/2到π/2之间,当然,因为根据实际情况距离的取值不会是负值所以x>0即在CIOU中的w/h一定大于0所以经过arctan(x/w)后的值是可以进行计算的,不会出现无穷大的情况,为啥前边的系数是4/π^2,因为假设预测的锚框的宽非常宽,而高非常小此时宽/高就会非常大即接近π/2,同时假设真实锚框宽远小于高此时,真实锚框的arctan为0,所以经过平方后就是 π2/4π^2/4π2/4,然后再倒过来就是系数,在CIOU中引入av主要是为了解决两个框同心的问题,这里引入了宽高比即w/h,当两个框同心的时候DIOU也为0,但是预测框的长和宽的比值却不一定和标注框的长宽比相等这样a中的1-IOU为0,而v却不为0,所以a为1,av不为0所以就可以继续求梯度,这样真的很完美吗?
其实其还存在一种情况,就是同心且长宽比一样的情况如下图:
这样CIOU岂不是又束手无策了,但是反过来想想这样的概率高吗,显然,极低,所以最终选用了CIOU即可
YOLO中对IOU、GIOU、DIOU、CIOU的理解相关推荐
- IoU GIoU DIoU CIoU分析比较
IoU GIoU DIoU CIoU分析比较 IoU 1. IoU的简介及原理解析 2.IOU的应用有哪些? GIoU 1.Iou的缺陷 2.GIoU的简介及原理解析 3.GIoU的性质 DIoU & ...
- IOU .GIOU.DIOU.CIOU
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 IOU .GIOU.DIOU.CIOU 一.IOU(Intersection over Union) 二.GIOU(Generaliz ...
- IoU系列(IoU, GIoU, DIoU, CIoU)
写在前面 一.IoU (Intersection over Union) 1.1 IoU的优点 1.2 作为损失函数会出现的问题(缺点) 二.GIoU (Generalized) 三. D ...
- IOU GIOU DIOU CIOU 及代码实现
总体发展过程: IOU IOU(交并比)顾名思义就是两个框的交集除以他们的并集. IOU Loss:IOU Loss = 1 -IOU(比较常用) IOU 的优点:1.能够很好的反应重合的程度 ...
- 基于IOU的损失函数合集, IoU, GIoU, DIoU,CIoU, EIoU
目标检测任务的损失函数一般由 Classificition Loss(分类损失函数)和Bounding Box Regeression Loss(回归损失函数)两部分构成. Bounding ...
- 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:极市平台 目标检测任务的损失函数由Classificitio ...
- 目标检测回归损失函数:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
文章目录 1. Smooth L1 Loss 1.1 假设x为预测框和真实框之间的数值差异,常用的L1和L2 Loss定义为: 1.2 上述的3个损失函数对x的导数分别为: 1.3 实际目标检测框回归 ...
- IOU, GIOU, DIOU, CIOU
IOU IOU是用来衡量两个边界框的重叠程度的.普通的IOU也分为两种,一种是交并比,一种是最小面积与并集的比 计算公式如下: 并集面积 = 面积A + 面积B - 交集面积 交集面积 = 框A与框B ...
- IOU GIOU DIOU CIOU
# -*- coding: utf-8 -*- # @Time : 2022/8/7 10:34 # @Author : hllyzms import mathdef euclidean_distan ...
最新文章
- IEDA与activiti不兼容等等安装错误问题的解决方案
- 查看Linux 硬件配置
- haproxy的丰富特性简介
- python可以调用windows资源吗_如何在Windows上用Python调用WinRar?还有问题吗
- python epub.js_如何利用Python打包HTML页面为epub?
- latex 生成中文目录乱码问题解决
- Linux内核深入理解系统调用(2):vsyscall 和 vDSO 以及程序是如何运行的(execve)
- 通向KDE4之路(十一):Amarok2开辟起步
- ABP框架源码学习之修改默认数据库表前缀或表名称
- css中用#id.class的形式定义样式,为什么这样用,不直接写成.class.代码如下:#skin_0.selected{}这种的...
- linux内核循环,循环缓冲区(参考linux内核Kfifo)
- 2.Modbus通信协议-软件调试4个工具软件(推荐)
- 北大青鸟(邯郸翱翔)网络校区
- html语言文档格式,HTML文档基本格式介绍,HTML基本标记介绍?
- 学习javascript这一篇就够了超详细笔记(建议收藏)上
- 百鸡问题用计算机思维,大力出奇迹:当古代数学难题遇到现代计算机
- python入门书籍推荐,看这篇文章就够,请!
- h5+js+ajax+百度翻译API:实现翻译功能
- 借助近距离通信,实现手机作为游戏控制器掌控大屏游戏
- 文笔极佳的郭靖夫妇悼文