FAIR. ICCV2017 Oral Kaiming He & RBG
1.Motivation
一直以来,one-stage detector都以快著称,yolo刚发布的时候表明了是主打速度的,但是这些one-stage detector的精度要比two-stage detector,比如faster rcnn差不少。本文的目的就是为了探讨为什么one-stage detector相比two-stage detector精度要差。
2.Contribution
本文的贡献在于指出了one-stage detector精度不高的原因在于extreme forground-background class imbalance,这种不平衡导致了训练的时候存在大量的easy examples(包括easy positive和easy negative,但主要是easy negative),这些easy example虽然每一个的loss会比较小,但是因为数量巨大,主导了最终的loss,导致最后训练出来的是一个degenerated model。
为此,作者提出了一个dynamically scaled cross entropy loss,即focal loss来替换原来detector classification部分的standard cross entropy loss。通过降低训练过程中easy example的权重,提高了模型的训练效果,使得one-stage detector在精度上能够达到乃至超过two-stage detector。
3.Focal Loss
3.1standard cross entropy loss
原来的分类loss是各个训练样本交叉熵的直接求和,也就是各个样本的权重是一样的。如下图所示:
CE表示cross entropy,p表示预测样本属于1的概率,y表示label,y的取值为{+1,-1},这里仅仅以二分类为例,多分类分类以此类推。
为了表示简便,我们用p_t表示样本属于true class的概率。所以(1)式可以写成
我们可以将cross entropy loss的曲线画出来,如下图最上面这根蓝线所示:
从蓝线我们可以看出来,对于well-classified样本(true class的预测概率大于0.6为例),他们的loss仍然不算小。对于yolo/ssd这类one-stage detector,他们没有rpn这类proposal网络,而是对图像上densely sampled window进行检测,这样的话负样本的数量会远远超过正样本的数量,而负样本里面绝大多数又是easy example,也就是说,对于one-stage detector来说,虽然单个easy example的loss不大,但是所有easy example的loss加起来就会远远超过hard example的loss了。当hard example的loss对于模型的更新没有什么影响的时候,得到的分类模型的分类边界往往不够准确,对于hard example比较容易分错。
3.2balanced cross entropy
既然one-stage detector在训练的时候正负样本的数量差距很大,那么一种常见的做法就是给正负样本加上权重,负样本出现的频次多,那么就降低负样本的权重,正样本数量少,就相对提高正样本的权重,如下式所示: