IoU系列(IoU, GIoU, DIoU, CIoU)

​​​​​

写在前面

一、IoU (Intersection over Union)

1.1 IoU的优点

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

二、GIoU (Generalized)

三、 DIoU

四、CIoU

总结




写在前面

沉寂一段时间,把自己个人能力再打磨打磨。

做纯粹的事!

国际惯例:

声明:

本文章仅供个人学习之用,由于作者能力有限,相关观点和信息仅供参考。

如有侵权请联系。

欢迎各位读者老爷提问和交流。

我们的目标是星辰大海!

time:2021年9月24日16:14:18



一、IoU (Intersection over Union)

1.1 IoU的优点

  1. IoU作为距离时(比如:\large L_{IoU}=1-IoU ),是一个度量。因为它包含了作为度量的所有属性,比如:非负性、不确定性、对称性和三角不等性。
  2. IoU有尺度不变性,对尺度不敏感(scale invariant)这意味着,任意两个方框A和B的相似性与他们的空间尺度无关。
  3. 不仅用来确定正样本和负样本,还可以用来评价输出框(predict box)和ground-truth的距离.

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

  1. 如果两个框没有相交,根据定义,IoU=0,不能反映两者的距离大小(重合度)。同时因为loss=0,没有梯度回传,无法进行学习训练。
  2. IoU无法区分两个对象之间不同的对齐方式。更确切的讲,不同方向上有相同较差级别的两个重叠对象的IoU会完全相等。

IoU系列(IoU, GIoU, DIoU, CIoU)_第1张图片

图1. IoU无法区别的情况示例

 如图1所示,这种情况,IoU相当,但是无法区别。



GIoU (Generalized)

对于任意的两个A、B框,首先找到一个能够包住它们的最小方框C.然后计算

计算这个与C面积的比值,在用AB的IoU减去这个比值得到GIoU。

IoU系列(IoU, GIoU, DIoU, CIoU)_第2张图片

 图2. GIoU最简单的示例

存在的问题:

在预测框和真实框没有很好的对齐时,会导致最小外界框C的面积增大,从而使GIOU的值变小,而两个矩形框不重合时,也可以计算GIoU。GIoU Loss虽然解决了IOU的问题,但是产生的新bug就是当两个框属于包含关系是,GIoU无法区分其相对位置.

由于GIoU仍然严重依赖于IoU,因此在两个垂直方向,误差很大,基本很难收敛,这就是GIoU不稳定的原因。

IoU系列(IoU, GIoU, DIoU, CIoU)_第3张图片

图3. GIoU存在的问题示例 

特性:

  1. 与IoU相似,GIoU也是一种距离度量。作为损失函数的话。 ,满足损失函数的基本要求。
  2. GIoU对scale不敏感。
  3. GIoU是IoU的下届,在两个框无限重合的情况下,IoU=GIoU=1
  4. IoU取值[0,1],但是GIoU有对称区间,取值范围[-1,1]。在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。
  5. GIoU不仅关注重叠区域,还关注其他非重合区域。

三、 DIoU

针对上诉GIou的两个问题,

预测框和真实框是包含关系或者处于水平与垂直的方向上,GIoU损失几乎已退化为IoU损失。

从数学的角度来说,就是 的时候,导致收敛速度变慢。

GIoU中引入最小外界框来最大化重叠面积的惩罚项修改成最小化两个BBox中心点的标准化距离,从而加速损失的收敛过程。

 DIoU的损失函数公式如下:

 其中, 分别代表了预测框与真实框的中心店, 代表的是两个中心点之间的欧式距离,C代表的是能够同时包含预测框和真实框的最小闭包区域的对角线距离。 

DIoU Loss的惩罚项能够直接最小化中心点间的距离,而且GIoU Loss旨在减少外界包围框的面积。

DIoU与IoU,GIoU一样具有尺度不变性。

DIoU与GIoU一样在与目标框不重叠时,仍然可以为边界框提供移动方向

DIoU可以直接最小化两个目标框的距离,因此比GIoU Loss 收敛快得多

DIoU在包含两个水平或垂直方向上的情况回归很快,而GIoU几乎退化为IoU。

四、CIoU

CIoU Loss和DIoU Loss的区别在于CIoU考虑了Bounding box的纵横比,进一步提升了回归进度。

CIoU的惩罚项是DIoU的惩罚基础上加了一个影响因子 , 这个因子把预测框纵横比拟合真实框的纵横比考虑进去。

惩罚项公式如下:

中, 是用于做trade-off的参数, 的定义如下:

是用来衡量长宽比一致性的参数,其定义如下:

完整的CIoU损失函数的公式如下:




总结

IOU、GIOU、DIOU、CIOU的对比

边界框回归的三大集合因素:重叠面积、中心点距离、纵横比

IoU: 考虑了重叠面积,归一化坐标尺度

GIoU: 考虑了重叠面积,基于IoU解决边界框不想交时loss等于0的问题。

DIoU: 考虑了重叠面积、中心点距离,基于IoU解决GIoU收敛慢的问题

CIoU: 考虑了重叠面积、中心点距离、纵横比,基于DIoU提升回归精确度

表1.不同IoU之间的优缺点对比

IOU Loss

GIOU Loss

DIOU Loss

CIOU Loss

EIOU Loss

优点

IOU算法是目标检测中最常用的指标,具有尺度不变性,满足非负性;同一性;对称性;三角不等性等特点。

GIOU在基于IOU特性的基础上引入最小外接框解决检测框和真实框没有重叠时loss等于0问题。

DIOU在基于IOU特性的基础上考虑到GIOU的缺点,直接回归两个框中心点的欧式距离,加速收敛。

CIOU就是在DIOU的基础上增加了检测框尺度的loss,增加了长和宽的loss,这样预测框就会更加的符合真实框。

EIOUCIOU的基础上分别计算宽高的差异值取代了纵横比,同时引入Focal Loss解决难易样本不平衡的问题。

缺点

1.如果两个框不相交,不能反映两个框距离远近

1.当检测框和真实框出现包含现象的时候GIOU退化成IOU

回归过程中未考虑Bounding box的纵横比,精确度上尚有进一步提升的空间

1. 纵横比描述的是相对值,存在一定的模糊

待定

2.无法精确的反映两个框的重合度大小

2.两个框相交时,在水平和垂直方向上收敛慢

2. 未考虑难易样本的平衡问题

示例

IoU系列(IoU, GIoU, DIoU, CIoU)_第4张图片

图3. GIoU与CIoU实例对比

实际检测效果中,CIOU相比GIOU在框选目标时,能找到一个更合适的框选位置。如上图所示,第一个猫猫使用GIOU损失函数,发现有一只猫耳朵在框外,第二只猫猫使用DIOU损失函数,将猫猫的位置准确标出。 

你可能感兴趣的:(算法,Python,人工智能,python)