目标检测边界框回归损失函数汇总:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

1. L1 loss、L2 loss、Smooth L1 loss

2. IoU loss

论文: UnitBox: An Advanced Object Detection Network.
本文由旷视提出,发表于2016 ACM。
论文最大的贡献就是提出了一种新的目标边界框定位损失: IoU loss

2.1 提出问题

在目标检测领域,一般把目标边界框表示为4个变量(x, y, w, h)或(x1, y1, x2, y2)。目标边界框回归问题通常采用L2 loss(L1 loss、Smooth L1 loss)对上述4个变量进行回归,但是,这种做法有以下缺点:

  1. L2 loss在计算边界框损失时,先独立地求出4个点的损失Loss,然后进行相加,这种做法假设了这4个点是相互独立的,但实际上应该是有一定相关性的,因为这4个点都依赖于同一个目标。
  2. 实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的L2 Loss,但它们的IoU可能差异很大。
  3. L2 loss并不具有尺度不变性。大边界框的L2损失通常会大于小边界框的损失,这使得在网络训练过程中,网络会更加注重大边界框的定位,忽视小边界框的定位,最终导致模型对小目标的检测性能比较差。

既然框检测的评价指标是IoU,那么我们可以直接基于IoU来构造新的损失函数(解决了问题2),于是论文UnitBox就提出了IoU loss。IoU loss 综合考虑了用于描述边界框的4个变量,并赋予了它们一定的相关性(解决了问题1)。再者,IoU loss 具有尺度不变性(解决了问题3)。

2.2 原理

IoU loss的原理实际上很简单,这里不再详细说明,直接看以下两幅图。
目标检测边界框回归损失函数汇总:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_第1张图片
目标检测边界框回归损失函数汇总:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_第2张图片

2.3 IoU loss 的特性(优点)

  1. 具有尺度不变性。大边界框的IoU loss 基本上于小边界框的IoU loss相等。对于不同分辨率的图片(边界框尺寸不同),L2 loss得到的预测框受真实边界框尺寸影响较大,而IoU loss得到的预测框受真实边界框尺寸影响较小,鲁棒性较好。
    目标检测边界框回归损失函数汇总:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_第3张图片
  2. 输入任意样本,IoU的值均介于[0, 1]之间,这种自然的归一化损失使模型具有更强的处理多尺度图像的能力。IoU=1时,预测效果最理想,此时IoU loss=0;IoU=0时,预测效果最差,此时IoU loss趋于正无穷大;而IoU在[0, 1]区间单调递增时,IoU loss由正无穷大单调递减至0,这些均满足损失函数的要求。
  3. IoU loss本质上是对IoU的交叉熵损失,即将IoU视为伯努利分布的随机采样(详见论文)。有时候为了简便,可直接使用1-IoU来代替IoU loss,例如,YOLOv2以K-means聚类方法自动选取anchor boxes尺寸时的损失函数就采用1-IoU。

3. GIoU loss

论文: Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression.
官方代码: https://giou.stanford.edu..

3.1 提出问题

IoU loss有2个缺点:

  1. 当预测框A和目标框B不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU loss 无法优化两个框不相交的情况。
  2. 假设预测框A和目标框B的大小都确定,只要两个框的相交值是确定的,其IoU值就是相同的,此时IoU值不能反映两个框是如何相交的。
    目标检测边界框回归损失函数汇总:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_第4张图片
    如上图所示,三种不同相对位置的框拥有相同的IoU=0.33值,但是拥有不同的GIoU=0.33,0.24,-0.1。当框的对齐方向更好一些时GIoU的值会更高一些。

3.2 原理

GIoU的计算方法如下:其中,C是能完全包围A和B的最小矩形框。
目标检测边界框回归损失函数汇总:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_第5张图片

3.3 GIoU 的特性(优点)

  1. 与IoU相似,GIoU也是一种距离度量,作为损失函数的话, L G I o U = 1 − G I o U L_{GIoU}=1-GIoU LGIoU=1GIoU满足损失函数的基本要求。
  2. GIoU具有尺度不变性。
  3. GIoU是IoU的下界,当且仅当两个框完全重合时, I o U = G I o U IoU=GIoU IoU=GIoU
  4. IoU取值范围为[0,1],GIoU取值范围为[-1,1]。GIoU在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。
  5. 与IoU只关注重叠区域不同,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。当两个框没有重叠区域时,IoU恒等于0,此时梯度为0,导致无法训练优化。而此时GIoU是一个在[-1, 0]范围内变化的数,存在梯度,于是可进行优化,优化方向是逐渐拉近两个框之间的距离。

作者通过实验的方法,随机选取了10k对框,来研究IOU和GIoU之间的联系,得到下图:
目标检测边界框回归损失函数汇总:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_第6张图片

4. DIoU loss、CIoU loss

论文: Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression.
源代码: https://github.com/Zzh-tju/DIoU.

参考资料:
[1]: 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss.
[2]: IoU、GIoU、DIoU损失函数的那点事儿.

你可能感兴趣的:(Object,Detection)