论文题目:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
论文链接:
https://arxiv.org/abs/1902.09630arxiv.org代码实现:
https://github.com/generalized-iou/g-darknetgithub.com项目主页:https://giou.stanford.edu/
介绍
IoU是对象检测基准中最常用的评估指标。然而,优化 Bounding Box Regression(回归边界盒)参数的常用距离损失与使该度量值最大化之间存在差距。度量的最佳目标是度量本身。对于轴对称的2D bounding boxes,可以看出IoU可以直接作为回归损失使用。然而有个问题是IoU无法直接优化没有重叠的部分。通过引入一个广义的IoU作为一个新的损失和一个新的度量来解决IoU的弱点。
要将IoU设计为损失,主要需要解决两个问题:
- 预测值和Ground truth没有重叠的话,IoU始终为0且无法优化
- IoU无法辨别不同方式的对齐,比如方向不一致等。
IoU作为度量和损失都有两个主要问题:(i)如果两个对象不重叠,IoU值将为零,并且不能反映两个形状之间的距离。在非重叠对象的情况下,如果使用IoU作为损失,则梯度为零,无法优化;(ii) IoU不能正确区分两个对象的不同对齐。更精确地说,对于两个具有相同交点水平的不同方向重叠的对象,IoU将是完全相等的例如图二,因此,IoU函数的值并不能反映两个对象是如何重叠的。
通过将IoU的概念扩展到非重叠的情况来解决IoU的这两个弱点。这种推广遵循(A)与IOU相同的定义,即将比较对象的形状属性编码到区域属性中;(B)保持IOU的尺度不变性质,(C)确保在发生重叠物体时与IOU有很强的相关性。因此入这个IoU的广义版本GIoU,作为比较任意两个凸形状的新度量。我们还提供了一个计算两个轴向矩形之间GIoU的解析解,允许在这种情况下将其用作损失。
这篇文章的贡献如下:
- 引入GIOU,作为比较任意两个形状的新度量。
- 提供了一个用GIoU作为两个轴向矩形或一般n-正交矩形之间的损耗的解析解。
- 将GIoU loss合并到最流行的对象检测算法中,如Faster R-CNN、Mask R-CNN和YOLO v3,并在标准的对象检测基准上展示了它们的性能改进。
由于正样本和负样本之间存在显著的阶级不平衡,这使得训练边界框得分更加困难,使用GIoU可能有进一步改进本定位的机会,因为它们的边界框回归损失并不能直接代表核心评估指标,即IoU。在本文中,通过引入IOU的一个广义版本来解决IOU的弱点,它直接被合并为目标检测问题的损失。
GIoU(Generalized Intersection over Union)
两个框框A,B(
这种相似性度量方法在评估许多2D/3D计算机视觉时非常流行,IoU有两个很好的特性如下:
- IoU作为距离,例如
,是一个度量。这意味着实现了度量的所有性质,如非负性、不可分辨性恒等、对称性和三角不等式。
- IOU对问题的规模是不变的。这意味着两个任意形状A和B之间的相似性与它们的空间S的尺度无关
然而,IoU有两个缺点:
- 如果
。在这种情况下,IoU不反映两个形状是在彼此附近还是相距很远。
- 两种形状不同对齐的IoU值是相同的,只要它们在每种情况下相交的体积(面积)相等。因此,IoU并不反映两个对象之间如何重叠(图2)。
为了解决这些问题,作者提出了IoU的扩展,即GIoU,对于两个任意凸型(体积)
GIoU有如下性质:
- 与IoU类似,GIoU也可以作为一个距离,loss可以用 (下面的公式)来计算:
- 同原始 IoU 类似,GIoU 对物体的大小不敏感。GIoU 总是小于等于 IoU,对于 IoU,有:
而GIoU则是:
- 由于 GIoU 引入了包含 A,B 两个形状的 C,所以当 A,B 不重合时,依然可以进行优化。
- 与IoU相比,GIoU不仅关注重叠区域。封闭形状C中两个对称形状A和B之间的空隙在A和B之间没有很好的对齐时增大(图2),因此GIoU的值更能反映两个对称物体之间是如何重叠的
总之就是保留了IoU的原始性质同时弱化了它的缺点。于是论文认为可以将其作为IoU的替代。
GIoU 作为 BBox 回归的损失
交叉点和最小的封闭对象都具有矩形形状。 它们的顶点坐标只是被比较的两个边界框之一的坐标,这可以通过使用最小和最大函数比较每个顶点坐标来实现。 要检查两个边界框是否重叠,还必须检查条件。 因此,有一个精确的解决方案来计算IoU和GIoU
损失函数的计算如下:
假设我们现在有预测的 Bbox 和 groud truth 的 Bbox 的坐标(左下角右上角坐标),分别记为:
注意我们规定对于预测的 BBox 来说,有
主要是为了方便之后点的对应关系。
实验
作者做了一系列的实验(针对分割任务和分类任务有一定 loss 的调整设计,不过论文中没有详细给出)结果是 IoU loss 可以轻微提升使用 MSE 作为 loss 的表现,而 GIoU 的提升幅度更大,这个结论在 YOLO 算法和 faster R-CNN 系列上都是成立的: