论文目标
目标检测算法主要分为两类:one-stage detector和two-stage detector。
one-stage detector:直接通过卷积神经网络提取特征,预测目标的分类与定位;
two-stage detector:先生成候选区域(Region Proposal),再通过卷积神经网络预测目标的分类与定位;
作者提出focal loss的出发点也是希望one-stage detector可以达到two-stage detector的准确率,同时不影响原有的速度。
核心思想
既然有了出发点,那么就要找one-stage detector的准确率不如two-stage detector的原因,作者认为原因是:样本的类别不均衡导致的。
我们知道在object detection领域,一张图像可能生成成千上万的candidate locations,但是其中只有很少一部分是包含object的,这就带来了类别不均衡。那么类别不均衡会带来什么后果呢?引用原文讲的两个后果:
(1) training is inefficient as most locations are easy negatives that contribute no useful learning signal;
(2) en masse, the easy negatives can overwhelm training and lead to degenerate models.
什么意思呢?负样本数量太大,占总的loss的大部分,而且多是容易分类的,因此使得模型的优化方向并不是我们所希望的那样。
因此针对类别不均衡问题,作者提出一种新的损失函数:focal loss,这个损失函数是在标准交叉熵损失上修改得到的。这个函数可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。
在介绍focal loss之前,先来看看交叉熵损失,这里以二分类为例。公式如下:
因为是二分类,p表示预测样本属于1的概率(范围为0-1),y表示label,y的取值为{1,0}。
当真实label是1,也就是y=1时,假如样本x预测为1这个类的概率p=0.6,那么损失就是,注意这个损失是大于等于0的。如果p=0.9,那么损失就是-log(0.9),所以p=0.6的损失要大于p=0.9的损失;当背景label是0,也就是y=0时,假如样本y预测为0这个类的概率为0.4,那么损失就是
。
为了方便,用pt代替p,如下公式(2)。这里的pt就是前面公式(1)中的横坐标。
为了表示简便,我们用pt表示样本属于true class的概率。所以(1)式可以写成
接下来介绍一个最基本交叉熵的改进,也将作为本文实验的baseline,既然one-stage detector在训练的时候正负样本的数量差距很大,那么一种常见的做法就是给正负样本加上权重,负样本出现的频次多,那么就降低负样本的权重,正样本数量少,就相对提高正样本的权重。因此可以通过设定的值来控制正负样本对总的loss的共享权重。
取比较小的值来降低负样本(多的那类样本)的权重。
显然,公式3可以控制正负样本的权重,但是没法控制容易分类和难分类样本的权重,于是就有了focal loss:
这里的γ称作focusing parameter,γ>=0。
称为调制系数(modulating factor)
为什么要加上这个调制系数呢?目的是通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。
绘制图看如下Figure1,横坐标是pt,纵坐标是loss。CE(pt)表示标准的交叉熵公式,FL(pt)表示focal loss中用到的改进的交叉熵。Figure1中γ=0的蓝色曲线就是标准的交叉熵损失。
这里介绍下focal loss的两个重要性质:
1)当一个样本被分错的时候,Pt是很小的,Pt→0,那么(1-Pt)接近1, 调制系数趋于1,损失不被影响;当Pt→1,那么(1-Pt)接近0, 调制系数
趋于0,那么分的比较好的样本的权值就被调低了,也就是对于总的loss的贡献很小。
2)当γ=0的时候,focal loss就是传统的交叉熵损失,当γ增加的时候,调制系数也会增加。 专注参数γ平滑地调节了易分样本调低权值的比例。γ增大能增强调制因子的影响,实验发现γ取2最好。直觉上来说,调制因子减少了易分样本的损失贡献,拓宽了样例接收到低损失的范围。当γ一定的时候,比如等于2,一样easy example(pt=0.9)的loss要比标准的交叉熵loss小100+倍,当pt=0.968时,要小1000+倍,但是对于hard example(pt < 0.5),loss最多小了4倍。这样的话hard example的权重相对就提升了很多。这样就增加了那些误分类的重要性。
focal loss的两个性质算是核心,其实就是用一个合适的函数去度量难分类和易分类样本对总的损失的贡献。
作者在实验中采用的是公式5的focal loss(结合了公式3和公式4,这样既能调整正负样本的权重,又能控制难易分类样本的权重):
在实验中a的选择范围也很广,一般而言当γ增加的时候,a需要减小一点(实验中γ=2,a=0.25的效果最好)
————————————————
版权声明:本文为CSDN博主「逍遥王可爱」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34199326/article/details/83824778