Focal Loss for Dense Object Detection
焦点损失(Focal loss)的提出的观点是:
-
作者发现单阶段的检测方式(SSD or YOLO)相对于两阶段检测(Faster-RCNN)的检测速度是很快,但是准确率不足。为什么呢?
-
作者认为是因为样本类别不均衡问题
样本类别不均衡包含前后背景的样本不均衡(目标检测会生成很多的候选区域,但是实际包含目标的很少,所以前后背景的样本数目分布不均) 也包括其他类别的影响(这里借用一下EQLloss所提及的观点“其他类别实例的正样本是当前类的负样本”)。
-
负样本数目太多占据loss的较多权重,并且有些大多数比较容易进行区分(前后背景,还有一些简单目标实例),而focal loss提出就是为了减少易分类样本的权重,让模型偏向于难分类的样本
很有意思,让模型偏向于难分类的样本,这个难分类就可以的难检测的目标或者总的实例数目不多的目标(长尾学习),所以在长尾学习领域Focal loss也可以有一定作用,但是要仔细思考自己的数据集中难检测目标是什么?是因为实例数目少而难检测,还是本身目标小干扰大的难坚持目标
Focal loss的工作原理:
CE loss:
交叉熵损失是一个分类损失,具体的公式如下(比较简单没什么说的):
a t {a_{t}} at-CEloss:
在类不平衡上增加一个权重 a t {a_{t}} at ,可以通过 a t {a_{t}} at 的值对正负样本的总loss共享权重, a t {a_{t}} at的值取值小能够有效的降低负样本(多的类的样本)权重。
( 1 − p t ) r {(1-p_{t})^{r}} (1−pt)r CEloss:
(
1
−
p
t
)
r
{(1-p_{t})^{r}}
(1−pt)r 称为调制系数,目的是通过减少易样本的权重,从而使得模型在训练时更加专注难分类的样本。
这里的易样本即是容易训练的样本(区分或识别),同样要仔细思考一下在自己的任务中,易样本是不是要减少权重
Focal loss:
Focal loss =
(
1
−
p
t
)
r
{(1-p_{t})^{r}}
(1−pt)r-CEloss +
a
t
{a_{t}}
at-CEloss