Focal Loss for Dense Object Detection(密集目标检测中的焦距损失)

                 Focal Loss for Dense Object Detection

 原文链接:https://arxiv.org/pdf/1708.02002.pdf

作者信息:

                Tsung-Yi Lin  Priya Goyal  Ross Girshick  Kaiming He  Piotr Dollár
                 Facebook AI Research (FAIR)

Focal Loss for Dense Object Detection(密集目标检测中的焦距损失)_第1张图片     

图1。我们提出了一个新的损失,我们称之为局部损失,它在标准交叉熵准则中增加了一个因子(1-pt)γ。设置γ>0可减少分类良好的样本的相对损失(pt>0.5),将更多精力放在难分类的示例上。正如我们的实验将证明的那样,所提出的焦距损失能够在大量简单的背景例子面前训练高精度的密集目标探测器。

 

 Focal Loss for Dense Object Detection(密集目标检测中的焦距损失)_第2张图片

 

图2。COCO测试设备上的速度(ms)与精度(AP)对比。由于焦距损失,我们简单的一级视网膜网络检测器优于所有先前的一级和两级检测器,包括[19]中报告的最快的R-CNN[27]系统。我们用ResNet-50-FPN(蓝色圆圈)和ResNet-101-FPN(橙色菱形)在五个尺度(400-800像素)显示RetinaNet的变体。忽略低精度区域(AP<25),RetinaNet形成所有电流检测器的上包络,训练更长时间的变体(未显示)达到39.1ap。详情见第5条。

Abstract

 迄今为止,最精确的目标检测器是基于R-CNN推广的两阶段方法,其中分类器应用于稀疏的候选目标位置集。相比之下,在对可能的目标位置进行规则、密集采样的基础上应用的一级探测器有可能更快、更简单,但迄今已落后于两级探测器的精度。在本文中,我们将调查为什么会出现这种情况。我们发现,在密集探测器训练过程中所遇到的极端前景背景类不平衡是造成这种现象的主要原因。我们建议通过重塑标准的交叉熵损失来解决这一类不平衡问题,从而降低分配给分类良好示例的损失的权重。我们的新的焦点损失集中在一组稀疏的硬例子上训练,并防止大量容易的负面影响在训练期间压倒探测器。为了评估损失的有效性,我们设计并训练了一个简单的密集检测器,我们称之为RetinaNet。研究结果表明,当使用焦损失训练时,RetinaNet能够与以往的单级检测器速度相匹配,同时超过了现有的所有最先进的两级检测器的精度。

1. Introduction

目前最先进的目标探测器是基于一个两阶段,建议驱动机制。正如R-CNN框架[11]中所推广的,第一阶段生成候选对象位置的稀疏集,第二阶段使用卷积神经网络将每个候选位置分类为前景类之一或背景。通过一系列的改进[10,27,19,13],这个两阶段的框架在具有挑战性的COCO基准上始终达到了最高的精度[20]。

尽管两级探测器取得了成功,但一个自然要问的问题是:一个简单的一级探测器能否达到类似的精度?一级探测器应用于对物体位置、比例和纵横比的规则密集采样。最近对一级检测器的研究,如YOLO[25,26]和SSD[21,9]显示了有希望的结果,与最新的两级方法相比,产生了更快的检测器,准确度在10-40%以内。

本文进一步推陈出新:我们提出了一种单级目标检测器,它第一次与更复杂的两级检测器的最新COCO-AP相匹配,如特征金字塔网络(FPN)[19]或快速R-CNN的掩模R-CNN[13]变体[27]。为了实现这一结果,我们将训练过程中的类不平衡识别为阻碍一级检测器获得最新精度的主要障碍,并提出了一种新的消除这一障碍的损失函数。

类不平衡问题在类R-CNN检测器中通过两级级联和采样启发式算法得到解决。建议阶段(例如,选择性搜索[34]、EdgeBoxes[37]、DeepMask[23,24]、RPN[27])快速地将候选对象位置的数目缩小到一个小数目(例如,1-2k),过滤掉大多数背景样本。在第二分类阶段,为了在前景和背景之间保持可管理的平衡,执行采样启发,例如固定的前景与背景比(1:3)或在线硬示例挖掘(OHEM)[30]。

相比之下,一级检测器必须处理一组更大的候选对象位置,这些候选对象位置在图像上定期采样。在实践中,这通常相当于枚举密集覆盖空间位置、比例和纵横比的100k个位置。虽然也可以应用类似的抽样启发法,但它们效率低下,因为训练过程仍然由容易分类的背景示例支配。这种效率低下是对象检测中的一个典型问题,通常通过引导(bootstrapping)[32,28]或硬示例挖掘(hard example mining)[36,8,30]等技术来解决。

在本文中,我们提出一个新的损失函数,作为一个更有效的替代以往的方法来处理类不平衡。损失函数是一个动态标度的交叉熵损失,当正确类的置信度增加时,标度因子衰减为零,见图1。直观地说,这个比例因子可以自动降低训练过程中简单示例的权重,并快速地将模型集中在硬示例上。实验表明,我们提出的局部丢失使我们能够训练出一种高精度的单级检测器,其性能明显优于以往训练单级检测器的技术,即采样启发式或硬示例挖掘。最后,我们注意到焦点损失的确切形式并不重要,而且其他实例可以获得近似结果。

为了证明所提出的焦距损失的有效性,我们设计了一种简单的单级目标检测器RetinaNet,该检测器以对输入图像中的目标位置进行密集采样命名。它的设计特点是一个高效的网络特征金字塔和锚箱的使用。它借鉴了来自[21,6,27,19]的各种最新观点。RetinaNet是高效和准确的;我们的最佳模型基于ResNet-101FPN主干网,在以5 fps的速度运行时实现了39.1的COCO测试开发AP,超过了先前发布的单级和两级检测器的最佳单模型结果,见图2。

2. Related Work

经典的目标检测器:滑动窗口模式,在密集的图像网格上应用分类器,具有悠久而丰富的历史。最早的成功之一是LeCun等人的经典著作。他将卷积神经网络应用于手写数字识别[18,35]。Viola和Jones[36]使用增强型目标检测器进行人脸检测,导致了此类模型的广泛采用。HOG[4]和积分通道特征[5]的引入为行人检测提供了有效的方法。DPMs[8]有助于将密集探测器扩展到更一般的物体类别,多年来在PASCAL[7]上取得了最好的结果。滑动窗口方法是经典计算机视觉中的主要检测范式,随着深度学习的兴起[17],接下来描述的两级检测器很快就占据了目标检测的主导地位。

两级检测器:现代目标检测的主要范式是基于两级方法。正如在选择性搜索工作[34]中所开创的那样,第一阶段生成一个稀疏的候选方案集,该候选方案集应包含所有对象,同时过滤掉大多数负面位置,第二阶段将方案分类为前景类/背景。R-CNN[11]将第二级分类器升级为卷积网络,在精度上有了很大的提高,并开创了现代的目标检测时代。R-CNN经过多年的改进,无论是在速度方面[14,10]还是通过使用学习对象建议[6,23,27]。区域建议网络(RPN)将带有第二阶段分类器的建议生成集成到单个卷积网络中,形成更快的RCNN框架[27]。对这一框架提出了许多扩展,例如[19、30、31、15、13]。

单级探测器:OverFeat[29]是第一个基于深度网络的现代单级目标探测器。最近,SSD[21,9]和YOLO[25,26]重新对单阶段方法产生了兴趣。这些探测器已经调整了速度,但其精度落后于两级方法。SSD的AP降低了10-20%,而YOLO则专注于更极端的速度/精度权衡。见图2。最近的研究表明,只需降低输入图像的分辨率和建议的数量,就可以快速实现两级检测器,但一级方法在精度方面落后,即使计算预算更大[16]。相比之下,这项工作的目的是了解一级探测器在以相似或更快的速度运行时,是否能够匹配或超过两级探测器的精度。

我们的视网膜网探测器的设计与以前的密集探测器有许多相似之处,特别是RPN[27]引入的“锚”概念,以及使用如SSD[21]和FPN[19]中的金字塔特征。我们强调,我们的简单探测器取得了最好的结果不是基于网络设计的创新,而是由于我们的新损失。类不平衡:经典的一级目标检测方法,如增强型检测器[36,5]和DPMs[8],以及更新的方法,如SSD[21],在训练过程中都面临较大的类不平衡。这些探测器评估每个图像10^4-10^5个候选位置,但只有少数位置包含对象。这种不平衡导致了两个问题:(1)训练效率低下,因为大多数位置都是容易产生负面影响的,而这些负面影响不会产生有用的学习信号;(2)总体而言,这些负面影响会压倒训练,导致模型退化。一种常见的解决方案是执行某种形式的硬负挖掘[32、36、8、30、21],在训练或更复杂的采样/重新称重方案[2]期间对硬示例进行采样。相比之下,我们的研究表明,我们提出的焦距损失自然地处理了单级检测器所面临的类不平衡,并允许我们在没有采样的情况下有效地训练所有的例子,而且不容易出现压倒损失和计算梯度的负性。

稳健估计:人们对设计稳健损失函数(如Huber损失[12])非常感兴趣,该函数通过降低具有较大误差的实例(硬实例)的损失权重来减少外部损失的贡献。相反,我们的焦点损失不是处理异常值,而是通过降低内联(简单示例)的权重来处理类不平衡,这样即使它们的数量很大,它们对总损失的贡献也很小。换言之,焦点损失扮演着与鲁棒损失相反的角色:它将训练集中在一组稀疏的硬例子上。

3. Focal Loss

F ocal Loss设计用于解决在训练期间前景类和背景类之间存在极端不平衡(例如,1:1000)的一阶段对象检测场景。我们从二元分类1的交叉熵(CE)损失开始引入焦点损失:

                         

其中y∈{±1}指定了基真值类,p∈[0,1]是带y=1的类的模型估计概率。为了便于注释,我们定义了pt:

重写CE(p,y)=CE(pt)=-log(pt)。

在图1中,CE损耗可以看作是蓝色(顶部)曲线。这种损失的一个显著特点是,即使是易于分类的例子(pt≫.5)也会产生非微不足道的损失,这一点在图中很容易看出。当通过大量简单的例子进行总结时,这些小的损失值可以压倒稀有类。

3.1  平衡交叉熵

解决类不平衡的一种常用方法是为类1引入一个加权因子α∈[0,1],为类1引入一个加权因子α。实际上,α可以通过逆类频率来设置,也可以作为超参数通过交叉验证来设置。为了表示方便,我们定义αtanalogou到我们如何定义pt。我们将α-平衡CE损耗写成:

                                 

 

 这个损耗是对CE的一个简单扩展,我们认为它是我们提出的焦损耗的实验基线。

3.2. Focal Loss Definition

正如我们的实验所显示的,在训练稠密检测器时遇到的大类不平衡压倒了交叉熵损失。容易分类的负片占了损失的大部分,并且控制了梯度。虽然α平衡了正/负例子的重要性,但它不区分简单/困难的例子。相反,我们建议重塑减肥功能,以减轻体重,简单的例子,因此重点训练硬消极。更正式地,我们建议在交叉熵损失中加入调制因子(1-pt)γ,可调聚焦参数γ≥0。我们将焦点损失定义为:

图1显示了γ∈[0,5]的几个值的焦距损失。我们注意到焦点损失的两个性质。(1) 当一个例子被错误分类并且ptis很小时,调制因子接近1并且损耗不受影响。当pt→1时,因子变为0,分类好的例子的损失是向下加权的。(2) 聚焦参数γ平滑地调整简单例子的下加权速率。当γ=0时,FL等于CE,当γ增大时,调制因子的影响也随之增大(我们发现γ=2在实验中效果最好)。

直观地,调制因子减少了简单示例的损耗贡献,并且扩展了示例接收低损耗的范围。例如,当γ=2时,当pt=0.9时,与CE相比损耗降低100倍,当pt≈0.968时,损耗降低1000倍。这又增加了纠正错误分类示例的重要性(对于pt≤.5和γ=2,其损失最多缩小4倍)。

实际上,我们使用焦距损失的α-平衡变量: 

 

我们在实验中采用了这种形式,因为它比非α-平衡形式的精度稍有提高。最后,我们注意到损耗层的实现将计算p的sigmoid运算与损耗计算结合起来,从而产生更大的数值稳定性。

虽然在我们的主要实验结果中,我们使用了上述的焦点损失定义,但它的精确形式并不重要。在onlineappendix中,我们考虑了本地损失的其他实例,并证明这些实例同样有效。

3.3. Class Imbalance and Model Initialization

默认情况下,二进制分类模型初始化为输出y=-1或1的概率相等。在这样的初始化条件下,在存在班级不平衡的情况下,频繁的班级流失会主导全员流失,造成早期训练的不稳定。为了解决这一问题,我们引入了“先验”的概念,用于训练开始时稀有类(前景)模型估计的p值。我们用π来表示先验,并对其进行设置,使得模型对稀有类实例的估计值较低,例如0.01。我们注意到,这是模型初始化的变化(见第4.1节),而不是损失函数的变化。我们发现在重类不平衡的情况下,这可以提高交叉熵和焦点损失的训练稳定性。

3.4. Class Imbalance and Two-stage Detectors

在不使用α-平衡或我们提出的损失的情况下,两级检测器通常使用交叉熵损失进行训练。相反,它们通过两种机制来解决类不平衡:(1)两级级联和(2)有偏小批量采样。第一个级联阶段是对象建议机制[34,23,27],它将几乎无限的一组可能的对象位置减少到一千或两千个。重要的是,所选方案不是随机的,而是可能与真实的目标位置相对应,从而消除了绝大多数容易产生的负面影响。在训练第二阶段时,通常使用有偏采样来构造小批量,其中包含1:3的正负示例比率。该比率类似于通过采样实现的隐式α平衡因子。我们提出的焦点损耗是为了直接通过损耗函数解决单级检测系统中的这些机制。

4. RetinaNet Detector

RetinaNet是一个单一的、统一的网络,由一个骨干网和两个特定于任务的子网组成。主干网负责计算整个输入图像上的卷积特征映射,并且是一个非自卷积网络。第一个子网对骨干网的输出进行卷积对象分类;第二个子网进行卷积包围盒回归。这两个子网的特点是一个简单的设计,我们专门为一级密集检测提出,见图3。虽然对于这些组件的细节有很多可能的选择,但是大多数设计参数对实验中显示的精确值不是特别敏感。接下来我们描述视网膜网的每个组成部分。

特征金字塔网络骨干网:采用[19]中的特征金字塔网络(FPN)作为RetinaNet的骨干网。简言之,FPN通过自上而下的路径和横向连接来增强标准卷积网络,因此该网络有效地从单分辨率输入图像构建丰富的多尺度特征金字塔,见图3(a)-(b)。金字塔的每一层都可以用来检测不同尺度的物体。FPN改进了来自完全卷积网络(FCN)的多尺度预测[22],这一点在RPN[27]和DeepMask风格的建议[23]以及两级检测器(如Fast R-CNN[10]或Mask R-CNN[13])中得到了证明。 

在[19]之后,我们在ResNet架构的基础上构建了FPN[15]。我们构造了一个P3到P7层的金字塔,其中l表示金字塔层(Plhas resolution 2l低于输入)。如[19]所示,所有金字塔级别都有C=256个通道。金字塔的细节一般遵循[19]并有一些适度的差异。2虽然许多设计选择并不重要,但我们强调使用FPN主干网是;使用仅来自最终ResNet层的特性进行的初步实验产生了较低的AP。

锚:我们使用与[19]中RPN变体相似的平移不变锚框。锚的面积分别为32^2至512^2,位于金字塔的P3至P7层。如[19]所示,在每个金字塔级别上,我们使用三个纵横比{1:2,1:1,2:1}的锚。对于比[19]中更密集的标度覆盖,在每个级别上,我们添加大小为{2^0,2^1/3,2^2/3}的原始3个纵横比锚集。这改善了我们的环境。总的来说,每层有一个=9个锚,并且跨层锚覆盖相对于网络输入图像的缩放范围32-813像素。

每个锚都被赋予一个长度K一个分类目标的热向量,其中K是对象类的数量,以及一个4-盒回归目标向量。我们使用RPN[27]中的赋值规则,但对多类检测和调整阈值进行了修改。具体地说,使用超过并集(IoU)阈值0.5的交集将锚分配给地面真值对象框;如果它们的IoU在[0,0.4]中,则将锚分配给背景。当每个锚被分配给最多一个对象框时,我们将其长度K标签向量中的相应条目设置为1,将所有其他条目设置为0。如果锚点未分配(可能会在[0.4,0.5]中出现重叠),则在训练期间将忽略该锚点。长方体回归目标计算为每个定位点与其指定对象长方体之间的偏移,如果没有指定,则忽略。

RetinaNet使用特征金字塔级别p3到P7,其中p3到p5由相应ResNet残留级(C3到C5)的输出计算,使用自上而下和横向连接,如[19]所示,P6通过C5上的3×3 stride-2 conv获得,P7通过应用ReLU和P6上的3×3 stride-2 conv计算。这与[19]略有不同:(1)由于计算原因,我们不使用高分辨率金字塔级别p2,(2)p6是通过跨步卷积而不是下采样计算的,并且(3)我们包括p7以改进大对象检测。这些微小的修改提高了速度,同时保持了准确性。

Focal Loss for Dense Object Detection(密集目标检测中的焦距损失)_第3张图片

图3。一级RetinaNet网络架构在前馈ResNet架构[15]的基础上使用特征金字塔网络(FPN)[19]主干(a)生成丰富的多尺度卷积特征金字塔(b)。在这个骨干网上,RetinaNet连接了两个子网,一个子网用于对锚定盒(c)进行分类,另一个子网用于从锚定盒回归到地面真值对象盒(d)。网络设计故意简单,这使得这项工作能够专注于一个新的焦损失功能,消除了我们的一级探测器和最先进的两级探测器之间的精度差距,如快速R-CNN和FPN[19],同时以更快的速度运行。 

分类子网:分类子网预测每个A锚和K对象类在每个空间位置的对象存在概率。此子网是附加到每个FPN级别的小型FCN;此子网的参数在所有金字塔级别上共享。它的设计很简单。子网从给定的金字塔级别获取一个带有C通道的输入特征映射,然后应用四个3×3 conv层,每个层都有C过滤器,每个层都有ReLU激活,然后是一个带KA过滤器的3×3 conv层。最后,sigmoid激活被附加到每个空间位置输出KA二进制预测,参见图3(c)。我们在大多数实验中使用C=256和A=9。

与RPN[27]相比,我们的对象分类子网更深,仅使用3×3 conv,并且不与box回归子网共享参数(下面将描述)。我们发现这些更高层次的设计决策比超参数的特定值更重要。

盒回归子网:与对象分类子网并行,我们在每个金字塔层附加另一个小FCN,以便将每个锚定盒的偏移量回归到附近的地面真值对象(如果存在)。盒子回归子网的设计与分类子网相同,只是它在每个空间位置以4A线性输出终止,见图3(d)。对于每个空间位置的A锚,这4个输出预测锚和地面真值框之间的相对偏移(我们使用RCNN[11]中的标准框参数化)。我们注意到,与最近的工作不同,我们使用一个类不可知的边界盒回归器,它使用较少的参数,并且我们发现它同样有效。对象分类子网和框回归子网虽然共享一个公共结构,但使用单独的参数。

4.1 推理与训练

推论:RetinaNet形成一个由ResNet FPN主干网、分类子网和box回归子网组成的FCN,见图3。因此,推理只需通过网络转发图像。为了提高速度,在阈值检测器置信度为0.05后,我们仅从每个FPN级别最多1k个最高得分预测中解码盒预测。合并所有级别的顶级预测,并应用阈值为0.5的非最大抑制来产生最终检测。

焦点损失:我们使用在这项工作中引入的焦点损失作为分类子网输出上的损失。如我们将在第5节中所示,我们发现γ=2在实践中很好地工作,并且RetinaNet对γ∈[0.5,5]相对稳健。我们强调在训练RetinaNet时,每个采样图像中的所有100k个锚都会受到焦距损失的影响。这与使用启发式采样(RPN)或硬示例挖掘(OHEM,SSD)为每个小批量选择一组锚(例如256)的常见做法形成了对比。图像的总焦距损失被计算为所有∼100k个锚的焦距损失之和,通过指定给地面真值框的锚的数量进行归一化。由于绝大多数锚都是易负的,并且在焦点损失下得到的损失值可以忽略不计,所以我们通过指定锚的数量而不是总锚的数量来执行标准化。最后,我们注意到,分配给稀有类的权重α也有一个稳定的范围,但它与γ相互作用,因此有必要同时选择两者(见表1a和1b)。一般来说,随着γ的增加,α应略微降低(对于γ=2,α=0.25效果最好)。

初始化:我们使用ResNet-50-FPN和ResNet-101-FPN主干进行实验[19]。基本的ResNet-50和ResNet-101模型是在ImageNet1k上预先训练的;我们使用[15]发布的模型。为FPN添加的新层初始化为[19]。所有新的conv层(除了RetinaNet子网中的最后一层外)都是用偏置b=0和高斯权重填充σ=0.01初始化的。对于分类子网的最后一个conv层,我们将bias初始化设置为b=-log((1-π)/π),其中π指定开始训练时,每个锚都应标记为前景,置信度为∼π。我们在所有实验中都使用π=.01,尽管结果对精确值是稳健的。如第3.4节所述,该初始化防止大量背景锚在第一次迭代训练中产生大的、不稳定的损失值。

优化:用随机梯度下降(SGD)训练视网膜网络。我们使用同步SGD超过8个GPU,每个小批量总共16个图像(每个GPU 2个图像)。除非另有说明,否则所有模型都经过90k次迭代的训练,初始学习率为0.01,然后在60k次迭代时除以10,在80k次迭代时再次除以10。我们使用水平图像翻转作为数据增强的唯一形式,除非另有说明。重量衰减为0.0001,动量为0.9。训练损失是用于box回归的焦点损失和标准平滑l1损失之和[10]。对于表1e中的模型,培训时间在10到35小时之间。

5 实验

我们给出了具有挑战性的COCO基准的包围盒检测轨迹的实验结果。对于训练,我们遵循常见实践[1,19]并使用COCO train val 35k分割(将来自训练的80k图像和来自40k图像val分割的35k图像的随机子集合并)。我们报告了通过评估最小val分裂(剩余的5k val图像)的病变和敏感性研究。对于我们的主要结果,我们在test dev split上报告COCO AP,它没有公共标签,需要使用评估服务器。

5.1 训练密集检测

我们进行了大量的实验来分析密度检测的损失函数的行为以及各种优化策略。对于所有的实验,我们使用深度为50或101的ResNets[15],并在上面构建一个特征金字塔网络(FPN)[19]。对于所有消融研究,我们使用600像素的图像尺度进行训练和测试。

网络初始化:我们第一次尝试训练RetinaNet使用标准交叉熵(CE)损失,没有任何修改初始化或学习策略。这很快就失败了,网络在训练过程中出现了分化。然而,简单地初始化我们的模型的最后一层,使得检测对象的先验概率为π=.01(见4.1节)能够实现有效的学习。用ResNet-50训练RetinaNet,这个初始化已经在COCO上产生了30.2的AP。结果对π的精确值不敏感,因此我们对所有实验都使用π=.01。

Focal Loss for Dense Object Detection(密集目标检测中的焦距损失)_第4张图片

平衡交叉熵:我们下一次尝试使用第3.1节中描述的α-平衡CE损失来改进学习。各种α的结果如表1a所示。设置α=.75可获得0.9点AP的增益

焦点损失:使用我们提出的焦点损失的结果如表1b所示。焦点损失引入了一个新的超参数,聚焦参数γ,它控制调制项的强度。当γ=0时,我们的损耗等于CE损耗。随着γ的增加,损失的形状会发生变化,因此低损失的“简单”示例会得到进一步的折扣,见图1。随着γ的增加,FL比CE有很大的提高。当γ=2时,FL比α平衡CE损失提高了2.9ap。

对于表1b中的实验,为了进行公平的比较,我们找到了每个γ的最佳α。我们观察到,较低的α被选作较高的γ(因为容易的负数是向下加权的,所以不需要太重视正数)。然而,总的来说,改变γ的好处要大得多,实际上最佳α的范围仅为[.25,.75](我们测试了α∈[.01,.999])。我们使用γ=2.0和α=0.25进行所有实验,但α=0.5几乎同样有效(比0.4ap低)。

焦点损失分析:为了更好地理解焦点损失,我们分析了一个收敛模型的损失的经验分布。为此,我们采用默认的ResNet101 600像素模型,用γ=2训练(有36.0ap)。我们将此模型应用于大量随机图像,并对∼107个负窗口和∼105个正窗口的预测概率进行抽样。接下来,分别对正和负样本,我们计算这些样本的FL,并将损失标准化,使之和为1。给定标准化损失,我们可以将损失从低到高排序,并绘制正、负样本和不同γ设置下的累积分布函数(CDF)(即使模型是用γ=2训练的)。

正样本和负样本的累积分布函数如图4所示。如果我们观察阳性样本,我们会发现对于不同的γ值,CDF看起来相当相似。例如,约20%的最硬阳性样本约占阳性损失的一半,随着γ的增加,更多的损失集中在前20%的样本中,但影响较小。γ对阴性样品的影响是显著不同的。当γ=0时,阳性和阴性cdf非常相似。然而,随着γ的增加,更多的重量集中在硬负例子上。事实上,对于γ=2(我们的默认设置),绝大多数损失来自一小部分样本。可以看出,外语可以有效地打折容易否定的效果,把所有注意力集中在难否定的例子上。

在线硬示例挖掘(OHEM):[30]提出通过使用高损失示例构造小批量来改进两阶段检测器的训练。具体来说,在OHEM中,每个例子都是按其损失来评分的,然后应用非最大抑制(nms),并用损失最大的例子构造一个小批量。nms阈值和批处理大小是可调参数。像焦点丢失一样,OHEM更强调错误分类的例子,但不像FL,OHEM完全抛弃了简单的例子。我们还实现了SSD[21]中使用的OHEM变体:在对所有示例应用nms之后,构建小批量以强制正片和负片之间的1:3比率,以帮助确保每个小批量都有足够的正片。

在我们的一级检测设置中,我们测试了两种OHEM变体,这两种检测具有较大的类不平衡。原始OHEM策略和所选批量大小和nms阈值的“OHEM 1:3”策略的结果如表1d所示。这些结果使用ResNet-101,我们使用FL训练的基线在此设置下达到36.0 AP。相比之下,OHEM的最佳设置(1:3比率,批量大小128,nms为.5)达到32.8AP。这是一个3.2ap的差距,表明FL比OHEM训练密集型探测器更有效。我们注意到,我们尝试了OHEM的其他参数设置和变体,但没有取得更好的效果。

铰链损耗:最后,在早期的实验中,我们尝试在pt上使用铰链损耗[12]进行训练,这将损耗设置为0,高于pt的某个值。然而,这是不稳定的,我们没有设法取得有意义的结果。研究交替损失函数的结果见在线附录。

 

Focal Loss for Dense Object Detection(密集目标检测中的焦距损失)_第5张图片

 

5.2. Model Architecture Design

锚定密度:在一级检测系统中,最重要的设计因素之一是它覆盖可能的图像盒的空间有多密。两级检测器可以使用区域池操作对任何位置、比例和纵横比的盒子进行分类[10]。相比之下,由于一级检测器使用固定采样网格,在这些方法中,实现盒的高覆盖率的一种流行方法是在每个空间位置使用多个“锚”[27]来覆盖不同比例和纵横比的盒。

我们扫描了在FPN中每个空间位置和每个金字塔级别使用的比例和纵横比锚的数量。我们考虑从每个位置的单个方形锚定到每个位置的12个锚定,跨越4个次倍频程标度(2k/4,对于k≤3)和3个纵横比[0.5,1,2]。使用ResNet-50的结果如表1c所示。仅使用一个方形锚定即可获得令人惊讶的良好AP(30.3)。然而,当每个位置使用3个尺度和3个纵横比时,AP可以提高近4个点(达到34.0)。在这项工作中,我们将此设置用于所有其他实验。 

最后,我们注意到,超过6-9锚没有显示出进一步的收益。因此,虽然两级系统可以对图像中的任意盒子进行分类,但性能w.r.t.密度的饱和意味着两级系统的较高电位密度可能不会提供优势。

速度与准确度:较大的主干网产生更高的准确度,但也较慢的推理速度。同样,对于输入图像比例(由较短图像侧定义)。我们在表1e中显示了这两个因素的影响。在图2中,我们绘制了RetinaNet的速度/精度权衡曲线,并将其与最近在COCO test-dev中使用公共数字的方法进行了比较。该图显示,RetinaNet由于我们的焦点损失,在所有现有方法上形成了一个上包络线,从而降低了低精度范围。值得注意的是,RetinaNet与ResNet-101-FPN和600像素图像比例(为简单起见,我们用RetinaNet-101-600表示)匹配的精度与最近发布的ResNet-101-FPN更快的R-CNN[19]相匹配,同时每幅图像的运行时间为122 ms,而不是172 ms(均在Nvidia M40 GPU上测量)。使用更大的图像尺寸可以使RetinaNet超过所有两阶段方法的精度,同时仍然更快。对于更快的运行时间,只有一个操作点(500像素输入)使用ResNet-50FPN比ResNet-101-FPN提高。解决高帧速率体制可能需要特殊的网络设计,如[26],而不是使用现成的模型,这超出了本工作的范围。

5.3. Comparison to State of the Art

我们在具有挑战性的COCO数据集的边界盒检测任务中评估RetinaNet,并将测试开发结果与包括一阶段和两阶段模型的最新技术方法进行比较。表2显示了我们的RetinaNet-101-800模型使用比例抖动训练的结果,比表1e中的模型长1.5倍(给出1.3ap增益)。与现有的单阶段方法相比,我们的方法与最接近的竞争对手DSSD[9]的AP差距达到了5.9个百分点(39.1对33.2),同时速度也更快,见图2。与最近的两阶段方法相比,RetinaNet比基于Inception-ResNet-v2-TDM的性能最好的R-CNN模型高出2.3个点[31]。

6. Conclusion

在这项工作中,我们确定类不平衡是阻止一级目标检测器超越性能最好的两级方法(如更快的R-CNN变体)的主要障碍。为了解决这一问题,我们提出了将调制项应用于交叉熵损失的焦点损失,以便将学习集中在硬例子上,并减轻许多容易产生的负面影响。我们的方法简单高效。我们通过设计一个完全卷积的一级检测器来证明它的有效性,并报告了大量的实验分析,表明它在具有挑战性的COCO数据集上达到了最新的精度和运行时间。

 

你可能感兴趣的:(Focal,loss,目标检测,损失函数设计)