Focal Loss for Dense Object Detection

Focal Loss旨在解决目标检测中的一类关键问题:类不平衡。传统的交叉熵损失函数在处理大量易分类背景样本时效率低下,导致训练过程中难例被忽视。Focal Loss通过动态调整损失权重,减少易分类样本的贡献,重点关注难例。在实验中,Focal Loss被用于训练RetinaNet检测器,该检测器在保持高准确率的同时,速度可与两阶段检测器相媲美。
摘要由CSDN通过智能技术生成

https://arxiv.org/pdf/1708.02002.pdf

Focal Loss for Dense Object Detection

Abstract

目标检测目前最高的准确率是基于两阶段的R-CNN,其分类器被应用于一个稀疏的候选目标位置集合。相比之下,如果将常规的,密集的可能目标位置输入到单一阶段的检测器里可能会使得模型更简洁,训练更快,但是可能准确率会受到一定影响。在本文,我们就将来探究这是为何。我们发现其主要原因是密集检测器在训练时所遭遇的前景-背景类数量的极度不平衡问题。我们计划通过重构标准交叉熵损失函数,如降低易分类样本loss的权值,来解决这种类不平衡问题。我们新提出的Focal Loss着眼于在难例的稀疏集上进行训练,然后避免在训练时大量的easy negatives将整个检测器淹没。为了评估我们的loss的有效性,我们设计和训练了一个简单的密集检测器叫做RetinaNet。我们结果表明当使用focal loss进行训练时,RetinaNet可以媲美之前单阶段的检测器的速度并且同时准确率会超过现有的两阶段的检测器。

1. Introduction

现有的最好的目标检测器是基于两阶段的和预测框驱使的机制。如流行的R-CNN结构,第一个stage生成一个稀疏的候选目标框位置,第二阶段使用CNN对每个候选框进行前景或背景的分类。经过一系列的发展,这个两阶段的结构不断的刷新着记录。
既然两阶段的检测器取得了这样的成功,那么很自然的我们会问:简单的one-stage检测器可以获得相似的准确率吗?One stage检测器可以被应用于常规的,密集的多尺度,多纵横比的目标位置样本。近期的one-stage检测器,如YOLO和SSD,都展示出了很有希望的结果,在准确率低10~40%的情况下比two-stage要更快。
本文更是推进了更多,得到了一个可以媲美更加复杂的two-stage检测器的one-stage检测器,如FPN,Mask R-CNN以及一系列Faster R-CNN的变体。为了得到这一结果,我们确认了在训练时的类不平衡问题是阻止one-stage检测器达到state-of-the-art准确率的主要障碍,因此我们提出一种新的损失函数来消除这个障碍。
类不平衡已经在类似R-CNN的探测器中通过两阶段级联和启发式采样解决了。区域候选阶段(如SS,EdgeBoxes,DeepMask,RPN)迅速地将候选目标区域减小到了一个很小的数量(如1-2k),几乎过滤了所有的背景样本。在接下来的分类阶段,启发式采样,如固定前后景比例(1:3)或者在线难例挖掘(OHEM),都对前后景样本维持了一个平衡。
相反,单阶段检测器必须处理一个均匀采样于图像的超大的候选目标区域集合。实际中,这个集合会到达100k的一个数量,密集的覆盖空间位置,尺度和纵横比。当应用类似的启发式采样算法时,它们仍然是低效的,因为训练过程总是被简单的背景样本所支配。这样的低效率是目标检测中的一个经典问题,通常是通过bootstrapping和难例挖掘来解决。
在本文,我们提出一个新的损失函数来更高效的代替之前的方法来解决类不平衡问题。这个损失函数能够动态的缩放交叉熵loss,当正确类的置信率增加,它对应的尺度因子会逐渐衰减到0,如图1。直观上,尺度因子会自动地在训练时减少简单例子对loss的贡献,然后迅速地着眼于难例。实验显示,我们提出的Focal Loss能够帮助我们训练出高准确率,单阶段的检测器,并且很明显地优于之前的训练单阶段检测器的策略,使用启发式采样算法或难例挖掘。最后,我们发现focal loss的形式不一定唯一,其他的形式也可以得到相似的效果。

这里写图片描述
图1. 我们提出一种新的损失函数Focal loss,在标准的交叉熵上添加一个 ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ。设置 γ > 0 \gamma>0 γ>0来减小好分类样本( p t > 0.5 p_t>0.5 pt>0.5)的相对loss,更多的着眼于难例。就像我们的实验阐述的,这个focal loss能够在大量简单背景样本存在的情况下,训练出高准确率的密集目标检测器。

为了阐明focal loss的有效性,我们设计了简单的单阶段检测器RetinaNet,取名源于它对输入图像的目标位置的密集采样。它的设计特点在于有效的网络内特征金字塔和anchor框的使用。RetinaNet是高效并且准确的,在COCO test-dev 上达到了 39.1的AP,速度为5fps,超过了之前最好的单一模型的结果不论是one-stage还是two-stage。

2. Related Work

Classic Object Detectors: 滑动窗口模式,将分类器应用到一个密集的图像网格中,有很长很丰富的历史。最早的成功来自于LeCun,利用CNN完成手写数字识别。然后是Viola和Jones使用boosted目标检测器进行人脸识别,使得这一模型被广泛的散播出去。HOG和积分通道特征的出现使得对于行人检测有了有效的方法。DPMs帮助密集检测器能够适用于更加广泛的目标类别,并且在PASCAL上取得了很好的成绩。滑动窗口方法是经典计算机视觉中最为主要的检测模式,但是随着深度学习的复苏,two-stage检测器很快的支配了目标检测领域。

Two-stage Detectors: 目前物体检测的主导模式是基于two-stage的方法。以SS为例,第一阶段生成一个稀疏的候选区域集合,这个集合包含所有的目标并且同时还滤除绝大部分的负位置(也就是背景),然后第二阶段对候选区域进行前景类别/背景的分类。R-CNN将第二阶段的分类器升级为一个卷积网络这样极大的提高了准确率从而引领了现代目标检测领域。R-CNN在近些年得到了提升不论是速度还是使用经过学习的候选目标区域。RPN将第二阶段分类器和候选区域生成器整合到了一个单一的卷积网络中,形成了Faster R-CNN框架。大量的基于Faster R-CNN的变体被提出。

One-stage Detectors: OverFeat是现代第一个基于深度网络的one-stage目标检测器。更近的SSD和YOLO使得人们从新提起了对one-stage方法的兴趣。这些检测器速度更快但是准确率比two-stage方法要低。SSD相比低了10~20%,而YOLO着重于得到一个更加极端的速度/准确率的平衡。近期的发现表明two-stage检测器可以简单得通过降低输入图像分辨率和候选框数量来加速,但是one-stage方法即使在更大的计算预算上也依然不能取得很好的准确率。相比之下,本文的目标就在于去理解是否one-stage检测器可以在取得甚至超越two-stage准确率的情况下还能跑的更快。
我们的RetinaNet检测器的设计与之前的密集检测器有很多相似点,尤其是RPN引入的anchors的理念以及SSD和FPN使用的特征金字塔。我们强调我们的检测器能够得到如此好的结果并不是基于网络设计的创新,而是基于我们新的损失函数。

Class Imbalance: 不管是经典的one-stage目标分类方法,像boosted检测器和DPMs,还是最近的方法,像SSD都面对这一个问题,那就是训练时的很大的类不平衡问题。这些检测器对于每张图像要评估 1 0 4 − 1 0 5 10^4-10^5 104105的候选位置,但是仅有很少量的位置是有物体的。这样的不平衡造成了两个问题:(1)训练很低效,因为很多位置都是easy negatives对学习并没有帮助;(2)总体来看,easy negatives会淹没整个训练使得模型退化。一个普遍的解决方式进行一定形式的难例挖掘,也就是在训练时进行难例采样或者使用更复杂的采样/修改权值策略。相比之下,我们的focal loss自然的解决了这个类不平衡问题,并且使得我们能够在所有样本存在的情况下进行有效学习,不需要进行采样,easy negatives也不会淹没我们的loss和梯度。

Robust Estimation: 人们一直对设计鲁棒的损失函数很感兴趣(如Huber loss),通过减少难例的loss的权值来减少异常值的贡献。相比之下,我们不是处理这些异常值,我们的focal loss是设计来通过降低简单例子的权值来解决类不平衡问题,这样即使简单例子的数量大他们对于总loss的贡献依然很小。换句话说,focal loss与鲁棒loss完全相反:它着眼于在难例这一稀疏集上进行训练。

3. Focal Loss

Focal Loss是设计来解决one-stage目标检测里训练时有着极端的前后景样本不平衡的场景的(如1:1000)。我们从二分类的交叉熵(CE)loss来引入focal loss:
(1) C E ( p , y ) = { − log ⁡ ( p ) if  y = 1 − log ⁡ ( 1 − p ) otherwise. CE(p,y) = \begin{cases} -\log(p) & \text{if $y=1$} \\ -\log(1-p) & \text{otherwise.} \tag 1 \end{cases} CE(p,y)={log(p)log(1p)if y=1otherwise.(1)
在上面方程中 y ∈ { ± 1 } y\in \{\pm1\} y{±1}来指定gt类,然后 p ∈ [ 0 , 1 ] p\in[0,1] p[0,1]是模型预测标签 y = 1 y=1 y=1的概率。为了标识方便,我们定义 p t p_t pt
(2) p t = { p if  y = 1 1 − p otherwise, p_t = \begin{cases} p & \text{if $y=1$} \\ 1-p & \text{otherwise,} \tag 2 \end{cases} pt={p1pif y=1otherwise,(2)
那么重写 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)
在图1中,CE loss就是那条蓝色的曲线。这个损失函数的一个显著特点就是即使容易分类的样本( p t ≫ . 5 p_t\gg.5 pt.5)也会引起 loss,即便是很小的量级。当大量的easy 样本加到一起,这些个小的loss就会淹没难例。

3.1. Balanced Cross Entropy

一个普遍的方法来解决这个类不平衡问题就是引入一个权重因子 α ∈ [ 0 , 1 ] \alpha \in [0,1] α[0,1]对于类1, 1 − α 1-\alpha 1α对于类-1。实际中 α \alpha α可能被设置为类频率的倒数或者被当做是一个超参数使用交叉验证了设置。为了符号方便,我们类比于我们定义 p t p_t pt来定义 α t \alpha_t αt。我们将 α \alpha α-balanced CE loss写为:
(3) C E ( p t ) = − α log ⁡ ( p t ) CE(p_t)=-\alpha \log(p_t) \tag 3 CE(pt)=αlog(pt)(3)
这个loss是CE的一个简单的延展,是我们提出的focal loss的一个baseline。

3.2. Focal Loss Definition

就像我们实验将要展示的一样,密集检测器在训练时遭遇的大量的类不平衡会淹没掉交叉熵loss。好分类的负样本占据了loss里的绝大部分,而且还主导了梯度。而 α \alpha α可以平衡正/负样本的重要性,但是它不能区分易/难例。于是,我们重新设计了损失函数,降低了简单样本的权重,因此使得损失函数能够着眼于难负例。
更加正式的,我们在交叉熵上添加了一个带有focusing参数 γ ≥ 0 \gamma \ge 0 γ0的调制因子 ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ,我们定义focal loss 如下:
(4) F L ( p t ) = − ( 1 − p t ) γ log ⁡ ( p t ) FL(p_t)=-(1-p_t)^{\gamma} \log (p_t) \tag 4 FL(pt)=(1pt)γlog(pt)(4)
在图1中,我们对 γ ∈ [ 0 , 5 ] \gamma \in [0,5] γ[0,5]的个别值下的focal loss进行了可视化。我们注意到focal loss的两个特点。(1)当一个样本被错误分类, p t p_t pt是很小的,那么对应的调制因子就接近于1,进而这个loss是不受影响的。如果 p t → 1 p_t\rightarrow1 pt1,那么调制因子趋近于0,这个好分类样本的loss就被降低权重。(2)focusing参数 γ \gamma γ平滑地调整了好分类样本被降低权重的比率。当 γ = 0 \gamma=0 γ=0,FL就等于CE,当 γ \gamma γ增加,调制因子的影响也会相应的增加(实验中,我们发现 γ = 2 \gamma=2 γ=2效果最好)。
直观来看,调制因子减小了好分类例子的loss贡献,然后延伸了得到低loss的样本的范围。比如,在 γ = 2 \gamma=2 γ=2的情况下,一个 p t = 0.9 p_t=0.9 pt=0.9的分类样本的FL相比于CE会小100倍,如果 p t ≈ 0.968 p_t\approx0.968 pt0.968那就就会小1000倍。这就相应的增加了矫正错误分类样本的重要性(对于难例的权值减小最多是4倍,当 p t ≤ . 5 p_t \le .5 pt.5 γ = 2 \gamma=2 γ=2)。
在实际中我们使用 α \alpha α-balanced的focal loss:
(5) F L ( p t ) = − α t ( 1 − p t ) γ log ⁡ ( p t ) FL(p_t)=-\alpha_t(1-p_t)^{\gamma}\log(p_t) \tag 5 FL(pt)=αt(1pt)γlog(pt)(5)
在实验中,我们发现这种形式会比不带 α \alpha α的形式有微弱的提升。最后,我们注意到loss层的实施结合了计算 p p p的sigmoid方程和loss计算,结果具有很好的数值稳定性。

3.3. Class Imbalance and Model Initialization

二分类模型默认初始化有相等的概率输入 y = − 1 or 1 y=-1 \text{or} 1 y=1or1。在这样的初始化和存在类不平衡的情况下,频繁出现的类的loss会主导整个loss,因此造成训练前期的不稳定性。为了解决这种情况,我们在训练初期引入了一个通过模型估计少类(前景)的 p p p值的先验。我们使用 π \pi π来表征这个先验,通过设置它来使得对于少类,模型预测的 p p p值很小,如0.01。我们注意到这个变化是在模型的初始化阶段,并不是在损失函数里。我们发现这个策略能够提升训练的稳定性,不论是交叉熵还是focal loss,只要有严重的类不平衡问题。

3.4. Class Imbalance and Two-stage Detectors

Two-stage检测器通常是使用交叉熵而不是focal loss来训练的。它们是通过以下两个机制来解决类不平衡问题的:(1)一个两阶段的级联结构,(2)有偏的minibatch采样。级联结构的第一个阶段就是目标候选框策略,这可以将几乎无穷尽的可能目标区域减少到1-2k个。更重要的是,这些经过选取的候选框并不是随机的,它们都很有可能是真正的目标位置,只是滤除了大量的easy negatives。在训练第二阶段时,有偏采样被运用在构建minibatch上,例如,1:3的正负样本比例。这个比例就像是在采样时实施了一个隐式 α \alpha α-balancing 因子。我们的focal loss被设计来直接通过损失函数在one-stage检测系统中处理这些机制。

4. RetinaNet Detector

RetinaNet是由一个主网络和两个指定任务的子网络组成的一个单一的、统一的网络结构。主网络负责计算整个输入图像的卷积特征,它是一个现成的卷积网络。第一个子网络用来对主网络的输出进行进一步的计算来完成目标分类;第二个子网络负责边框回归。网络结构如图2。对于网络构成组件有很多可能的选择,大部分设计参数对于特定数值都不是特别的敏感。我们接下来介绍我们的RetinaNet各个结构组成。

这里写图片描述
图2. one-stage RetinaNet网络结构在前向ResNet网络结构上使用了FPN(Feature Pyramid Network)(a)来生成丰富的,多尺度的卷积特征金字塔。(b)在RetinaNet的主网络上联结两个子网络,一个用来分类anchor框(c)一个用来让anchor框对gt框进行回归。(d)这个网络设计很简单,主要是为了着眼于focal loss函数可以消除one-stage和two-stage检测器的准确率差距同时还能跑的更快。

Feature Pyramid Network Backbone: 我们采用FPN作为RetinaNet的骨干部分。简单来说,FPN通过自上而下的通道和横向的连接来扩展了一个标准的卷积网络,这样就可以从单一分辨率的输入图像中有效的提取出丰富的,多尺度的特征金字塔,如图2(a)-(b)。金字塔的每一层都可以在不同尺度上对目标进行检测。FPN提升了全卷积网络(FCN)的多尺度预测能力,这一提升在RPN和DeepMask-style 候选框以及two-stage检测器如Fast R-CNN和Mask R-CNN都有所体现。
依照FPN论文,我们在ResNet结构上构建了FPN。我们在 P 3 P_3 P3 P 7 P_7 P7级上构建了一个金字塔,这里l表征金字塔的级数( P l P_l Pl的分辨率相比于输入低了 2 l 2^l 2l),所有的金字塔级的渠道数 C = 256 C=256 C=256。金字塔的细节都基本仿照FPN论文的结果,只有一些很细微的差别。许多设计参数选择都不是很重要,我们主要想要强调FPN的使用;因为实验告诉我们仅仅使用ResNet最后层的特征得到的AP很低。

Anchors: 我们使用了和FPN中RPN变体相似的平移不变性的anchor框。这些anchors的面积在 P 3 P_3 P3 P 7 P_7 P7上从 3 2 2 32^2 322 51 2 2 512^2 5122。在每个金字塔级上,我们都使用三种纵横比的anchors( { 1 : 2 , 1 : 1 , 2 : 1 } \{1:2,1:1,2:1\} {1:2,1:1,2:1})。为了覆盖更加稠密的尺度,相比于FPN,我们在每一级的原来的3种纵横比上还增加了3种尺度大小( { 2 0 , 2 1 / 3 , 2 2 / 3 } \{2^0,2^{1/3},2^{2/3}\} {20,21/3,22/3})。这帮助我们提高了AP。总共每一级上我们就有 A = 9 A=9 A=9种anchors,跨级来看它们一共覆盖了相对于原图大小上的 32 32 32~ 813 813 813个像素。
每个anchor都会被赋予一个长为K的one-hot向量的分类目标(这里K代表了物体类别数)和一个4维的边框回归目标。我们使用RPN里的根据多分类检测修改的带有调整过阈值的赋值规则。尤其是,anchors被赋予给gt框使用IoU阈值为0.5;如果IoU在 [ 0 , 0.4 ) [0,0.4) [0,0.4)被赋予为背景。因为一个anchor最多只能被赋予给一个目标框,我们会相应的将长度为K的标签向量里的对应位置设为1,其他位置设为0。如果一个框没有被赋予,说明IoU在 [ 0.4 , 0.5 ) [0.4,0.5) [0.4,0.5),在训练时将会被忽略。边框回归目标是通过每个anchor和其被赋予的目标框的补偿来计算得到的,如果它没有被赋予那么就将其忽略。

Classification Subnet: 分类子网络会对每个位置的每个anchor(A个)的每个类别(K个)进行概率预测。这个子网络是在每个FPN级上联接一个小的FCN;这个子网络的参数在所有金字塔级上是共享的。它的设计很简单。从给定的金字塔级上得到一个有C个通道的输入特征图,这个子网络先经过4个 3 × 3 3\times 3 3×3的卷积层,每个带有C个滤波器,每个都跟着一个ReLU激活函数,然后再跟一个带有KA个滤波器的 3 × 3 3\times 3 3×3的卷积层。最后联接sigmoid激活函数对于每个位置输出KA个二分类预测值,如图2(c)。我们在大部分实验中使用 C = 256 C=256 C=256 A = 9 A=9 A=9
相比于RPN,我们的目标分类子网络更深,只使用 3 × 3 3\times 3 3×3的卷积核,而且分类子网络不与框回归子网络共享参数。我们发现更高层的设计会比超参数的设计更为重要。

Box Regression Subnet: 与目标分类子网络并行,我们对于金字塔的每一级联接了另一个小的FCN来对每个anchor对其临近的gt框(如果存在)进行回归。这个边框回归子网络的设计和分类子网络相同除了最后每个位置4A个输出元,如图2(d)。对于每个位置的A个anchors,这4个输出元预测了anchor与对应gt的相对补偿(我们使用了R-CNN的标准框参数化)。我们注意到不像近期的一些发表,我们使用了类不可知的边框回归器,这样会使用更少的参数也同样有效。目标分类子网络和边框回归子网络,尽管使用了相同的结果,但是并没有共享参数。

4.1. Inference and Training

Inference: RetinaNet是由ResNet-FPN主网络,一个分类子网络和一个边框回归子网络所组成的,如图2。预测是简单地通过网络将一张图片进行前向传播。为了提高速度,设置检测器置信度为0.05后,我们仅仅从每一个FPN级的最多1k top-scoring预测中进行边框预测解码。将所有级的top预测合并起来,然后应用0.5阈值的NMS来生成最终检测结果。

Focal Loss: 我们使用本文引入的focal loss作为分类子网络的输出的loss。我们发现 γ = 2 \gamma=2 γ=2在实验中效果最好,而且RetinaNet在 γ ∈ [ 0.5 , 5 ] \gamma \in [0.5, 5] γ[0.5,5]的范围内相对鲁棒。我们强调在训练RetinaNet时,focal loss是应用于一张采用图片的所有的 ~100k个anchors的。这就与使用了启发式采样(RPN)或者难例挖掘(OHEM,SSD)来选择小部分anchors(如256)来构成minibatch相反。一张图像的总共的focal loss是所有~100k个anchors的focal loss的和,然后再使用被赋予gt框的anchors的数量来进行标准化。我们使用被赋予gt框的anchors的数量来进行归一化,而非所有的anchors的原因是大量的anchors是easy negatives,它们的loss在focal loss下是可以忽略不计的。最后我们注意到 α \alpha α,赋予少类的权重,同样具有相对稳定的范围,但是它与 γ \gamma γ相互影响所以有必要同时对它们两个进行选择。普遍来看, α \alpha α增加一点 γ \gamma γ就增加一点(实验中 γ = 2 \gamma=2 γ=2 α = 0.25 \alpha=0.25 α=0.25效果最好)。

Initialization: 我们使用ResNet-50-FPN和ResNet-101-FPN进行了实验。基础的ResNet-50和ResNet-101模型是在ImageNet1k上进行了预训练。新增的FPN层由FPN论文中的方式进行初始化。除了RetinaNet子网络的最后一层,其他所有新增的层都采用 σ = 0.01 \sigma=0.01 σ=0.01的高斯分布和 b = 0 b=0 b=0进行初始化。对于分类子网络的最后一层卷积层,我们设置初始偏置项为 b = − log ⁡ ( ( 1 − π ) / π ) b=-\log((1-\pi)/\pi) b=log((1π)/π),这里 π \pi π被指定在训练开始时,所有的anchor都需要被标注为带有~ π \pi π置信率的前景。在所有的实验中,我们使用 π = . 01 \pi=.01 π=.01,尽管结果对于这个值相对鲁棒。就像3.4节中介绍的一样,这个初始化是为了防止在训练的第一个周期大量的背景anchors生成一个巨大的不稳定的loss值。

Optimization: RetinaNet通过SGD进行训练。我们同时使用8个GPU对一个minibatch16张图片(1个GPU两张图)进行同步SGD。如果不进行指定,所有的模型都使用初始学习率0.01进行90k周期的训练,然后在60k和80k周期时进行10倍的学习率衰减。我们使用图像水平翻转作为唯一数据增广手段。0.0001的权值衰减和0.9的momentum。训练loss是focal loss和边框回归的标准smooth L1 loss的和。训练时间在10-35个小时之间。

5. Experiments

我们给出了在COCO的边框检测任务的实验结果。对于训练,我们使用了FPN中的一些实际操作,然后使用了COCO trainval35k 的划分。对于我们主要的结果,我们报告了在 test-dev 上的 COCO AP。

5.1. Training Dense Detection

我们跑了大量实验来分析对于密集检测使用各种优化策略的损失函数的行为。对于所有实验我们都使用带有FPN的ResNet50或101。对于所有的模型简化实验,我们使用尺度为600像素的图像进行训练和测试。

Network Initialization: 首先尝试使用标准CE loss来训练 RetinaNet,不进行任何初始化或者学习策略的修改。这个方法失败,网络在训练时无法收敛。然而,简单地将模型的最后一层加入物体预测先验概率 π = . 01 \pi = .01 π=.01 就能够使网络有效的训练。使用这个初始化和ResNet-50已经能在COCO上生成30.2的AP。模型对于 π \pi π的数值并不敏感。

Balanced Cross Entropy: 我们下一个尝试是使用 α \alpha α-balanced CE loss。设置 α = . 75 \alpha=.75 α=.75,AP增加了0.9。

Focal loss: focal loss引入了一个新的超参数,聚焦参数 γ \gamma γ,用来控制调整项的强度。如果 γ = 0 \gamma=0 γ=0,我们的loss和CE loss相同。当 γ \gamma γ增加,loss在好分类例子上的变化使得好分类例子被大打折扣,如图1。 γ = 2 \gamma=2 γ=2的FL在AP上相对于 α \alpha α-balanced CE loss上升2.9。

Analysis of the Focal Loss: 为了更好的理解focal loss,我们分析了收敛模型的损失函数的经验分布。我们使用默认的采用600像素作为输入, γ = 2 \gamma=2 γ=2训练出的ResNet-101模型。我们对模型输入大量的随机的图像,然后采样了   1 0 7 ~10^7  107个负窗口的预测概率和   1 0 5 ~10^5  105个正窗口的预测概率。然后,分别对于这些正负样本,我们计算FL,然后对它们进行标准化,使它们和为1。有了归一化后的值,我们可以分别对正负样本从低到高的按loss进行排序,然后画出不同 γ \gamma γ下的CDF(累积分布函数)。

这里写图片描述
图3. 对于一个收敛模型及不同 γ \gamma γ值下的正负样本的归一化loss的累计分布函数。改变 γ \gamma γ值对于正样本的loss分布是影响是很小的。对于负样本来说影响就很大,使得模型不再着眼于好分类负样本。

正负样本的CDF(如图3)。如果我们观察正样本,会发现CDF对于不同 γ \gamma γ值来说大致是相似的。大约20%的正样本难例占了大约一半的正损失,当 γ \gamma γ增加,损失会越来越集中于top 20%的样本,但是这种效果是微小的。
对于负样本, γ \gamma γ的影响就非常不同,如 γ = 2 \gamma=2 γ=2,FL能够非常有效的折扣负样本简单例的效果,使得模型所有注意力都在负难例上。


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值