简介
在目标检测中常用到一个指标IoU,又称交并比,用于衡量一幅图像中两个边界框的重合度。在训练阶段,可以用于衡量锚框和物体边界框之间的相似度,来给每个锚点划分正负样本,即给锚点匹配标签,同时也可以用作损失函数,通过提高预测边界框与真实边界框之间的相似度来改善网络预测物体边界框的能力;在测试阶段,可以利用IoU来衡量预测边界框之间的重合度,用于过滤重合度高的边界框,即参与NMS运算。
计算公式
边界框A和边界框B之间的交集区域面积除以并集区域面积:
IoU
=
A
∩
B
A
∪
B
\text{IoU}=\frac{A\cap B}{A\cup B}
IoU=A∪BA∩B
其中 A A A和 B B B分别表示两个边界框区域。
在传统利用 l 1 l_1 l1公式计算边界框损失时,很容易受到物体尺度变化的干扰,即大物体所对应的边界框数值很大,往往具有很大的距离损失,容易主导网络朝着检测大物体的方向优化,不利于网络检测小物体。相比之下,利用IoU计算边界框损失时有一个很大的优点——损失结果具有尺度不变性,即损失大小不会受到物体尺度信息的影响,可以更准确地反应边界框相似度。
但是,利用传统的IoU衡量相似度时也有一定的问题,若两个边界框无重叠,则IoU数值为0,并不能反应两个边界框之间的相对相似度,例如:不能很好地反应距离,离得近的边界框肯定要比离得远的边界框更“相似”,此时,如果将IoU用作损失,则梯度为0,无法进行优化。
改进
参考链接:https://blog.csdn.net/xian0710830114/article/details/128177705
Generalized IoU——GIoU
会议时间:IEEE Conference on Computer Vision and Pattern Recognition 2019 (CVPR, 2019)
为了解决两个边界框不想交时无法IoU无法衡量相似度这一问题,在论文《GIoU》中,作者引入了两个边界框最小外接矩形这一概念,具体如下图灰色虚线矩形框所示:
最小外接矩形的面积可以很好地衡量边界框之间非重合区域的相似度。
计算公式
G
I
o
U
=
I
o
U
−
C
−
A
∪
B
C
GIoU=IoU-\frac{C-A\cup B}{C}
GIoU=IoU−CC−A∪B
其中,C表示边界框A和B之间的最小外接矩形,
C
−
A
∪
B
C-A\cup B
C−A∪B比较大时,说明两个边界框非重合区域比较大、距离比较远,此时GIoU数值较小。
损失函数
L
G
I
o
U
=
1
−
G
I
o
U
L_{GIoU}=1-GIoU
LGIoU=1−GIoU
优点:
- 当IoU为0时,仍可以通过衡量两个边界框之间的距离来衡量边界框之间的相似度;
- 相对于IoU而言,GIoU不仅关注重合区域,还关注非重合区域,可以更好地反应两个边界框之间的重合度。
缺点:
- 当两个边界框为包含关系时, C = A ∪ B = max { A , B } C=A\cup B=\max\{A, B\} C=A∪B=max{A,B},此时GIoU会退化为IoU,无法区分相对的相似度(类似无交集时的缺点);
- 在GIoU中,边界框之间的距离很大程度上靠最小外接矩形体现,当两个边界框水平或者垂直时,水平或垂直移动一侧的边界框,最小外接矩形可能不发生变化,GIoU可能不变;
其中,按行来看,每行中三种情况的GIoU结果相同,但只有C的重合情况是最好的,即两个边界框是相似度最高的。
Distance IoU——DIoU
会议时间:Association for the Advancement of Artificial Intelligence, 2020 (AAAI, 2020)
针对GIoU所具有的问题,在论文《DIoU》中,作者删去了计算最小外接矩形面积的操作,引入两个边界框距离这一变量(两个边界框中心点之间的距离),利用边界框距离来辅助衡量两个边界框的相似度,具体如下图所示:
计算公式:
D
I
o
U
=
I
o
U
−
ρ
2
(
b
,
b
g
t
)
c
2
DIoU=IoU-\frac{\rho^2(b,b^{gt})}{c^2}
DIoU=IoU−c2ρ2(b,bgt)
其中
ρ
\rho
ρ表示计算向量之间的欧氏距离,
b
,
b
g
t
b,b^{gt}
b,bgt分别表示两个边界框(预测框和标签框),
c
c
c表示最小外接矩形的对角线距离,
ρ
2
(
b
,
b
g
t
)
\rho^2(b,b^{gt})
ρ2(b,bgt)对应上图中的
d
d
d。
损失函数:
L
D
I
o
U
=
1
−
D
I
o
U
L_{DIoU}=1-DIoU
LDIoU=1−DIoU
优点:
- L D I o U L_{DIoU} LDIoU可以直接最小化两个边界框之间的距离,因此收敛速度要比 G I o U GIoU GIoU快;
- 解决了GIoU中边界框包含以及编辑框水平(或垂直)带来的问题;
注:
- DIoU并没有直接利用边界框距离做运算,还对距离做了归一化处理(除以最小外接矩形的对角线长度),防止边界框尺度变化带来的干扰;
- DIoU还可以应用到NMS运算中,替换原始的IoU评价策略,使NMS的评价结果更加合理有效。
缺点:
- 边界框之间的宽高比例也是衡量两个边界框相似度的重要指标,只通过衡量边界框的距离无法体现宽高比例这一因素,具体如下图所示:
其中,三种情况DIoU数值相同,但C的相似度明显更好,DIoU的运算忽略了这种状况。
Complete IoU——CIoU
对于DIoU的缺点,作者同时设计了CIoU,在计算相似度时引入边界框的宽高比例这一因素。
计算公式
C
I
o
U
=
I
o
U
−
(
ρ
2
(
b
,
b
g
t
)
c
2
+
α
v
)
α
=
v
(
1
−
I
o
U
)
+
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
CIoU=IoU-(\frac{\rho^2(b,b^{gt})}{c^2}+\alpha v)\\ \alpha=\frac{v}{(1-IoU)+v}\\ v=\frac{4}{\pi^2}(arctan\frac{w_{gt}}{h_{gt}}-arctan\frac{w}{h})^2
CIoU=IoU−(c2ρ2(b,bgt)+αv)α=(1−IoU)+vvv=π24(arctanhgtwgt−arctanhw)2
其中
α
\alpha
α为权重,IoU越大,说明宽高比例越重要,
v
v
v用来衡量宽高比例的一致性(比例转化为角度,再衡量角度之间的欧氏距离,从而衡量比例差异)。
损失函数
L
C
I
o
U
=
1
−
C
I
o
U
L_{CIoU}=1-CIoU
LCIoU=1−CIoU
优点:
- 引入了边界框宽高比例这一因素,可以更好地衡量边界框之间的相似度。
总结
对于设计边界框相似度的计算公式,最主要的就是可以衡量两个边界框处于任意位置时的相似度,要充分考虑各种特殊情况(如边界框包含、分离等),位置不同时必须要体现出不同的相似度数值(巧合除外),这样才能更好地衡量相似度,用作损失可以更好地辅助网络优化参数。
注:以上仅是笔者个人见解,若有问题,欢迎指正