ConerNet角点网络中的角点分类损失的理解
最近重新例会汇报CenterNet网络时候忘了CorerNet网络那个损失函数了,因此被老师说看论文没看透,于是重新回来认真读一遍。它是由交叉熵损失进阶到Focal Loss然后再到这个损失函数的,我们当做啥都不懂从头温习吧。
1.交叉熵损失
L
i
=
−
[
y
i
l
o
g
y
^
i
+
(
1
−
y
i
)
l
o
g
(
1
−
y
^
i
)
]
L_{i}=-[y^{i}log\widehat{y}^{i}+(1-y^{i})log(1-\widehat{y}^{i})]
Li=−[yilogy
i+(1−yi)log(1−y
i)]
在二分类问题中,真实样本为[0,1],表示负类和正类。一般会通 过一个Sigmoid函数,输出一个概率值,反映了为正类的可能性。
输出表征当前样本标签为1的概率:
y
i
=
P
(
y
=
1
∣
x
)
y^{i}=P(y=1|x)
yi=P(y=1∣x)
输出样本标签为0的概率:
1
−
y
i
=
P
(
y
=
0
∣
x
)
1-y^{i}=P(y=0|x)
1−yi=P(y=0∣x)
极大似然的角度整合
P
(
y
∣
x
)
=
y
^
y
⋅
(
1
−
y
^
)
1
−
y
P(y|x)=\widehat{y}^{y}·(1-\widehat{y})^{1-y}
P(y∣x)=y
y⋅(1−y
)1−y
当真实样本为0,转化为
P
(
y
=
0
∣
x
)
=
1
−
y
^
P(y=0|x)=1-\widehat{y}
P(y=0∣x)=1−y
当真实样本为1,转化为
P
(
y
=
1
∣
x
)
=
y
^
P(y=1|x)=\widehat{y}
P(y=1∣x)=y
我们本质是希望P(y|x)越大越好,若y=0,
1
−
y
^
1-\widehat{y}
1−y
越大,
y
^
\widehat{y}
y
越小就越靠近0。若y=1,
y
^
\widehat{y}
y
越大就越靠近1。
对数函数不影响单调性,则变成了一开始给的公式。
2.Focal Loss
目的是为了解决one_stage目标检测中正负样本比例严重失衡问题,该损失函数降低了大量简单样本在训练中占的权重。
样本中会存来大量的easy nagetive example(对于负样本就是与0近的,对于正样本就是与1近的),它们会对loss起主要贡献作用,会主导梯度方向,这样网络就学不到什么有用信息,对object准确分类造成影响,淹没少量正样本影响
α——平衡交叉熵
为交叉熵定一个权重,其中权重因子为相反类的比重(负样本越多α越大,1-α越小)。负样本越多,给它权重越小用来降低负样本影响。
L
f
l
=
−
α
l
o
g
(
P
t
)
=
{
−
α
l
o
g
y
′
−
(
1
−
α
)
l
o
g
(
1
−
y
′
)
L_{fl}=-\alpha log\left ( P_{t} \right )=\left\{\begin{matrix} -\alpha logy{}' \\ -(1-\alpha) log(1-y{}') \end{matrix}\right.
Lfl=−αlog(Pt)={−αlogy′−(1−α)log(1−y′)
( 1 − y ) γ (1-y)^{\gamma} (1−y)γ简单与困难样本
L
f
l
=
−
α
l
o
g
(
P
t
)
=
{
−
α
(
1
−
y
′
)
γ
l
o
g
y
′
−
(
1
−
α
)
y
′
γ
l
o
g
(
1
−
y
′
)
L_{fl}=-\alpha log\left ( P_{t} \right )=\left\{\begin{matrix} -\alpha(1-y{}') ^{\gamma }logy{}' \\ -(1-\alpha) y{}'^{\gamma }log(1-y{}') \end{matrix}\right.
Lfl=−αlog(Pt)={−α(1−y′)γlogy′−(1−α)y′γlog(1−y′)
当y为正样本,y为简单样本则
(
1
−
y
)
γ
(1-y)^{\gamma}
(1−y)γ很小,对损失影响小;当y为负样本,
y
γ
y^{\gamma}
yγ很小,对损失影响很小。简单样本的处理是为了让人关注易分错的样本。
3.CornerNet的损失函数
L
d
e
t
=
−
1
N
∑
C
c
=
1
∑
H
i
=
1
∑
W
j
=
1
{
(
1
−
P
c
i
j
)
α
l
o
g
P
c
i
j
(
1
−
y
c
i
j
)
β
P
c
i
j
α
l
o
g
(
1
−
y
′
)
L_{det}=-\frac{1}{N}\sum_{C}^{c=1}\sum_{H}^{i=1}\sum_{W}^{j=1}\left\{\begin{matrix} (1-P_{cij}) ^{\alpha }logP_{cij}\\ (1-y_{cij})^{\beta } P_{cij}^{\alpha}log(1-y{}') \end{matrix}\right.
Ldet=−N1C∑c=1H∑i=1W∑j=1{(1−Pcij)αlogPcij(1−ycij)βPcijαlog(1−y′)
保留了Focal Loss中对简单样本损失减小;对于
y
c
i
j
=
e
−
x
2
+
y
2
2
σ
2
y_{cij}=e^{^{-\frac{x^{2}+y^{2}}{2\sigma ^{2}}}}
ycij=e−2σ2x2+y2,离中心点越近,
y
c
i
j
y_{cij}
ycij越接近1;离中心点越远,
y
c
i
j
y_{cij}
ycij越远离1;则近的点
1
−
y
c
i
j
1-y_{cij}
1−ycij小,远的点
1
−
y
c
i
j
1-y_{cij}
1−ycij大。与中心越近的块与正样本更相似与GT拥有相对高的IoU,负样本训练则不需要过多关注这些区域,因此降低它的权重。