Skip to content
← Writing

技术分享

目标检测IoU:对比GIoU、DIoU和CIoU

5 min read1,327 wordsupdated May 8, 2026

Cite

BibTeX

@misc{iou-giou-diou-ciou,
  author = {Jingxi Qiu},
  title = {目标检测IoU:对比GIoU、DIoU和CIoU},
  howpublished = {Jingxi Qiu},
  year = {2025},
  url = {https://mouwumou.github.io/blog/iou-giou-diou-ciou/}
}

APA

Qiu, J. (2025). 目标检测IoU:对比GIoU、DIoU和CIoU. In Jingxi Qiu.

MLA

Qiu, Jingxi. “目标检测IoU:对比GIoU、DIoU和CIoU.” Jingxi Qiu, 2025.

Chicago

Qiu, Jingxi. 2025. “目标检测IoU:对比GIoU、DIoU和CIoU.” In Jingxi Qiu. Preprint.

在目标检测任务中,模型采用IoU定义预测锚框和目标锚框之间的差距,以得到相对应的损失。但IoU本身存在一定的局限性,本文将分析GIoU, DIoU, CIoU相较IoU的改进和区别。

IoU作用和问题

link_to_page

目标检测需要预测物体的位置(边界框)和类别。

IoU (Intersection over Union)

IoU=预测框真值框预测框真值框IoU = \frac{预测框 \cap 真值框}{预测框 \cup 真值框}

衡量预测框和真实框的重叠程度。通常认为 IoU ≥ 0.5 即为“检测正确”。

image.png

IoU存在的问题:

  1. 当预测框和目标框无重叠的时候IoU=0,此时损失函数的梯度也为0,这会导致模型收敛变慢。
  2. IoU不关心中心距离和长宽比差异,只关心重叠面积同样可能带来收敛慢合形状不匹配问题。

各类IoU变体

符号定义

BB: 预测框

BB^*: 真实框

|\cdot|: 面积

cc: 最小包围框对角线长度

CC: 同时包住BBBB^*的最小包围框

ρ(,)\rho(⋅,⋅): 中心点欧氏距离

IoU

IoU(B,B)=BBBB[0,1]IoU(B, B^*) = \frac{|B\cap B^*|}{|B\cup B^*|} \in [0,1]

对应的损失函数:

LIoU=1IoU or log(IoU+ϵ)[0,1]L_{IoU}=1-IoU\text{ or }-log(IoU+\epsilon)\in [0,1]
优点 缺点
与评估指标一致,与尺度无关 1. 当IoU=0时,梯度几乎消失 2. 不关心中心距离/长宽比差异,导致收敛慢或形状不匹配

GIoU (Generalized IoU)

GIoU=IoUC\(BB)C[1,1]GIoU=IoU-\frac{|C \backslash (B\cup B^*)|}{|C|}\in [-1, 1]

CC为同时包住BBBB^*的最小包围框。C\(BB)C \backslash (B\cup B^*)CC中不属于BBB\cup B^*的部分

LIoU=1GIoU=1IoU+C\(BB)C[0,2]L_{IoU}=1-GIoU=1- IoU +\frac{|C \backslash (B\cup B^*)|}{|C|}\in[0,2]

image.png

优点:

无重叠时也存在梯度(通过第二项把两个框往一起推)

缺点:

当两框重叠时,GIoU的附加项与距离/方向关联性弱,且对中心不敏感。中后期收敛速度可能较慢。

DIoU (Distance-IoU)

DIoU=IoUρ2(center(B),center(B))c2(1,1]DIoU = IoU-\frac{\rho^2(center(B),center(B^*))}{c^2}\in (-1,1]

其中,ρ(center(B),center(B))\rho(center(B),center(B^*))是两中心点的欧氏距离,cc是最小包围框CC的对角线长度

LDIoU=1DIoU=1IoU+ρ2(center(B),center(B))c2[0,2)L_{DIoU}=1-DIoU=1−IoU+\frac{\rho^2(center(B),center(B^*))}{c^2}\in[0, 2)

image.png

优势:

通过计算中心距离,即使无重叠也可明确两个检测框方向差异,对齐两个检测框中心点,改善GIoU对中心不敏感问题。

缺点:

仍然不太关注长宽比

CIoU (Complete-IoU)

CIoU在DIoU基础上增加了长宽比差异惩罚。

CIoU=IoUρ2c2αv(32,1],where v=4π2(arctanwharctanwh)2,α=v(1IoU)+vCIoU = IoU-\frac{\rho^2}{c^2}-\alpha v \in (-\frac{3}{2}, 1], \\\text{where } v=\frac{4}{\pi^2}(arctan\frac{w^*}{h^*}−arctan\frac{w}{h})^2,\alpha=\frac{v}{(1−IoU)+v}

其中,ρ2c2\frac{\rho^2}{c^2}是DIoU的关注项,新增了αv\alpha v来形状上的差距。

在其中,

v=4π2(arctanwharctanwh)2v=(2πΔθ)2v=\frac{4}{\pi^2}(arctan\frac{w^*}{h^*}−arctan\frac{w}{h})^2 \Leftrightarrow v=(\frac{2}{\pi}\Delta\theta)^2

Δθ:=arctanwharctanwh[0,π2)\Delta \theta:= |arctan\frac{w^*}{h^*}−arctan\frac{w}{h}|\in[0,\frac{\pi}{2})

由于在这里arctan(wh)(0,2π)arctan(\frac{w}{h})\in(0,2π),因此两者角度差Δθ[0,π2)\Delta \theta \in [0, \frac{\pi}{2}),乘上2π\frac{2}{\pi}后变换到[0,1)区间。因此v[0,1)v\in[0,1)有界且与其他项同量级。

α\alpha为自适应权重,α=v(1IoU)+v[0,1]\alpha=\frac{v}{(1−IoU)+v}\in[0,1]

当IoU低时,α\alpha小→先对齐中心/重叠;当IoU高时,α\alpha增大→更关注宽高比。

LCIoU=1IoU+ρ2c2+αv(32,1]L_{CIoU}=1-IoU+\frac{\rho^2}{c^2}+\alpha v \in (-\frac{3}{2}, 1]

优点:

  1. 同时考虑重叠、中心距离、形状比例,在常规目标检测中是非常强的默认选择之一
  2. 比 DIoU 在形状匹配上更稳,通常定位最准确。
  3. 由于有α\alpha加权因子在,因此在收敛不同阶段可以有不同侧重点。

缺点:

1.只适合轴对齐框,无法应用于旋转检测

  1. Δθ\Delta \theta在极端长宽比下导数会变得非常小,形状更新变慢

    **解释:**YOLO网络通常对宽高用对数/相对参数化:w=awetw,h=ahethlnr=twthw=a_w e^{t_w},\,h=a_h e^{t_h}\Rightarrow \ln r=t_w-t_h

    因此s(r)=2πarctan(r)s(r)=\frac{2}{\pi} arctan(r)对网络输出的梯度是stw=srrtw=s(r)r=dsdlnr,sth=dsdlnr\frac{\partial s}{\partial t_w} =\frac{\partial s}{\partial r}\frac{\partial r}{\partial t_w} =s'(r)\,r=\frac{ds}{d\ln r},\quad \frac{\partial s}{\partial t_h}=-\frac{ds}{d\ln r}

    其中dsdlnr=2πr1+r2\frac{ds}{d\ln r}=\frac{2}{\pi}\frac{r}{1+r^2}r0r\rightarrow 0或者rr \rightarrow \infin的时候有效梯度都会变小

  2. 只使用宽高比导致梯度下降时“该增高还是增宽”不够显示

IoU, GIoU, DIoU, CIou Loss曲线对比

image.png

常用bbox回归损失对比

模型/框架家族 默认/常用的 bbox 回归损失
YOLOv4 CIoU
YOLOv5 CIoU
YOLOv7 CIoU
YOLOv8 / Ultralytics CIoU(+ DFL 作为分布式回归)
DETR(原版) L1 + GIoU
RT-DETR L1 + GIoU
YOLOX IoU loss(而非 CIoU/GIoU)
MMDetection 生态 IoU/GIoU/DIoU/CIoU 全支持(具体模型配哪种取决于配置)

CIoU在YOLO主线(v4/5/7/8/…)占主导;GIoU在Transformer-based检测器(DETR/RT-DETR及衍生)占主导。DIoU 较少作为默认,更多是论文/对照实验; EIoU、SIoU、α-IoU在很多改进版或特定场景论文中出现频繁,但主流框架默认仍以CIoU/(L1+GIoU)为主。

其他衍生变体

1)进一步“形状/距离”解耦与稳定:

  • EIoU(Efficient-IoU):用更直接的宽/高差异项替代 CIoU 的 v(如(ww)2,(hh)2(w-w^*)^2,(h-h^*)^2归一化),让优化信号更“对症”,收敛更快。常见于 YOLO 系列改进。
  • SIoU(Skew/Stable-IoU):在距离项里加入方向/角度代价,鼓励预测中心“朝向”真值中心的最佳角度移动,降低训练抖动、加速收敛。

直觉:

  • DIoU:拉近中心;
  • CIoU:再配齐“身材”(宽高比);
  • EIoU:把“身材不匹配”分解为宽差+高差直接优化;
  • SIoU:不仅“拉近”,还朝对的方向拉

2)强调高精度或困难样本:

  • α-IoU(Alpha-IoU):把 IoU 提升为 IoUα\mathrm{IoU}^\alpha(或对 G/D/CIoU的IoU部分做幂),损失如 1IoUα1-\mathrm{IoU}^\alpha
    • α>1\alpha>1:放大高 IoU 区间梯度,更追求“最后几像素”的对齐;
    • α<1\alpha<1:强化低 IoU 样本的学习信号。
  • Focal-IoU / Quality-aware 回归:把 IoU 或回归质量当“质量因子”做焦点调制(与分类端的 Focal 思想类似),聚焦难例或高质量例子。

3)旋转框/三维框/小目标:

  • Rotated IoU(rIoU)、SkewIoU、Polygon IoU:适配方向框或多边形实例分割;
  • 3D IoU / 3D GIoU:点云/3D 检测里的体素/包围盒匹配;
  • GWD/NWD/KLD 系列:把框当作高斯分布,用Wasserstein/KL度量形状与位置差异,对小目标更鲁棒(IoU 在小物体上对像素级扰动很敏感)。

4)分割任务(像素级)相关:

  • Soft IoU / Jaccard Loss:IoU 的可微近似,用于语义/实例分割;
  • Dice / Tversky / Focal Tversky:与 IoU 同宗(集合重叠思想),对类别不平衡或召回/精确率偏好可调。

引用

https://www.researchgate.net/figure/The-calculation-process-of-GIoU_fig4_378389568

https://www.researchgate.net/figure/The-calculation-method-comparison-of-IoU-GIoU-and-DIoU_fig2_363183586

https://medium.com/@abhishekjainindore24/giou-ciou-and-diou-variants-of-iou-and-how-they-are-better-compared-to-iou-4610a015643a

https://zhuanlan.zhihu.com/p/1941526646839570865

https://giou.stanford.edu/

https://arxiv.org/abs/2101.08158

https://arxiv.org/abs/2205.12740

https://arxiv.org/abs/2110.13675

https://arxiv.org/abs/2110.13389

Related posts