简要介绍
介绍各种 IoU
好嘞 👍,我给你系统梳理一下 IoU 及其改进版(GIoU, DIoU, CIoU, EIoU, SIoU…),并说明目前在目标检测里常用哪几个。
🔹 1. IoU (Intersection over Union)
最基础的指标:
[
IoU = \frac{|B_p \cap B_{gt}|}{|B_p \cup B_{gt}|}
]
-
优点:直观、简单。
-
缺点:如果没有重叠,梯度为 0,训练信号消失。
👉 所以必须改进。
🔹 2. GIoU (Generalized IoU, 2019 CVPR)
公式:
[
GIoU = IoU - \frac{|C \setminus (B_p \cup B_{gt})|}{|C|}
]
其中 (C) 是两框的最小外接矩形。
-
优点:无重叠时也有梯度。
-
缺点:收敛速度不够快,优化不够精准。
🔹 3. DIoU (Distance IoU, 2020 AAAI)
在 IoU 基础上加上中心点距离:
[
DIoU = IoU - \frac{\rho^2(b_p, b_{gt})}{c^2}
]
-
(\rho) = 两框中心点的欧式距离
-
(c) = 外接矩形对角线长度
-
优点:强制预测框中心点靠近真实框中心,收敛更快。
-
缺点:只考虑中心距离,没考虑长宽比例。
🔹 4. CIoU (Complete IoU, 2020 AAAI)
在 DIoU 上再加上宽高比约束:
[
CIoU = IoU - \left(\frac{\rho^2(b_p, b_{gt})}{c^2} + \alpha v \right)
]
其中:
-
(v) 衡量宽高比差异
-
(\alpha) 是调节系数
-
优点:同时考虑 IoU、中心距离、宽高比,更完整。
-
缺点:计算稍复杂,但在大部分检测任务里性能更好。
🔹 5. EIoU (Efficient IoU, 2021)
进一步把宽度差和高度差单独拿出来:
[
EIoU = IoU - \frac{\rho^2(b_p, b_{gt})}{c^2} - \frac{(w_p-w_{gt})^2}{w_c^2} - \frac{(h_p-h_{gt})^2}{h_c^2}
]
-
优点:对宽高的约束更直接。
-
缺点:用得没 CIoU 普及。
🔹 6. SIoU (Scylla IoU, 2022)
加入了角度和几何约束:
-
考虑中心点距离
-
考虑宽高比例
-
加入角度惩罚
-
优点:理论上收敛更快。
-
缺点:应用不算特别普及。
📌 哪些最常用?
在实际工程里:
-
IoU:用来衡量检测结果好坏(mAP 等指标必须用它)。
-
GIoU:早期有过一阵子热度,但现在用得不多。
-
DIoU / CIoU:目前是 最常用的训练损失(尤其是 CIoU,很多目标检测器默认用它,比如 YOLOv5/YOLOv7)。
-
EIoU / SIoU:新方法,研究多,但工业界普及度一般。
👉 总结:
-
评估阶段:都用 IoU(因为指标统一)。
-
训练阶段:最常用 CIoU Loss,其次是 DIoU Loss。
