在目标检测任务中,模型采用IoU定义预测锚框和目标锚框之间的差距,以得到相对应的损失。但IoU本身存在一定的局限性,本文将分析GIoU, DIoU, CIoU相较IoU的改进和区别。
IoU作用和问题#
link_to_page
目标检测需要预测物体的位置(边界框)和类别。
IoU (Intersection over Union)
IoU=预测框∪真值框预测框∩真值框
衡量预测框和真实框的重叠程度。通常认为 IoU ≥ 0.5 即为“检测正确”。

IoU存在的问题:#
- 当预测框和目标框无重叠的时候IoU=0,此时损失函数的梯度也为0,这会导致模型收敛变慢。
- IoU不关心中心距离和长宽比差异,只关心重叠面积同样可能带来收敛慢合形状不匹配问题。
各类IoU变体#
符号定义#
B: 预测框
B∗: 真实框
∣⋅∣: 面积
c: 最小包围框对角线长度
C: 同时包住B和B∗的最小包围框
ρ(⋅,⋅): 中心点欧氏距离
IoU#
IoU(B,B∗)=∣B∪B∗∣∣B∩B∗∣∈[0,1]
对应的损失函数:
LIoU=1−IoU or −log(IoU+ϵ)∈[0,1]
| 优点 |
缺点 |
| 与评估指标一致,与尺度无关 |
1. 当IoU=0时,梯度几乎消失 2. 不关心中心距离/长宽比差异,导致收敛慢或形状不匹配 |
GIoU (Generalized IoU)#
GIoU=IoU−∣C∣∣C\(B∪B∗)∣∈[−1,1]
令C为同时包住B与B∗的最小包围框。C\(B∪B∗)为C中不属于B∪B∗的部分
LIoU=1−GIoU=1−IoU+∣C∣∣C\(B∪B∗)∣∈[0,2]

优点:
无重叠时也存在梯度(通过第二项把两个框往一起推)
缺点:
当两框重叠时,GIoU的附加项与距离/方向关联性弱,且对中心不敏感。中后期收敛速度可能较慢。
DIoU (Distance-IoU)#
DIoU=IoU−c2ρ2(center(B),center(B∗))∈(−1,1]
其中,ρ(center(B),center(B∗))是两中心点的欧氏距离,c是最小包围框C的对角线长度
LDIoU=1−DIoU=1−IoU+c2ρ2(center(B),center(B∗))∈[0,2)

优势:
通过计算中心距离,即使无重叠也可明确两个检测框方向差异,对齐两个检测框中心点,改善GIoU对中心不敏感问题。
缺点:
仍然不太关注长宽比
CIoU (Complete-IoU)#
CIoU在DIoU基础上增加了长宽比差异惩罚。
CIoU=IoU−c2ρ2−αv∈(−23,1],where v=π24(arctanh∗w∗−arctanhw)2,α=(1−IoU)+vv
其中,c2ρ2是DIoU的关注项,新增了αv来形状上的差距。
在其中,
v=π24(arctanh∗w∗−arctanhw)2⇔v=(π2Δθ)2
Δθ:=∣arctanh∗w∗−arctanhw∣∈[0,2π)
由于在这里arctan(hw)∈(0,2π),因此两者角度差Δθ∈[0,2π),乘上π2后变换到[0,1)区间。因此v∈[0,1)有界且与其他项同量级。
α为自适应权重,α=(1−IoU)+vv∈[0,1]。
当IoU低时,α小→先对齐中心/重叠;当IoU高时,α增大→更关注宽高比。
LCIoU=1−IoU+c2ρ2+αv∈(−23,1]
优点:
- 同时考虑重叠、中心距离、形状比例,在常规目标检测中是非常强的默认选择之一
- 比 DIoU 在形状匹配上更稳,通常定位最准确。
- 由于有α加权因子在,因此在收敛不同阶段可以有不同侧重点。
缺点:
1.只适合轴对齐框,无法应用于旋转检测
-
Δθ在极端长宽比下导数会变得非常小,形状更新变慢
**解释:**YOLO网络通常对宽高用对数/相对参数化:w=awetw,h=aheth⇒lnr=tw−th
因此s(r)=π2arctan(r)对网络输出的梯度是∂tw∂s=∂r∂s∂tw∂r=s′(r)r=dlnrds,∂th∂s=−dlnrds
其中dlnrds=π21+r2r在r→0或者r→∞的时候有效梯度都会变小
-
只使用宽高比导致梯度下降时“该增高还是增宽”不够显示
IoU, GIoU, DIoU, CIou Loss曲线对比#

常用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(如(w−w∗)2,(h−h∗)2归一化),让优化信号更“对症”,收敛更快。常见于 YOLO 系列改进。
- SIoU(Skew/Stable-IoU):在距离项里加入方向/角度代价,鼓励预测中心“朝向”真值中心的最佳角度移动,降低训练抖动、加速收敛。
直觉:
- DIoU:拉近中心;
- CIoU:再配齐“身材”(宽高比);
- EIoU:把“身材不匹配”分解为宽差+高差直接优化;
- SIoU:不仅“拉近”,还朝对的方向拉。
2)强调高精度或困难样本:#
- α-IoU(Alpha-IoU):把 IoU 提升为 IoUα(或对 G/D/CIoU的IoU部分做幂),损失如 1−IoUα
- α>1:放大高 IoU 区间梯度,更追求“最后几像素”的对齐;
- α<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