来源
:B站霹雳吧啦Wz
学习路线
网络讲解
读原文
跑作者代码
分析代码:网络搭建,数据处理,损失计算
生成bbox
1)将一幅图像分成SxS个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。
2)每个网格要预测B个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测c个类别的分数。
S = 7 B = 2 C= 20 30个channel
xywh均为相对值,(0,1)
confidence:可以理解为Pr(Object) * IoU,Pr(Object)取0或者1,有无目标
Pr
(
C
l
a
s
s
i
∣
O
b
j
e
c
t
)
∗
Pr
(
O
b
j
e
c
t
)
∗
I
O
U
pred
truth
=
Pr
(
C
l
a
s
s
i
)
∗
I
O
U
pred
truth
\operatorname{Pr}\left(\right. Class_{i} \mid Object) * \operatorname{Pr}(Object) * \mathrm{IOU}_{\text {pred }}^{\text {truth }}=\operatorname{Pr}\left(\right.Class\left._{i}\right) * \mathrm{IOU}_{\text {pred }}^{\text {truth }}
Pr(Classi∣Object)∗Pr(Object)∗IOUpred truth =Pr(Classi)∗IOUpred truth
网络结构
损失函数
bounding box损失
λ
coord
∑
i
=
0
S
2
∑
j
=
0
B
1
i
j
obj
[
(
x
i
−
x
^
i
)
2
+
(
y
i
−
y
^
i
)
2
]
+
λ
coord
∑
i
=
0
S
2
∑
j
=
0
B
1
i
j
obj
[
(
w
i
−
w
^
i
)
2
+
(
h
i
−
h
^
i
)
2
]
\begin{array}{l}\lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(x_{i}-\hat{x}_{i}\right)^{2}+\left(y_{i}-\hat{y}_{i}\right)^{2}\right] \quad+\lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(\sqrt{w_{i}}-\sqrt{\hat{w}_{i}}\right)^{2}+\left(\sqrt{h_{i}}-\sqrt{\hat{h}_{i}}\right)^{2}\right]\end{array}
λcoord ∑i=0S2∑j=0B1ijobj [(xi−x^i)2+(yi−y^i)2]+λcoord ∑i=0S2∑j=0B1ijobj [(wi−w^i)2+(hi−h^i)2]
后面开根号为了提升小目标的检测效果,若不改变,偏移相同距离误差一样大,是不合理的。应该小目标的更大一些
confidence损失
+
∑
i
=
0
S
2
∑
j
=
0
B
1
i
j
obj
(
C
i
−
C
^
i
)
2
+
λ
noobj
∑
i
=
0
S
2
∑
j
=
0
B
1
i
j
noobj
(
C
i
−
C
^
i
)
2
\begin{array}{l}+\sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left(C_{i}-\hat{C}_{i}\right)^{2} +\lambda_{\text {noobj }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {noobj }}\left(C_{i}-\hat{C}_{i}\right)^{2}\end{array}
+∑i=0S2∑j=0B1ijobj (Ci−C^i)2+λnoobj ∑i=0S2∑j=0B1ijnoobj (Ci−C^i)2
前面计算正样本损失,后面计算负样本损失
classes损失
+
∑
i
=
0
S
2
1
i
obj
∑
c
∈
classes
(
p
i
(
c
)
−
p
^
i
(
c
)
)
2
+\sum_{i=0}^{S^{2}} \mathbb{1}_{i}^{\text {obj }} \sum_{c \in \text { classes }}\left(p_{i}(c)-\hat{p}_{i}(c)\right)^{2}
+∑i=0S21iobj ∑c∈ classes (pi(c)−p^i(c))2
缺点:
对小目标检测很差
没有鲁棒性,对于新的尺寸的目标效果也很差
错误原因来自于定位不准确