目标检测算法常用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,其表达式可以为目标检测模型SSD模型怎么测FPS 目标检测 loss_算法或者目标检测模型SSD模型怎么测FPS 目标检测 loss_评价指标_02。采用IoU loss 相比与L2 loss 能够很好的反映重合程度,且具有尺度不变性。

目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测_03

3. GIoU Loss

Generalized IoU。IoU loss不可以解决一个问题,当两个框不重合时以目标检测模型SSD模型怎么测FPS 目标检测 loss_算法_04公式为例,其Loss值为1。但我们发现当两个不重合时,无论两个框距离多远其loss值均为1,不会发生改变,这显然是不合理的。 所以提出了GIoU这个概念去弥补IoU的不足,同时用GIoU loss 去弥补IoU loss的缺陷。

GIoU的公式如下:
目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测_05
其中**目标检测模型SSD模型怎么测FPS 目标检测 loss_计算机视觉_06表示实际框和预测框的最小外接矩形面积,下图中蓝色方框的面积。目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测_07表示实际框与预测框的交集。可以计算当两个框重合时GIoU的值为1,当两个框无穷远**时GIoU的值为-1。这样定义的GIou就可以解决IoU在两框不重合时无法将位置关系引入评价指标。由此GIoU的Loss公式为目标检测模型SSD模型怎么测FPS 目标检测 loss_评价指标_08,其范围目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测_09

目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测_10

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

目标检测模型SSD模型怎么测FPS 目标检测 loss_评价指标_11

4. DIoU Loss

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

目标检测模型SSD模型怎么测FPS 目标检测 loss_算法_12


DIoU Loss 的计算公式如下:

目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测模型SSD模型怎么测FPS_13

如下图:其中目标检测模型SSD模型怎么测FPS 目标检测 loss_评价指标_14表示两个框中心点之间的欧氏距离,反映在下图中即为d。目标检测模型SSD模型怎么测FPS 目标检测 loss_算法_15表示两个框最小外接矩形的对角线的长度。当连个框重合时DIoU的值为1,当两个框无限远时d,c均趋近于无穷,所以DIoU的最小值为-1。由此DIoU loss 可以定义为目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测模型SSD模型怎么测FPS_16其取值范围为目标检测模型SSD模型怎么测FPS 目标检测 loss_计算机视觉_17

目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测_18

5. CIoU Loss

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

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

目标检测模型SSD模型怎么测FPS 目标检测 loss_目标检测模型SSD模型怎么测FPS_19


CIoU Loss 表达式目标检测模型SSD模型怎么测FPS 目标检测 loss_算法_20.

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去作为评价指标也会更合理一些。