1. IoU是什么
IoU(Intersection over Union)是一个衡量两个边界框(bounding box)重叠度的指标,常用于目标检测和实例分割任务中。公式如下:
I
o
U
=
交集区域
并集区域
IoU = \frac{交集区域}{并集区域}
IoU=并集区域交集区域以下图小狗做例子,假设我们要预测狗狗叼着的玉米的位置,则我们就可以通过最小化IoU损失来使得预测的Bounding Box更接近GT
通过计算IoU loss而不是计算
l
2
\mathbf l_2
l2损失 优点和缺点:
- 相比于 l 2 \mathbf l_2 l2损失更能反应重合程度,且具有尺度不变性
- 但是,当两个边界框不相交时,其IoU值为0,就无法进行反向传播
2. GIoU
G
I
o
U
=
I
o
U
−
A
c
−
u
A
c
−
1
≤
G
I
o
U
≤
1
GIoU = IoU - \frac{A^c - u}{A^c} ~~~~~ -1 \leq GIoU \leq 1
GIoU=IoU−AcAc−u −1≤GIoU≤1 其中
A
c
A^c
Ac是能框住两个边界框的最小矩形的面积,如下图蓝色的框框
而
u
u
u代表了两个边界框的并集的面积
通过GIoU的这种改进能一定程度的解决IoU中两个框不相交时无法反向传播的问题,同时,GIOU还关注了其他非重合区域,能更好地反映两者的重合度。但是其性能提升并不高,而且当两个边界框具有同样的宽或者高时,
A
c
=
u
A^c = u
Ac=u 导致GIoU退化为IoU
3. DIoU
这个D顾名思义distance,即是一个引入了距离的影响,其公式如下:
D
I
o
U
=
I
o
U
−
d
2
c
2
−
1
≤
D
I
o
U
≤
1
DIoU = IoU - \frac{d^2}{c^2} ~~~~~ -1 \leq DIoU \leq 1
DIoU=IoU−c2d2 −1≤DIoU≤1其中这里的d就是对应了两个边界框的中心点之间的欧氏距离
而c是框住两个边界框的最小矩形的左上顶点和右下顶点之间的欧氏距离,如论文中的例子图
由于DIoU损失能最小化两个bounding box之间的距离,所以其收敛速度会快很多,而且相比与前面提到的IoU和GIoU能更准确的反应两个边界框的重合程度
4. CIoU
Complete-IoU 即是考虑了重叠面积、长宽比、中心点距离三个因素,其公式如下: C I o U = I o U − ( b 2 c 2 + a v ) 其中 v = 4 π 2 ( a r c t a n w g t h g t − a r c t a n w h ) 2 a = v ( 1 − I o U ) + v CIoU = IoU - (\frac{b^2}{c^2} + \mathbf {a v}) \\ 其中~~~~~~~~~~~~~~~~\mathbf v = \frac{4}{\pi^2}(arctan{\frac{w^{gt}}{h^{gt}} - arctan{\frac{w}{h}}})^2 \\ \mathbf a = \frac{\mathbf v}{(1 - IoU) + \mathbf v} CIoU=IoU−(c2b2+av)其中 v=π24(arctanhgtwgt−arctanhw)2a=(1−IoU)+vv当IoU小于0.5时,CIoU退化为DIoU,只考虑预测框和真实框之间的中心点距离;当IoU大于等于0.5时,CIoU同时考虑中心点距离和长宽比的相似程度
我们可以看到由于考虑更多的因素,其计算效率会比另外两个低
上面所说的IoU几种变体在不同的情况下会有不同的效果,所以不能以偏概全,最好实际场景中试试哪一个更合适!!