Focal Loss的阅读笔记

重新看这篇文章是因为最近看到一篇论文FoveaBox算法的基础框架是RetinaNet,所以干脆重新记录一下。

1.Focal loss:

在文章中提出 one-stage 的检测模型在精度上没有two-stage的检测模型好的原因是类别不平衡,Focal loss 的提出是为了解决检测中简单-困难样本不均衡的问题【提高困难样本对模型的影响】。

------------------------------------------------------------------------------------------------------------------------------------------------------------------

关于类别不平衡:

一幅图像中目标是有限的,因此生成的bbox大部分是属于background,少数属于ground truth,这就是类别不平衡。

针对one-stage的检测,可以知道是直接对一开始生成的bbox进行分类回归,存在过多的容易分类的负样本,虽然能加快检测精度,但是因为类别不平衡容易使得训练失败,影响精度。

针对two-stage的检测,可以知道因为有RPN网络的存在首先筛选了一开始生成的bbox,缓解了bbox中类别不平衡的程度

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Focal Loss的公式如下:

                                                         FL(p_{t})=-a_{t}(1-p_{t})^{r}log(p_{t})=a_{t}(1-p_{t})^{r}CE(p_{t})

主要的改进:

  • 原有的交叉熵loss之前添加了(1-p_{t})^{r}项,其中r是大于0的,该因子的存在可以区分简单-困难样本。

1)当样本为困难样本,即p_{t}非常小时,影响因子(1-p_{t})^{r}趋近于1,样本对模型的影响近乎不变

2)当样本为非困难样本,即p_{t}趋近于1时,影响因子(1-p_{t})^{r}趋近于0,则样本对模型的影响会降低

3)r可以改变简单样本对模型的影响权重:

      当r=0时, FL(p_{t})=CE(p_{t});当r增大时,影响因子(1-p_{t})^{r}的影响力也增加

      【在论文实验中,r为2时,实验效果最好】

  • a{_{t}}因子的存在可以平衡正负样本。

对于ground truth来说为a{_{t}},background为1-a{_{t}}

      【在论文实验中,a{_{t}}为0.25时,实验效果最好】

------------------------------------------------------------------------------------------------------------------------

在论文中还有几个结果:

1)一般默认情况下,二进制分类中正负样本的分类初始概率是相同的,在这种初始化中,由于类别不平衡,会造成早期训练的不稳定(即,在样本中占有数量多的会在一开始起主导作用,造成不稳定)

解决方法:设置初始化的值。

在论文里提出,在一开始,引入了前景(数量少的类)类的先验概率概念,用\pi表示先验概率。并且将这个概率值设置为一个较低的数值(文中取:\pi=0.01),使得初始化时,难检测样本(量少的样本/前景样本)的概率较低,能够保留这些样本对模型的影响力,能够缓解早期不稳定的现象。

在实验过程中,除了子网络的最后一层的所有新的卷积层都采用初始化参数:b=0, \sigma =0.01;

对于子分类网络的最后卷积层,将偏差初始化设置为b=-log((1-\pi )/\pi )

 

2)r=2a=0.25时的实验结果最好,两个参数要一起设置。

 

------------------------------------------------------------------------------------------------------------------------

2.RetinaNet是为了验证Focal loss的实验框架:

实质上是一个基于FPN思想的one-stage检测框架,最后的loss函数是Focal loss。

RetinaNet 网络是由一个主网络和两个特定的子任务网络组成,是one-stage检测模型。

主网络:计算整个输入图像的卷积特征图

第一个特定子网络:对对象分类;第二个特定子网络:对边界框进行回归。

1)ResNet+FPN网络:主网络,构建多尺度特征(P3-P7)金字塔,用于检测不同尺度比例的物体。

2)Anchors:与RPN中的类似。

在P3-P7尺度上分别有322-5122个区域。使用的anchors尺度比例为{1:2; 1:1, 2:1}.此外还添加了\left \{ 2^{^{0}},2^{^{1/3}},2^{^{2/3}} \right \},这样子的操作能提升AP。假设对象类别为K,则A个anchors中的每个anchor都对应了长度为K的向量和4个边框回归的向量。

3)分类子网络:预测A个anchors与K个对象之间存在的概率。该网络是连接到每个FPN尺度的小型FNC网络。

4)回归子网络:与分类子网络并行,也是一个小的FNC结构,回归anchor的边框偏移量。

  • 对每个尺度的特征图来说,两个子网络的参数都是共享的。
  • 两个子网络之间的参数是互相独立的。

猜你喜欢

转载自blog.csdn.net/weixin_38715903/article/details/89491337