神经网络——常见的回归损失函数

GIoU Loss 在 IoU Loss 的基础上解决了边界框不重合的问题;

DIoU Loss 在 IoU 和 GIoU Loss 上加入了边界框中心点的信息;

CIoU Loss 在 DIoU Loss 的基础上加入了边界框宽高比的尺度信息。

  • L1 Loss、L2 Loss 和 Smooth L1 Loss

神经网络——常见的回归损失函数

神经网络——常见的回归损失函数

三个损失函数的图像公式如上,分别对其求导:

神经网络——常见的回归损失函数

公式中的 x 都是 bounding box 四个坐标点与 ground truth 四个坐标点的差值,四个点分别计算 Loss 再相加,得到这个 bbox 的回归损失。

L1 Loss 在训练后期当 x 值较小时,梯度依然固定不变,会导致模型在最优解附近振荡。L2 Loss 在训练初期 x 较大时,梯度也过大,导致训练不稳定。smooth L1 Loss 避免了上述两个 Loss 存在的问题,x 较小时梯度依然小,x 较大时梯度固定而不至于过大。

而 VOC 和 COCO 上检测任务的评价指标都是基于 IoU 的,多个 bbox 可能有相同的 smooth L1 Loss,但 IoU 差别可能很大,于是引入了基于 IoU 的一系列 Loss。smooth L1 Loss 的缺点:对于尺度不具有不变性;同样通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性。

神经网络——常见的回归损失函数
  • IoU Loss

神经网络——常见的回归损失函数

将两个框的 IoU 取 -ln,直接作为损失函数,将 bbox 看作一个整体进行回归。通常情况下 IoU Loss = 1-IoU。

  • GIoU Loss

但是 IoU Loss 的缺点是当 IoU 的值为0时,其 Loss 为无穷并且不可导(针对取 -ln 的情况)。更重要的是 IoU 无法反映两个框是如何相交的,下图中,三种不同相对位置的框拥有相同的 IoU=0.33 值,但是拥有不同的 GIoU=0.33,0.24,-0.1,当框的对齐方向更好一些时GIoU的值会更高一些。

神经网络——常见的回归损失函数

对于 bbox 和 gt,我们要找到一个 bbox 和 gt 最小外接矩形 C,然后计算 C 中没有覆盖 bbox 和 gt 的面积占 C 总面积的比例,然后用 bbox 和 gt 的 IoU 值减去这个比值。

神经网络——常见的回归损失函数

对于 IoU Loss 的两个缺点,由于 IoU 取值范围为0~1所以 GIoU 的取值范围为-1~1。 同时由于 GIoU 引入了框 C,所以当 bbox 和 gt 不重合时也同样可以计算。最终的 GIoU Loss = 1-GIoU。

  • DIoU Loss 和 CIoU Loss

好的目标框回归损失应该考虑三个重要的几何因素: 重叠面积,中心点距离,长宽比。在2020 AAAI 上有文章指出了 IoU Loss 和 GIoU Loss 的两个改进方向:一是为了加快收敛速度,使损失函数为最小化 bbox 和 gt 之间的归一化距离。因此提出了 DIoU Loss,该 Loss 考虑了重叠面积和中心点距离,相对于 GIoU Loss 收敛 更快;二是当 gt 完全包裹 bbox 时能更精确更快地惩罚模型,因为当 gt 完全包裹 bbox 的时候,其 IoU 和 GIoU 的值都一样,此时 GIoU 退化为 IoU, 无法区分其相对位置关系,如下图。因此提出了 CIoU Loss,考虑到了所有的几何因素,相对于 GIoU Loss 精度更高

神经网络——常见的回归损失函数

通常基于 IoU 的 Loss 符合范式:Loss = 1-IoU+惩罚项,惩罚项定义为 bbox 和 gt 的惩罚项。DIoU Loss 中惩罚项为:

神经网络——常见的回归损失函数

就是说 DIoU=IoU-惩罚项。其中 b 为 bbox 和 gt 的中心点,ρ 为欧式距离,c 为 bbox 和 gt 最小外接矩形对角线的长度,如下图:

神经网络——常见的回归损失函数

可以将 DIoU 替换 NMS 算法中的 IoU,即论文提出的 DIoU-NMS,实验结果表明有一定的提升。DIoU Loss 可以直接优化2个框直接的距离,比 GIoU Loss 收敛速度更快,对于 gt 包裹 bbox 的这种情况,DIoU Loss 可以收敛的很快,而 GIoU Loss 此时退化为 IoU Loss 收敛速度较慢。

CIoU 的惩罚项是在 DIoU 的惩罚项基础上加了一个影响因子,这个因子用来拟合 bbox 和 gt 的长宽比。

神经网络——常见的回归损失函数

α 是用来做 trade-off 的参数:

神经网络——常见的回归损失函数

v 是衡量长宽比一致性的参数:

神经网络——常见的回归损失函数

CIoU=IoU-(DIoU 的惩罚项+CIoU 的惩罚项)。CIoU Loss 定义为:

神经网络——常见的回归损失函数

Original: https://blog.csdn.net/AmbitionalH/article/details/122933496
Author: 不说话装高手H
Title: 神经网络——常见的回归损失函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/698026/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球