focal loss学习笔记

背景
目标检测中,one-stage相比two-stage,要在更稠密的样本中进行筛选和学习(即Dense Predict),由于后者基于region proposal的思想,已经初筛掉大部分easy background(在RCNN和Fast RCNN中使用selective search,在Faster RCNN中使用RPN)。
因此前景背景(foreground-background)的不平衡(imbalance)是one-stage训练时的主要问题。

one-stage在训练时都会面临class-imbalance的问题,会导致两个弊端:

  1. 训练不高效,大多数位置都是Easy Negative,贡献很少的有用学习信号(useful learning signal)
  2. Easy Negative 会主导(overwhelm)训练,导致退化的模型(degenerate models)

常用的解决思路是用难分类负样本挖掘(hard negative mining),即按照正负样本的比例,挑选Loss值最大的负样本,与正样本进行训练。
例如当前图像中,正样本有3,提前设置的正负比例为7:1,则挑选21个Loss最大的负样本,与这3个正样本进行训练(共24个)。

而focal loss能根据每个Sample置信度的大小,动态地缩放其对应权重。随着正确类别的置信度提高,它的尺度因子会衰减置零。也就是说,这个尺度因子能自动降低训练时easy samples的贡献占比,让模型专注于hard samples。


Cross Entropy Loss
常用的CELoss为:
C E ( p , y ) = { − log ⁡ ( p ) i f   y = 1 − log ⁡ ( 1 − p ) o t h e r w i s e . CE(p, y) = \left\{ \begin{aligned} &-\log(p) && if \ y=1 \\ &-\log(1-p) && otherwise. \end{aligned} \right. CE(p,y)={log(p)log(1p)if y=1otherwise.
为方便标记,记 p t p_t pt
p t = { p i f   y = 1 1 − p o t h e r w i s e . p_t= \left\{ \begin{aligned} &p && if \ y=1 \\ &1-p && otherwise. \end{aligned} \right. pt={p1pif y=1otherwise.
重写CELoss为:
C E ( p , y ) = C E ( p t ) = − log ⁡ ( p t ) CE(p, y) = CE(p_t)=-\log(p_t) CE(p,y)=CE(pt)=log(pt)
当大量的easy samples loss叠加,这些小的损失值可以主导那些稀少的、缺乏训练的类。

Balanced Cross Entropy
针对class imbalance的常用方法是用一个权重参数α∈[0,1]对类别进行权重的倾斜。
对y=1(数量较少)的类别提供较大的权重,对背景(数量较多)的类别提供较小的权重。
Balanced CELoss:
α t = { α i f   y = 1 1 − α o t h e r w i s e . \alpha_t= \left\{ \begin{aligned} &\alpha && if \ y=1 \\ &1-\alpha && otherwise. \end{aligned} \right. αt={α1αif y=1otherwise.
C E ( p t ) = − α t log ⁡ ( p t ) CE(p_t) = -\alpha_t\log(p_t) CE(pt)=αtlog(pt)
然而这种权重方式太依赖超参数α的选定,且只能缓解样本数量的不平衡问题,不能缓解样本难易程度的问题。
例如某个背景样本缺很难学,这种情况则无法优化。

Focal Loss
因此作者从难易的角度入手,旨在为学得好的样本提供更小的权重(Loss小),学得糟糕的样本提供更大的权重(Loss大)。
这种学习的角度,即能有效较低易样本对模型训练的主导,又能缓解样本类别数量不平衡的问题。因为类别数量的不平衡,通常情况下也会让模型对数量多的类别学得更好(因为拥有足够的训练),Focal Loss就能对易且量大的samples降低影响力。

Focal Loss:
F L ( p t ) = − ( 1 − p t ) γ log ⁡ ( p t ) FL(p_t)=-(1-p_t)^\gamma\log(p_t) FL(pt)=(1pt)γlog(pt)
下图为γ取不同值时的loss值:
在这里插入图片描述
当label为正样本,模型预测为正的置信度很低时,这可以理解为难样本, p t = p p_t=p pt=p就很小。
当label为负样本,模型却预测为正的置信度很高,这也可以理解为难样本,同时 p t = 1 − p p_t=1-p pt=1p也是很小。
所以我们可以用 p t p_t pt的大小来统称难易样本,且不论正负样本。
p t p_t pt小代表难样本, p t p_t pt大代表易样本。
那么显而易见,难样本有更大的权重 ( 1 − p t ) γ (1-p_t)^\gamma (1pt)γ,易样本有更小的权重。

举个例子,当γ=2时, p t = 0.9 p_t=0.9 pt=0.9的样本损失比CELoss的损失要小100倍,大大降低了高置信度样本的影响力。

结合α-balanced的focal loss变体:
F L ( p t ) = − α t ( 1 − p t ) γ log ⁡ ( p t ) FL(p_t)=-\alpha_t(1-p_t)^\gamma\log(p_t) FL(pt)=αt(1pt)γlog(pt)
α t \alpha_t αt ( 1 − p t ) γ (1-p_t)^\gamma (1pt)γ共同平衡loss的权重,论文作者建议:α=0.25,γ=2.0。
当γ取2时,难样本的权重已经相对较大,再用α=0.25来平衡一下过大的损失。

综上,在focal loss中,α的作用可以理解为不让难样本的权重过大,γ的作用则是不让易样本主导模型的训练。


参考文献
知乎文章,含focal loss和RetinaNet训练细节:读Focal Loss

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值