C V P R 2019 CVPR~2019 CVPR 2019 有一篇介绍目标检测定位损失函数的 p a p e r paper paper:
论文链接:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
1、提出问题
目标检测的主要任务之一是对目标定位。通常我们使用边界框来表示它。衡量目标检测定位性能的主要指标是交并比
I
o
U
IoU
IoU。但是我们在设计损失函数时通常使用
m
s
e
mse
mse 等损失函数来优化模型对目标的定位结果。但是,这类损失函数并不总是能够很好地反映定位精度。如下图
1
1
1 所示:
因此,考虑直接使用
I
o
U
IoU
IoU 衡量目标定位损失。
L
I
o
U
=
1
−
I
o
U
L_{IoU}=1-IoU
LIoU=1−IoU
I o U IoU IoU 还有一个优点:尺度不变性
但是这样做也存在以下几点问题:
- 如果两个框没有相交,则 I o U = 0 IoU=0 IoU=0 这时无法反映两个框的距离(相似程度)。并且损失函数此时不存在梯度,无法通过梯度下降进行训练。
- 即使相同的
I
o
U
IoU
IoU 也不能代表检测框的定位效果相同。 如图所示:
图 2: 以上几种情况下均有 I o U = 0.33 IoU=0.33 IoU=0.33 但是显然从左到右定位效果越来越差。
2、解决方案
针对上述两个缺陷,作者提出新的指标:
G
I
o
U
GIoU
GIoU,计算方法如图
3
3
3 所示。
算法思路如下:
输入:任意两个凸几何
输出: G I o U GIoU GIoU
- 对于 A A A 和 B B B 首先计算最小闭包 C C C。
- I o U = ∣ A ∩ B ∣ ∣ A ∪ B ∣ IoU=\frac{|A\cap B|}{|A\cup B|} IoU=∣A∪B∣∣A∩B∣
- G I o U = I o U − ∣ C \ ( A ∪ B ) ∣ ∣ C ∣ GIoU=IoU-\frac{|C\backslash(A\cup B)|}{|C|} GIoU=IoU−∣C∣∣C\(A∪B)∣
G I o U GIoU GIoU 具有如下特点:
- L G I o U = 1 − G I o U L_{GIoU}=1-GIoU LGIoU=1−GIoU 损失函数具有一般损失函数所有的性质,如,非负性。
- 对尺度不敏感,即尺度不变性。
- G I o U GIoU GIoU 是 I o U IoU IoU 的一个下界,当两个几何越相似,该下界越紧。即, lim A → B G I o U ( A , B ) = I o U ( A , B ) \lim _{A \rightarrow B} GIoU(A, B)=IoU(A, B) limA→BGIoU(A,B)=IoU(A,B)。
- ∀ A , B ⊆ S , 0 ≤ I o U ( A , B ) ≤ 1 \forall A, B \subseteq \mathbb{S}, 0 \leq IoU(A, B) \leq 1 ∀A,B⊆S,0≤IoU(A,B)≤1,但是, ∀ A , B ⊆ S , − 1 ≤ G I o U ( A , B ) ≤ 1 \forall A, B \subseteq \mathbb{S}, -1 \leq GIoU(A, B) \leq 1 ∀A,B⊆S,−1≤GIoU(A,B)≤1
- 与 I o U IoU IoU 只关注重叠区域不同, G I o U GIoU GIoU 不仅关注重叠区域,还关注非重合区域,能更好的反映两者的重合度。
损失函数计算步骤如下图
4
4
4: