1.MSE方式
最早的bbox_loss采用的是MSE方法
L
MSE
=
(
x
1
−
x
2
)
2
+
(
y
1
−
y
2
)
2
+
(
w
1
−
w
2
)
2
+
(
h
1
−
h
2
)
2
\mathcal{L}_{\text {MSE}} = (x1-x2)^2 + (y1-y2)^2 + (w1-w2)^2 +(h1-h2)^2
LMSE=(x1−x2)2+(y1−y2)2+(w1−w2)2+(h1−h2)2
这种方式计算损失值是检测框的“代理属性”—— 距离,而忽略了检测框本身最显著的性质——IoU。
计算两者的重叠占比,才是我们更加想要去优化的属性,而不仅仅是距离。
2.IOU方式
L
IoU
=
1
−
∣
B
∩
B
g
t
∣
∣
B
∪
B
g
t
∣
\begin{array}{l} \mathcal{L}_{\text {IoU}}=1-\frac{\left|B \cap B^{g t}\right|}{\left|B \cup B^{g t}\right|} \\ \end{array}
LIoU=1−∣B∪Bgt∣∣B∩Bgt∣
IOU就是反映预测框与真实框的重叠情况
从几何上来看就是两者交集的面积比两者并集的面积,当这个值越大,代表两者越接近,反映在bbox_loss上就会越小。
但是这种方式确有着两个致命的缺点,无法反映1.包含及2.完全未重叠
如下图所示
- 如左边这种情况,两者虽然不重叠但是,距离1w米与距离1米,他们应该是不同的,但是反映在iou上,都为0,这时的bbox_loss为1,这就不能体现出距离的关系。
- 如右边这种情况,两者体现一种包含关系,这时的iou为1,bbox_loss=0,但是他们的中心点没有对准,且预测框跟真实框的大小也不同,这应该是要去优化的,很显然,也不能体现出包含情况下的优化。
3.GIOU
于是cvpr2019年giou横空出世,他的公式如下:
L
G
I
o
U
=
1
−
I
o
U
+
∣
C
−
B
∪
B
g
t
∣
∣
C
∣
\mathcal{L}_{G I o U}=1-I o U+\frac{\left|C-B \cup B^{g t}\right|}{|C|}
LGIoU=1−IoU+∣C∣∣C−B∪Bgt∣
C代表两者接起来的矩形,可以看到,当两者不相交时,IOU为0,但后面的那一项,两者距离越远,越接近于1,于是giou_loss也就越大,这就很好的解决了IOU_loss的第一个缺点,但是同样的第二个缺点并没有解决。
4.DIOU
论文地址:https://arxiv.org/abs/1911.08287
代码地址:https://github.com/Zzh-tju/DIoU
为了解决3中的问题,aaai2020年diou横空出世,它的公式如下
L
D
I
o
U
=
1
−
I
o
U
+
ρ
2
(
b
,
b
g
t
)
c
2
\mathcal{L}_{D I o U}=1-I o U+\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}}
LDIoU=1−IoU+c2ρ2(b,bgt)
其中
ρ
2
(
b
,
b
g
t
)
c
2
\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}}
c2ρ2(b,bgt)
分子代表预测框与真实框他们中心点之间的距离,而分母则代表两者形成的外接矩形的对角线长度。
可以看到这种方式,两者不重合时,距离越远比值越接近1,此时loss=1+1=2,随着两者距离的接近,loss慢慢下降。
在两者包含的时候
只有两者中心点完全一致时,上述项为0,可以看到也解决了部分包含的问题。
那么还剩下最后一个问题:两者重合且中心点也重合时时,预测框与真实框的宽高不一致,出现大框包小框该如何优化?
5.CIOU(完美IOU)
CIOU是DIOU同一篇论文提出的。先看公式
L
C
I
o
U
=
1
−
I
o
U
+
ρ
2
(
b
,
b
g
t
)
ρ
2
+
α
v
\mathcal{L}_{C I o U}=1-I o U+\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{\rho^{2}}+\alpha v
LCIoU=1−IoU+ρ2ρ2(b,bgt)+αv
v
=
4
π
2
(
arctan
w
g
t
h
g
t
−
arctan
w
h
)
2
v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{g t}}-\arctan \frac{w}{h}\right)^{2}
v=π24(arctanhgtwgt−arctanhw)2
α
=
v
(
1
−
I
o
U
)
+
v
\alpha=\frac{v}{(1-I o U)+v}
α=(1−IoU)+vv
在这里
α
\alpha
α你可以认为作者设置的一个权重系数,加入
α
v
\alpha v
αv,引入了宽高比,从而去优化预测框与真是框之间的宽高不同问题,至此,这个问题基本可以说解的很完美了,这里看一个性能对比。
这是作者在YOLOV3网络使用不同的bbox_loss所带来的性能提升,可以看到CIOU相对于GIOU有了大约3%左右的性能提升。