目标检测算法常用Loss——DIoU GIoU CIoU

目标检测算法常用Loss

文章目录

      • 目标检测算法常用Loss
        • 1. 差值平方损失
        • 2. IoU Loss
        • 3. GIoU Loss
        • 4. DIoU Loss
        • 5. CIoU Loss
        • 6. 说明和补充
          • 6.1说明
          • 6.2 补充

1. 差值平方损失

在YOLOv3及YOLOv1,v2版本均采用的均值平方损失,也称为L2损失。L2损失在目标检测问题上不能很好的表现出ground truth 和预测框之间的位置,重合等关键信息。所以衍生出一系列关于IoU的损失。

2. IoU Loss

如下图三种不同的情况,明显第三个预测框与ground_truth贴合程度更好,但是经过计算三种预测框的L2loss的值相同。这也反映了L2Loss存在的问题。为了解决这一问题,首先提出了IoU Loss,其表达式可以为 I o U   l o s s = − l n I o U IoU \ loss = -lnIoU IoU loss=lnIoU或者 I o U   l o s s = 1 − I o U IoU\ loss = 1 - IoU IoU loss=1IoU。采用IoU loss 相比与L2 loss 能够很好的反映重合程度,且具有尺度不变性。

目标检测算法常用Loss——DIoU GIoU CIoU_第1张图片

3. GIoU Loss

Generalized IoUIoU loss不可以解决一个问题,当两个框不重合时以 1 − I o U 1 - IoU 1IoU公式为例,其Loss值为1。但我们发现当两个不重合时,无论两个框距离多远其loss值均为1,不会发生改变,这显然是不合理的。 所以提出了GIoU这个概念去弥补IoU的不足,同时用GIoU loss 去弥补IoU loss的缺陷。

GIoU的公式如下:
G I o U = I o U − A c − u A c − 1 ≤ G I o U ≤ 1 GIoU = IoU - {A^c - u\over A^c}\\ -1\le GIoU \le 1 GIoU=IoUAcAcu1GIoU1
其中** A c A^c Ac表示实际框和预测框的最小外接矩形面积,下图中蓝色方框的面积。 u u u表示实际框与预测框的交集。可以计算当两个框重合时GIoU的值为1,当两个框无穷远**时GIoU的值为-1。这样定义的GIou就可以解决IoU在两框不重合时无法将位置关系引入评价指标。由此GIoU的Loss公式为 L G I o U = 1 − G I o U L_{GIoU}=1-GIoU LGIoU=1GIoU,其范围 [ 1 , 2 ] [1, 2] [1,2]

目标检测算法常用Loss——DIoU GIoU CIoU_第2张图片

GIoU缺陷:当实际框与预测框水平或竖直重合或两个框为包含关系时,GIoU将会退化为IoU,如下图。

目标检测算法常用Loss——DIoU GIoU CIoU_第3张图片

4. DIoU Loss

DIoU和下面要提到的CIoU是在同一篇论文中提出来的,论文作者发现,GIoU loss 和IoU loss除了上述缺点外,还存在收敛慢和回归不准确两个问题。其中回归不准确可以通过下图进行理解,下图中的三种情况IoU和GIoU的值都是相同的,但明显相比之下第三种情况更加理想。按照这种想法,第三种情况应该loss值更小。DIoU(Distance-IoU)的提出,便可以解决这一问题。

目标检测算法常用Loss——DIoU GIoU CIoU_第4张图片
DIoU Loss 的计算公式如下:
D I o U = I o U − ρ 2 ( b , b g t ) c 2 = I o U − d 2 c 2 − 1 ≤ D I o U ≤ 1 DIoU = IoU - {\rho^2(b, b^{gt})\over c^2}=IoU - {d^2\over c^2}\\ -1 \le DIoU \le 1\\ DIoU=IoUc2ρ2(b,bgt)=IoUc2d21DIoU1
如下图:其中 ρ ( b , b g t ) \rho(b, b^{gt}) ρ(b,bgt)表示两个框中心点之间的欧氏距离,反映在下图中即为d。 c c c表示两个框最小外接矩形的对角线的长度。当连个框重合时DIoU的值为1,当两个框无限远时d,c均趋近于无穷,所以DIoU的最小值为-1。由此DIoU loss 可以定义为 L D I o U = 1 − D I o U L_{DIoU}=1-DIoU LDIoU=1DIoU其取值范围为 [ 0 , 2 ] [0, 2] [0,2]

目标检测算法常用Loss——DIoU GIoU CIoU_第5张图片

5. CIoU Loss

一个优秀的回归定位损失我们认为应该考虑到以下三个参数:重叠面积,中心点距离, 长宽比。前两个参数我们在DIoU Loss 中已经考虑到了。所以CIoU Loss的功能就是将长框比这一参数也引入我们的损失函数中。

CIoU的函数表达如下,引入了长宽比例:

目标检测算法常用Loss——DIoU GIoU CIoU_第6张图片
CIoU Loss 表达式 C I o U L o s s = 1 − C I o U CIoU Loss=1-CIoU CIoULoss=1CIoU.

6. 说明和补充

6.1说明

本文内容主要参考至B站up视频,再次感谢up的分享。

但其中有一点在IoU loss缺陷那里UP的PPT里写的是IoU loss在两框不相交后loss为0,我根据IoU loss的两个计算公式计算结果都不是零,所以我感觉IoU loss的缺陷应该是不重合后无论两框相聚多远Loss值都不改变。这一点在文章中有体现。

6.2 补充

UP在视频讲解中提到实际中我们具体要用哪一种Loss还需要我们自己去测试,我在我数据集上测试也存在CIoU loss 的效果相较于DIoU会稍差一些。所以大家在使用时可以根据自己调参的情况去选择Loss的计算方式。

其次现在有些文章在计算mAP时,不采用IoU在一定范围认为是找到框,而是将IoU替换为GIoU。有可能GIoU去作为评价指标也会更合理一些。

你可能感兴趣的:(深度学习,目标检测,算法,计算机视觉)