Bootstrap

Focal Loss论文笔记

摘要:

发现在训练密集的检测器的时候,遇到极端的前景背景不平衡。提出解决类别不平衡通过重塑标准的cross entropy loss,降低分配给分类很好的样本的loss。为了评估loss的有效性,我们设计和训练了一个简单的密集检测器:RetinaNet。

1.introduction

提出一个问题:简单的one-stage检测器能够取得two-stage的相似的精度吗?为了达到这个结果,证明了训练时的类别不平衡是阻碍one-stage取得高精度的主要障碍。提出了一个新的loss函数来消除这个障碍。

在rcnn中类别不平衡是被两阶段级联和启发式采样解决。proposal阶段能够很快地减少目标候选位置的数量,滤除掉了大部分背景样本。形成鲜明对比的是,one-stage检测器必须处理更多位置,在实践中相当于枚举100k个位置(覆盖了空间位置,尺度,纵横比),虽然也可以通过启发式采样来解决,但他们通常效率低下,因为训练过程仍然是易分类的背景样本占主导,这个效率低下可以通过bootstrapping或者hard example mining来典型解决。

本文提出一个新的函数来解决类别不平衡,损失函数失动态缩放的交叉熵损失,当正确类别的置信度上升的时候,缩放影子下降到0。缩放影子能够减少简单样本的贡献,能够很快关注到难样本上的模型。最后,我们注意到,focal loss的具体形式是不重要的,我们展示了其他实例化能够取得类似的结果。

在这里插入图片描述

为了验证提出的函数的有效性,设计了一个简单的onestage检测器:retinanet。他的设计特点是一个网络内的特征图金字塔和anchor的使用。设计上基于resnet101-fpn的backbone。

2.related works

类别不平衡:

one-stage的检测器对每张图片评估了10000到100000个候选位置,但是只有一些位置包含目标,这个不平衡导致两个问题:

(1)当大部分位置都是简单负样本,对训练信号没用,导致训练是效率低下的

(2)简单负样本能够压倒训练,导致模型退化。

鲁棒估计:

还有研究者关注与设计鲁棒损失函数,通过减少大错误(hard example)的样本的损失权重,来减少离群值的贡献,与之相反的是我们的focal loss关注于inliers(easy example),因为他的贡献对于整体的loss是很小的,但他的数量又很大。总而言之,focal loss与robust的作用相反。

3.focal loss

交叉熵损失函数为:CE§=-log§,p为真实标签对应的预测值,如真实标签为猫,那么p就是预测为猫的概率值。

定义focal loss为:(γ≥0)

在这里插入图片描述

注意到这个公式的两个属性:

(1):当一个样本分错了,pt很小,调节因子接近1,loss就不受影响,当pt大,此时对应于分类很好的example的loss就很小。

(2):当γ=0,focal loss =CE,发现伽马=2时效果最好。

实践中,使用了α变体:

在这里插入图片描述

他的精确形式并不重要。附录中考虑了focalloss其他形式,证明他们同样有效。还注意到将loss和sigmoid计算的到的概率p结合起来,能得到更大的数值稳定性。

3.3类别不平衡和模型初始化

初始化的时候,频繁类的loss能够主要占据总损失,导致早期的训练不稳定。为了解决这个问题,在开始训练的时候为稀有类(前景)引入一个先验的概念,用先验设置和表示p,使稀有类的样本估计很低,例如0.01。这改善了模型初始化而不是损失函数,改善 了类别不平衡时候的训练稳定性。

4 retinanet detector

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kWgthKq-1633834257434)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/81b1f40b-bf22-4267-af3b-08fe87773201/Untitled.png)]

组成:一个backbone和两个特定任务的子网。第一个子网用于目标分类,第二个子网用于bbox回归

fpn backbone:

从level3到level7建立金字塔,(3表示他的size是input的1/2的三次方),所有的金字塔level有256个channel。

anchor:

从p3到p7anchor有32x32到512x512的size。每一层的anchor比例是{1:2,1:1,2:1},每一层设置的anchor的size是之前的这个比例{20,2(1/3),2^(2/3)},中的来说每一层有9个anchor。

每个anchor分配长度为k的向量和长度为4的向量,k是目标类别数目,4由于box回归预测。和gtbox iou在0.5以上的anchor被分为真实框,0.4以下的被分为背景框,0.4-0.5之间的忽略。

box回归预测子网络,用的是rcnn的box回归方法。

推理和训练:

每一层保留1000个最高分数的预测,在通过所有层的融合和nms(阈值0.5),产生最后的预测

focal loss:

γ=2是表现最好,本文在分配的anchor上执行规范化,而不是所有的anchor,因为主要的anchor是easy negative,在focalloss下收获了微不足道的损失值。α和γ是相互作用的,γ=2,α=0.25工作最好

;