background
任务:寻找二级检测网络准确率高于一级检测网络的原因,并且做出改进,使一级检测网络的精度达到二级水平
关键词:Focal Loss
Introduction
传统的一级检测网络,精度明显低于二级检测网络,作者通过实验发现,造成精度下降的主要原因是前景类和背景类不均匀导致的,而二级检测网络有对rois有再选择的过程,一定程度上缓解了不平衡因素的影响。
比如,如果背景类很多,而且背景类中的大部分属于easy example(比如有百分之九十的概率是背景),传统的交叉熵损失函数:
虽然这种easy example造成的损失很少,但是实际的检测任务中这种类别却含有很多,所以积累的损失值也是十分巨大,而背景类中的hard example(比如有百分之十是背景),虽然造成的损失值很大,但是实际检测任务中这种 hard example却很少,所以神经网络更加关心easy example,导致一级检测网络的精度很低。
而二级检测网络中对rois有一次前景和背景的挑选,类似引入一个平衡因子,缓解了不平衡因素导致的损失函数的畸形
LOSS
Balanced Cross Entropy
首先对P进行一次修改:
所以:
C
E
(
p
t
)
=
−
l
o
g
(
p
t
)
CE(p_{t})=-log(p_{t})
CE(pt)=−log(pt)
与
p
t
p_{t}
pt类似,正类别为
α
\alpha
α,负类别为
1
−
α
1-\alpha
1−α,所以最后记为
α
t
\alpha_{t}
αt
加入平衡因子:
C
E
(
p
t
)
=
−
α
t
l
o
g
(
p
t
)
CE(p_{t})=-\alpha_{t}log(p_{t})
CE(pt)=−αtlog(pt)
α
\alpha
α可以通过逆向类频率确定或交叉验证确定
Focal Loss
上面的
α
\alpha
α虽然平衡了positive 和negative的不平衡,但是没有平衡positive/negative中的hard ,easy example,所以作者再次引入一平衡因子
F
L
(
p
t
)
=
−
(
1
−
p
t
)
γ
l
o
g
(
p
t
)
FL(p_{t})=-(1-p_{t})^{\gamma}log(p_{t})
FL(pt)=−(1−pt)γlog(pt)
这样就将hard ,easy example的损失贡献做了加权
如同,loss更加关注概率小的example
最终的LOSS:
F
L
(
p
t
)
=
−
α
t
(
1
−
p
t
)
γ
l
o
g
(
p
t
)
FL(p_{t})=-\alpha_{t}(1-p_{t})^{\gamma}log(p_{t})
FL(pt)=−αt(1−pt)γlog(pt)
其中
γ
∈
[
0
,
5
]
\gamma\in[0,5]
γ∈[0,5]
Model
FCOS: Fully Convolutional One-Stage Object Detection论文笔记有详细介绍
作者主要还是利用特征金字塔来作为一级检测网络的主干
另外两个子网络分别用于分类和targets的回归
Experiment
实验中发现
γ
=
2
\gamma=2
γ=2时的实验效果比较好
Learn from paper
作者通过实验发现大量的不平衡样本导致模型最后效果不够好,通过对概率的一次加权运算,解决了问题,十分的创新。
对于loss的贡献会影响模型的关注点,可以通过修改贡献值来使模型关注点改变。