Focal Loss for Dense Object DetectionTsung-Yi Lin Priya Goyal Ross Girshick Kaiming He Piotr Dollar´Facebook AI Research (FAIR),最近出的一篇做目标检测的工作,本质上是个利用loss function解决样本imbalance问题的工作。
Motivation
作者说是为了探究为什么ssd、yolo之类的one-stage目标检测网络不如rcnn系列的two-stage检测网络框架效果好,提出了原因在于one-stage训练的过程中没有two-stage的RPN过程来做cascade,所以会有大量的简单负样本在分类器的训练过程中导致训练模型结果不好。采用online hard sample mining(OHEM)的方式是比较通用的方法来解决imbalance的问题,作者设计了一个叫做focal loss的loss function来解决同样的问题,可以认为是OHEM的一个替代方案。
基本原理
先上个网络结构图,目前主要的one-stage检测框架如下,一个FPN网络带不同scale和shape的anchor,然后不同scale的feature map的组合接出两个子网络,一个用来回归bbox的位置,一个用来回归这个位置所对应的物体分类结果用于判定是否是一个误检。上面提到的样本不均衡的问题就是在这个class subnet上出现的,这会导致这个子网络的预测结果不够好,使得整体检测结果下降。
所以focal loss就是用来代替这个class subnet的损失函数的,focal loss是交叉熵损失函数(cross entropy,公式2)的变种,
传统的应对样本不均衡的办法就是在这个loss上面加个参数a,通常是样本比例取反,这样来保证数量少的样本获得较大的weight来抵消数量少的影响。focal loss的定义是:
可以看到在原有的基础上增加了一个预测概率p和超参数r,其中p的存在就是如果这个样本预测的已经很好了(也就是p->1)那么这个样本产生的loss就接近于0,r的作用是对这个接近的速度做控制,把loss画出来如下图:
可以看出r越大,预测越正确的样本loss下降的越快&