Focal loss所解决的问题是在object detection领域由正负样本不平衡,而导致one-stage detector方法的准确率不如two-stage detector。one-stage detector主要是在一张图像上生成成千上万的candidate locations,这些candidate location中包含所需要的检测目标只有一部分区域即正样本,大多数区域是与检测目标不相关的背景即负样本。这样就会造成candidate location中,正样本数远远小于负样本数。根据交叉熵函数:
从上面公式可以做出图像
y’表示分成正样本的概率,可以看出当y’越大时,loss越小。所以当真值为1时,y’越大说明样本容易分类为标签1,所以为简单样本,loss越小,对模型更新贡献较少。y’越小说明样本不容易分类成标签1,所以为复杂样本,loss会大,对模型更新显著。当真值为0时,y’越大说明模型容易把错样本分成正样本,loss=-log(1-y’),loss偏大,模型容易更新优化。y’越小说明模型容易正确地把样本正确地分为负样本,loss偏小,即对模型更新效果不显著。这样一来,在one-stage detector中会出现以下问题:
1.当数据集中简单正样本偏多,由于loss偏低则模型更新较为缓慢,且可能无法优化至最优。
2.在candidate location中,作为背景的负样本偏多,且多是容易分类,导致模型优化方向会偏向于容易出检测负样本,难检测出正样本,且训练过程中loss偏低模型迭代缓慢。
Focal loss的baseline
在原有的基础之上,设
,则
在这个loss前加一个平衡因子alpha
以此来控制正负本的loss权重,如a=0.4,则正样本贡献为0.4,负样本贡献为0.6。
有了这样的正负样本控制因子之后,并不能控制困难和简单样本的权重。
因此focal loss在此之上又增加了一个Focusing parameter,gamma
即,此时loss函数公式为
我们可以看出,pt的值越大,则说明为简单样本,越大 ,
值越小。
值越小,则说明为困难样本,
越小,
越大,则说明为困难样本。
通过focal loss,可以使得:
1.平衡因子alpha控制正负样本对总loss的共享权重,来平衡模型对正负样本的检测能力。
2.注意因子gamma将模型中难分的正样本的loss权重调高,loss贡献较多,使模型对难分的样本分类能力增强。