游乐游手机版
首页/AI热点日报/热点详情

计算机视觉中DIoU与IoU、GIoU损失函数对比

类型:热点整理2026-07-08
边界框回归始终是目标检测中的关键环节,其核心在于让模型学会精准地框定目标物体。现有方法中,ℓn-norm损失应用广泛,但它的优化目标与评价指标并不一致——评价指标采用IoU(交并比),而损失函数却独立于它。随后出现了IoU损失和GIoU损失,试图将IoU本身作为优化目标,但仍存在收敛缓慢、回归精度不

边界框回归始终是目标检测中的关键环节,其核心在于让模型学会精准地框定目标物体。现有方法中,n-norm损失应用广泛,但它的优化目标与评价指标并不一致——评价指标采用IoU(交并比),而损失函数却独立于它。随后出现了IoU损失和GIoU损失,试图将IoU本身作为优化目标,但仍存在收敛缓慢、回归精度不足的问题。本文提出了一种新型解决方案——DIoU损失,其核心思路是直接优化预测框与真实框中心点之间的归一化距离,收敛速度显著优于IoU和GIoU。

更重要的是,文章系统总结了边界框回归的三个几何要素:重叠面积、中心点距离、高宽比,并据此提出了CIoU损失,进一步提升了速度和精度。将CIoU应用于YOLO v3、SSD、Faster RCNN等主流检测器后,不仅IoU指标得到提升,GIoU指标也随之改善。此外,DIoU还可以自然地融入NMS(非极大抑制)中作为筛选标准,取得了不错的效果。

目标检测是计算机视觉领域经久不衰的核心问题,已历经数十年研究。现有方法大致分为三类:单阶段(YOLO系列、SSD)、两阶段(R-CNN系列)以及多阶段(Cascade R-CNN)。无论采用哪种框架,边界框回归这一步骤都是不可或缺的。

IoU

IoU介绍

Intersection over Union(IoU),即交并比,是指两个框的交集面积除以并集面积。其计算公式非常简单:

\[ \text{IoU} = \frac{|B \cap B^{gt}|}{|B \cup B^{gt}|} \]

其中 \(B^{gt}\) 表示真实框,\(B\) 表示预测框。

IoU Loss

损失函数公式:

\[ \mathcal{L}_{IoU} = 1 - \text{IoU} \]

优缺点分析

IoU损失存在一个显著缺陷:只有当两个框存在重叠区域时,梯度才有效;一旦两者不相交,IoU恒为0,梯度也随之消失,导致预测框无法更新。此外,不同的预测框形状可能计算出相同的IoU损失,但实际回归质量却天差地别。请看下图,左侧是两个不相交的框,右侧是两个形状不同但IoU相同的框,尽管损失值一致,回归效果却截然不同。

GIoU

GIoU介绍

GIoU正是为解决IoU在无重叠时梯度为零的问题而提出的。它在IoU的基础上增加了一个惩罚项:首先找到两个框的最小外接矩形,然后计算该外接矩形减去两个框并集的面积,最后除以外接矩形面积。算法流程如下:

GIoU Loss

损失函数公式:

\[ \mathcal{L}_{GIoU} = 1 - \text{IoU} + \frac{|C - (B \cup B^{gt})|}{|C|} \]

其中 \(C\) 是覆盖 \(B\) 和 \(B^{gt}\) 的最小矩形框。由于引入了这一惩罚项,即使两个框不相交,预测框也会朝着目标框的方向移动。

优缺点分析

GIoU在框不相交时确实有效,并且在所有性能指标上可以作为IoU的替代品,有助于提升检测精度。但问题依然存在:当两个框存在包含关系时,惩罚项 \(C - (A \cup B)\) 的面积往往很小甚至为0,导致GIoU几乎退化回IoU,梯度再次消失。下面三个框中,GIoU损失相同,但第三个框的回归效果明显更优。

IoU & GIoU 分析

以上分析了IoU和GIoU的局限性,下面通过模拟实验来观察边界框回归的具体过程。为什么要进行模拟?因为真实检测场景中,不同距离、尺度、长宽比的情况过于复杂,难以控制变量。模拟实验能够全面覆盖这些情况,便于分析损失函数存在的问题。

模拟实验

实验设置:选取7个单位框(面积均为1)作为目标框,长宽比分别为 \(1:4, 1:3, 1:2, 1:1, 2:1, 3:1, 4:1\),中心点固定。锚框均匀分布在半径为3的圆形区域内,共5000个点。每个点放置7种尺度(面积0.5, 0.67, 0.75, 1, 1.33, 1.5, 2)和7种长宽比的锚框,总计 \(5000 \times 7 \times 7 \times 7 = 1,715,000\) 个回归案例。

图3:(a) 模拟实验覆盖了不同距离、尺度和长宽比;(b) 不同损失函数在迭代T时的误差曲线。

采用梯度下降法模拟回归,迭代公式为:

\[ B^{t} = B^{t-1} + \eta \nabla \mathcal{L} \]

其中 \(B^t\) 是第t次迭代的预测框,\(\nabla \mathcal{L}\) 是损失梯度,\(\eta\) 是学习率(实验中乘以2以加速收敛)。误差用 \(1 - \text{IoU}\) 衡量,迭代到T时的误差曲线如图3(b)所示。

IoU 和 GIoU 损失的限制

图4展示了5000个分散点在迭代T时的最终回归误差。从图4(a)可以清晰看出,IoU损失仅对重叠的框有效——不重叠的锚框梯度为0,完全无法移动。GIoU通过惩罚项缓解了这一问题(图4(b)),扩大了有效工作区域,但在水平方向和垂直方向上仍然存在较大误差。原因在于,GIoU的惩罚项最小化的是 \(|C - A \cup B|\),当两个框存在包含关系时,该值很小甚至为0,GIoU又退化为IoU。虽然GIoU在足够多的迭代次数下也能收敛,但速度极慢——它先让预测框变大去覆盖目标框,再通过IoU项匹配,收敛路径非常曲折。

总结一下:不重叠时,IoU损失基本失效;GIoU在水平和垂直方向上收敛缓慢。在实际检测中,IoU和GIoU都无法保证回归的准确性。

DIoU & CIoU

看到这里,自然会提出两个问题:第一,能否直接最小化两个框中心点的归一化距离,从而实现更快的收敛?第二,当框重叠甚至包含时,如何回归得更准、更快?

DIoU Loss

Distance-IoU损失正是针对这些问题提出的。其一般形式为:

\[ \mathcal{L} = 1 - \text{IoU} + \mathcal{R}(B, B^{gt}) \]

关键在于惩罚项 \(\mathcal{R}\)。DIoU的惩罚项定义为中心点距离的归一化:

\[ \mathcal{R}_{DIoU} = \frac{\rho^2(\mathbf{b}, \mathbf{b}^{gt})}{c^2} \]

其中 \(\mathbf{b}, \mathbf{b}^{gt}\) 分别是两个框的中心点,\(\rho\) 表示欧氏距离,\(c\) 是覆盖两个框的最小外接矩形的对角线长度。损失函数为:

\[ \mathcal{L}_{DIoU} = 1 - \text{IoU} + \frac{\rho^2(\mathbf{b}, \mathbf{b}^{gt})}{c^2} \]

如图5所示,DIoU直接最小化中心点距离,而GIoU仍在计算外接矩形的面积差。

DIoU 和 IoU/GIoU 损失比较

DIoU继承了IoU和GIoU的一些优良特性:尺度不变;在不重叠时也能提供移动方向。当两个框完美匹配时,\(\mathcal{R}_{DIoU} = 0\);当两个框相距很远时,\(\mathcal{R}_{DIoU}\) 趋近于2(因为 \(c\) 很大,但距离平方除以 \(c^2\) 最大为2)。

DIoU的优势十分明显:从图1和图3的仿真结果来看,它直接最小化距离,收敛速度远快于IoU和GIoU。对于包含关系(图2)、水平或垂直方向的情况(图6),DIoU能够快速回归,而GIoU几乎退化失效。

Complete IoU Loss

第二个问题如何解决?文章提出,一个优秀的边界框回归损失应当考虑三个几何因素:重叠面积、中心点距离、长宽比。IoU只考虑了重叠,GIoU严重依赖重叠区域,DIoU加入了中心点距离,但还缺少长宽比的一致性。因此,CIoU在DIoU的基础上增加了长宽比惩罚项:

\[ \mathcal{R}_{CIoU} = \frac{\rho^2(\mathbf{b}, \mathbf{b}^{gt})}{c^2} + \alpha v \]

其中 \(v\) 衡量长宽比的一致性:

\[ v = \frac{4}{\pi^2} \left( \arctan \frac{w^{gt}}{h^{gt}} - \arctan \frac{w}{h} \right)^2 \]

\(\alpha\) 是权衡参数:

\[ \alpha = \frac{v}{(1 - \text{IoU}) + v} \]

损失函数为:

\[ \mathcal{L}_{CIoU} = 1 - \text{IoU} + \frac{\rho^2(\mathbf{b}, \mathbf{b}^{gt})}{c^2} + \alpha v \]

由于 \(v\) 对 \(w\) 和 \(h\) 的梯度分母很小(范围在[0,1]之间),容易引发梯度爆炸,因此在实现时去除了主导器,采用步长替换,保持梯度方向一致。

NMS(非极大抑制)

介绍

NMS是大多数检测算法的最后一步——去除冗余的检测框,只保留与最高分框重叠超过阈值的框。Soft-NMS采用连续函数惩罚相邻框的分数,效果更为柔和;IoU-Net通过预测定位置信度来指导NMS;自适应NMS和Softer-NMS分别针对阈值和加权平均进行了研究。这里简单地将DIoU作为NMS的标准,同时考虑重叠面积和中心点距离。

DIoU-NMS

用DIoU替换原始NMS中的IoU。在抑制冗余框时,不仅考虑重叠区域,还考虑两个中心点的距离。公式如下:

\[ s_i = \begin{cases} s_i, & \text{DIoU}(\mathcal{M}, B_i) < \varepsilon \\ 0, & \text{DIoU}(\mathcal{M}, B_i) \geq \varepsilon \end{cases} \]

其中 \(\mathcal{M}\) 是最高分框,\(s_i\) 是框 \(B_i\) 的得分,\(\varepsilon\) 是阈值。这样一来,两个中心点距离较远的框(可能对应不同物体)就不会被错误删除。DIoU-NMS非常轻量,只需几行代码即可集成。

小结

本文主要介绍了用于边界框回归的DIoU损失和CIoU损失,以及用于NMS的DIoU-NMS。通过直接最小化两个中心点的归一化距离,收敛速度远快于IoU和GIoU。CIoU更进一步,综合考虑了重叠面积、中心点距离和长宽比三个几何因素,促进了更快的收敛和更优的性能。实验表明,这些改进在YOLO v3、SSD、Faster RCNN等检测器上均取得了显著提升。

来源:https://m.elecfans.com/article/1924370.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。