guodong's blog

master@zhejiang university
   

论文阅读(4)Focal Loss for Dense Object Detection

论文地址:https://arxiv.org/pdf/1708.02002.pdf

摘要:迄今为止,最高精度的物体检测器是基于由R-CNN开展的两步方法,其中分类器应用于稀疏的候选对象位置集。相比之下,应用于可能的物体位置的规则,密集采样的单步探测器具有更快和更简单的可能性,但迄今为止已经落后于两步探测器的精度。在本文中,我们调查为什么会这样。我们发现在密集探测器训练过程中遇到的极端前景 – 背景类不平衡是主要原因。我们建议通过重新设计标准的交叉熵损失来解决这种类不平衡问题,从而降低分配给分类良好的例子的损失。我们的Focal Loss将训练重点放在一组稀疏的例子上,并防止在训练期间大量的轻易否定因素压倒探测器。为了评估我们损失的有效性,我们设计并训练了一个简单的密集探测器,我们称之为RetinaNet。我们的研究结果表明,当使用焦点损失进行训练时,RetinaNet能够匹配先前一级探测器的速度,同时超越所有现有技术的两级探测器的精度。Code is at:
https://github.com/facebookresearch/Detectron.

1、Introduction

目前最先进的物体探测器基于两阶段提议驱动机制。正如在R-CNN框架[11]中普及的那样,第一阶段生成稀疏的候选对象位置集,第二阶段使用卷积神经网络将每个候选位置分类为前景类之一或背景。通过一系列进展[10,28,20,14],这个两阶段框架始终在具有挑战性的COCO基准上实现最高精度[21]。

尽管两级探测器取得了成功,但一个自然要问的问题是:一个简单的单级探测器是否能达到相似的精度? 一级探测器应用于对象位置,比例和纵横比的规则,密集采样。 最近关于单级探测器的研究,如YOLO [26,27]和SSD [22,9],展示了有希望的结果,其更快,相对于最先进的两级探测器,其精度在10-40%之内。

本文进一步:我们提出了一个一级物体探测器,它首次匹配更复杂的两级探测器的最先进的COCO AP,例如特征金字塔网络(FPN)[20] ]或更快的R-CNN的mask R-CNN [14]变体[28]。 为了实现这一结果,我们将训练期间的类不平衡识别为阻碍一级探测器实现最先进精度的主要障碍,并提出消除这种障碍的新的损失函数。

类别不平衡在类似R-CNN的探测器中通过两级级联和采样启发式得到解决。proposal阶段(例如,选择性搜索[35],EdgeBoxes [39],DeepMask [24,25],RPN [28])迅速将候选对象位置的数量缩小到较小的数量(例如,1-2k), 过滤掉大多数背景样本。 在第二个分类阶段,执行采样启发式算法,例如固定的前景 – 背景比(1:3)或在线难例挖掘(OHEM)[31],以保持前景和背景之间的可管理平衡。

相反,一级检测器必须处理在图像上定期采样的更大的一组候选对象位置。 在实践中,这通常相当于枚举~100k位置,密集地覆盖空间位置,比例和纵横比。 虽然也可以应用类似的采样启发法,但是它们效率低,因为训练过程仍然由易于分类的背景示例支配。 这种低效率是对象检测中的典型问题,通常通过诸如自举[33,29]或难例挖掘挖掘[37,8,31]等技术来解决。

在本文中,我们提出了一种新的损失函数,它可以作为处理类不平衡的先前方法的一种更有效的替代方法。 损失函数是动态缩放的交叉熵损失,其中缩放因子随着正确类的置信度增加而衰减为零,参见图1。直观地,该缩放因子可以在训练期间自动降低简单示例的贡献并快速聚焦 关于难例的模型。 实验表明,我们提出的焦点损失使我们能够训练一个高精度的单级探测器,它通过采样启发式或难例挖掘显着优于训练的替代方案,这是先前用于训练一级探测器的最先进技术。 最后,我们注意到焦点损失的确切形式并不重要,我们展示其他实例可以实现类似的结果。

为了证明所提出的焦点损失的有效性,我们设计了一个简单的单级物体探测器,称为RetinaNet,以其对输入图像中物体位置的密集采样而命名。 它的设计具有高效的网内特征金字塔和锚箱的使用。 它借鉴了[22,6,28,20]中最近的各种想法。 RetinaNet高效准确; 基于ResNet-101-FPN主干网,我们的最佳模型在以5 fps运行时实现了39.1的COCO测试开发AP,超过了单级和两级探测器之前发布的最佳单模型结果,见图2。

2、 Related Work

经典物体探测器:滑动窗口范例,其中分类器应用于密集图像网格,具有悠久而丰富的历史。 最早的成功之一是LeCun等人的经典着作,将卷积神经网络应用于手写数字识别[19,36]。Viola和Jones [37]使用增强物体探测器进行人脸检测,从而广泛采用这种模型。HOG [4]和整体通道特征[5]的引入为行人检测提供了有效的方法。DPM [8]帮助将密集检测器扩展到更一般的对象类别,并且多年来在PASCAL [7]上取得了最佳成果。虽然滑动窗口方法是经典计算机视觉领域的主要检测范式,但随着深度学习的复兴[18],接下来描述的两阶段检测器很快成为了对象检测的主导。

两级探测器:现代物体探测中的主导范式基于两阶段方法。 作为选择性搜索工作[35]的先驱,第一阶段生成一组稀疏的候选提案,其中应包含所有对象,同时过滤掉大多数负面位置,第二阶段将提案分类为前景类/背景。 R-CNN [11]将第二阶段分类器升级为卷积网络,在准确性方面取得了很大的进步,并开创了现代物体检测的时代。 多年来,R-CNN在速度[15,10]和使用学术对象提案[6,24,28]方面得到了改进。 区域提议网络(RPN)将第二阶段分类器的提议生成集成到单个卷积网络中,形成更快的RCNN框架[28]。 已经提出了对该框架的许多扩展,例如, [20,31,32,16,14]。

单级探测器:OverFeat [30]是第一个基于深度网络的现代单级物体探测器之一。 最近SSD [22,9]和YOLO [26,27]对一阶段方法重新产生了兴趣。这些探测器已针对速度进行了调整,但其准确度与two-state相当。SSD的AP降低了10-20%,而YOLO专注于更加极端的速度/准确性权衡。参见图2.最近的工作表明,通过降低输入图像分辨率和proposal数量,两级探测器也可以很快,但即使计算预算较大,单级方法的准确性也会下降[17]。 相比之下,这项工作的目的是了解一级探测器是否能够以相似或更快的速度运行时匹配或超过两级探测器的精度

我们的RetinaNet探测器的设计与先前的密集探测器有许多相似之处,特别是RPN [28]引入的“锚点”概念以及SSD [22]和FPN [20]中特征金字塔的使用。 我们强调,我们的简单探测器不是基于网络设计的创新而是由于我们的新颖损失而取得了最佳结果。

类别失衡:经典的一阶段物体检测方法,如增强型探测器[37,5]和DPM [8],以及最近的方法,如SSD [22],在训练过程中都面临着巨大的类别不平衡。这些检测器评估每个图像104-105个候选位置,但只有少数位置包含对象。 这种不平衡导致两个问题:(1)训练效率低下,因为大多数位置容易产生负面影响而没有有用的学习信号; (2)总体上,容易否定的东西可以压倒训练并导致退化的模型。 一种常见的解决方案是执行某种形式的难负挖掘hard negative mining [33,37,8,31,22],这些挖掘在训练期间采样难例样本或更复杂的采样/重新加权方案[2]。 相比之下,我们表明我们提出的焦点损失自然地处理了单级探测器所面临的类不平衡,并且允许我们在没有采样的情况下有效地训练所有示例,并且没有容易的负面影响损失和计算的梯度。

稳健估计:人们对设计鲁棒损失函数(例如,Huber损失[13])非常感兴趣,这些函数通过对具有大误差的示例的丢失进行加权(难实例)来减少异常值的贡献。 相比之下,我们的焦点损失不是解决异常值,而是通过降低内部数据(简单示例)来解决类别不平衡问题,这样即使数量很大,它们对总损失的贡献也很小。 换句话说,焦点损失与强健损失的作用相反:它将训练集中在一组稀疏的难例子上。

3. Focal Loss

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

CE损失可以看作图1中的蓝色(顶部)曲线。这种损失的一个值得注意的特性,在其图中很容易看出,即使是容易分类的例子(pt>>0.5)也会导致非平凡的程度的损失。当总结大量简单的例子时,这些小的损失值可以压倒罕见的类。

3.1. Balanced Cross Entropy

解决类不平衡的常用方法是为类1引入加权因子α∈[0,1],对类-1引入1-α。 在实践中,α可以通过逆类频率设置或者被视为超参数以通过交叉验证来设置。 为了符号方便,我们定义αt类似于我们如何定义pt。 我们将α-平衡CE损失写为:

3.2. Focal Loss Definition

正如我们的实验所表明的那样,在密集探测器训练过程中遇到的大类不平衡压倒了交叉熵损失。 容易分类的负数包括大部分损失并主导梯度。 虽然α平衡了正面/负面示例的重要性,但它并没有区分简单/难性示例。 相反,我们建议重塑损失函数,以减轻简单的例子,从而集中培训硬性否定。

更正式地,我们建议在交叉熵损失中添加一个调制因子(1 – pt)^γ,可调聚焦参数γ≥0。我们将焦点损失定义为:


对于图1中的几个γ∈[0,5]值,可以看到焦点损失。我们注意到焦点损失的两个特性。(1)当一个例子被错误分类并且pt很小时,调制因子接近1并且损失不受影响。 当pt→1时,因子变为0,并且对于良好分类的示例的损失是向下加权的。(2)聚焦参数γ平滑地调整容易举例下降的速率。 当γ= 0时,FL等于CE,并且随着γ的增加,调制因子的影响同样增加(我们发现γ= 2在我们的实验中效果最好)。

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

在实践中,我们使用焦点损失的α平衡变体:

我们在实验中采用这种形式,因为它比非α平衡形式产生略微提高的准确性。 最后,我们注意到损耗层的实现将用于计算p的sigmoid操作与损失计算相结合,从而产生更大的数值稳定性。

在我们的主要实验结果中,我们使用上面的焦点损失定义,其精确形式并不重要。 在附录中,我们考虑了局部损失的其他实例,并证明这些可以同样有效。

3.3. Class Imbalance and Model Initialization

默认情况下,二分类模型初始化为具有输出y = -1或1的相等概率。在这种初始化下,在类不平衡的情况下,由于频繁类导致的损失可能主导总损失并导致早期训练的不稳定性。 为了解决这个问题,我们在训练开始时引入了模型估计的稀有类(前景)的p值的“先验”概念。 我们用π表示先验并设置它使得模型的稀有类的例子的估计p很低,例如0.01。 我们注意到这是模型初始化的变化(见4.1部分),而不是损失函数。 我们发现这可以改善在重度不平衡情况下交叉熵和局部损失的训练稳定性。

3.4  Class Imbalance and Two-stage Detectors

两级探测器通常使用交叉熵损失进行训练,而不使用α平衡或我们提出的损耗。 相反,他们通过两种机制解决阶级不平衡问题:(1)两阶段级联和(2)有偏见的小批量抽样。 第一个级联阶段是一个对象提议机制[35,24,28],它将几乎无限的一组可能的对象位置减少到一到两千。 重要的是,选定的提案不是随机的,但很可能与真实的对象位置相对应,从而消除了绝大多数容易出现的否定因素。 当训练第二阶段时,偏向采样通常用于构造包含例如1:3比例的正面和负面例子的mini batch。 该比率类似于通过采样实现的隐含α平衡因子。 我们提出的焦点损失旨在通过损耗函数直接在一级检测系统中解决这些机制。

4. RetinaNet Detector

RetinaNet是一个统一的网络,由骨干网和两个特定于任务的子网组成。 骨干负责在整个输入图像上计算卷积特征图,并且是一个离散卷积网络。 第一个子网在主干的输出上执行卷积对象分类; 第二个子网执行卷积边界框回归。 这两个子网具有一个简单的设计,我们专门为一阶段密集检测提供,参见图3.虽然这些组件的细节有很多可能的选择,但大多数设计参数对精确值并不特别敏感,如图所示。实验。 我们接下来描述RetinaNet的每个组件。

特征金字塔网络骨干:我们采用[20]的功能金字塔网络(FPN)作为RetinaNet的骨干网络。 简而言之,FPN通过自上而下的路径和横向连接增强了标准卷积网络,因此网络从单个分辨率输入图像有效地构建了丰富的多尺度特征金字塔,参见图3(a) – (b)。 金字塔的每个级别可用于检测不同比例的对象。 FPN改进了完全卷积网络(FCN)的多尺度预测[23],如其对RPN [28]和DeepMask式提议[24]的增益所示,以及快速R-CNN等两级探测器[ 10]或Mask R-CNN [14]。

在[20]之后,我们在ResNet架构之上构建了FPN [16]。 我们构建了一个级别为P3到P7的金字塔,其中l表示金字塔等级(Pl的分辨率比输入低2 l)。 如[20]中所有金字塔等级都有C = 256个通道。 金字塔的细节通常遵循[20],只有一些适度的差异。虽然许多设计选择并不重要,但我们强调FPN主干的使用; 使用仅来自最终ResNet层的特征的初步实验产生了低AP。

锚点:我们使用类似于[20]中RPN变体中的平移不变锚点框。 锚在金字塔等级P3至P7上分别具有322至5122的区域。 如[20]所示,在每个金字塔等级,我们使用三个宽高比{1:2,1:1,2:1}的锚点。 对于比[20]中更密集的比例覆盖,在每个级别,我们添加原始3个纵横比锚点的大小{2^0, 2^(1/3), 2^(2/3)}的锚。 这在我们的设置中改善了AP。 总的来说,每个级别有一个A = 9个锚点,并且它们覆盖了相对于网络输入图像的比例范围32 – 813像素。

为每个锚指定一个长度为K的分类目标的单热矢量,其中K是对象类的数量,以及一个4向量的框回归目标。 我们使用来自RPN [28]的分配规则,但修改了多类检测和调整后的阈值。 具体而言,使用0.5的交叉联合(IoU)阈值将锚分配给GT对象框; 如果他们的IoU在[0,0.4]中,则为背景。 由于每个锚被分配给至多一个对象框,我们将其长度K标签向量中的相应条目设置为1,并将所有其他条目设置为0.如果未分配锚,可能overlap在[0.4,0.5), 在训练期间被忽略。Box回归目标计算为每个锚点与其指定对象框之间的偏移量,如果没有赋值,则省略。

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

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

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

4.1. Inference and Training

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

焦点损失:我们使用此工作中引入的焦点损失作为分类子网输出的损失。正如我们将在5部分中所示,我们发现γ= 2在实践中运行良好,而RetinaNet对γ∈[0.5,5]相对稳健。我们强调,在训练RetinaNet时,焦点损失应用于每个采样图像中的所有~100k锚点。这与使用启发式采样(RPN)或难示例挖掘(OHEM,SSD)为每个小批量选择一小组锚(例如,256)的常规做法形成对比。图像的总焦点损失被计算为所有~100k锚点上的焦点损失的总和,通过分配给GT框的锚点的数量来标准化。我们归一化指定数量的锚点而不是总锚点,因为绝大多数锚点都是easy negative并且在焦点损失下获得可忽略的损失值。最后我们注意到,分配给稀有类别的α也具有稳定的范围,但它与γ相互作用,因此必须将两者一起选择(见表1a和1b)。通常,随着γ增加,α应略微减小(对于γ= 2,α= 0.25最佳)。

初始化:我们使用ResNet-50-FPN和ResNet-101-FPN骨干进行实验[20]。 基础ResNet-50和ResNet-101型号在ImageNet1k上进行了预训练; 我们使用[16]发布的模型。 为FPN添加的新层初始化为[20]。 除了RetinaNet子网中的最后一个以外的所有新的conv层都用偏置b = 0和高斯权重填充来初始化,其中σ= 0.01。 对于分类子网的最终转换层,我们将偏差初始化设置为b = – log((1-π)/π),其中π指定在训练开始时每个锚应标记为前景,置信度为〜π。 我们在所有实验中使用π= .01,尽管结果对精确值是稳健的。 如§3.3中所述,此初始化可防止大量背景锚点在第一次训练迭代中生成大的,不稳定的损失值。

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

5. Experiments

我们在具有挑战性的COCO基准[21]的边界框检测轨迹上提供实验结果。 对于训练,我们遵循惯例[1,20]并使用COCO trainval35k分割(来自火车的80k图像和来自40k图像val分割的随机35k图像子集合)。 我们通过评估迷你分裂(来自val的剩余5k图像)来报告病变和敏感性研究。 对于我们的主要结果,我们在test-dev拆分中报告COCO AP,该拆分没有公共标签并且需要使用评估服务器。

5.1. Training Dense Detection

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

网络初始化:我们首次尝试培训RetinaNet使用标准交叉熵(CE)丢失,而无需对初始化或学习策略进行任何修改。 由于网络在培训期间出现分歧,因此很快就会失败。 然而,简单地初始化我们模型的最后一层,使得检测对象的先验概率是π= .01(参见§4.1),可以实现有效的学习。 使用ResNet-50训练RetinaNet并且这种初始化已经在COCO上产生了可观的AP为30.2。 结果对π的精确值不敏感,因此我们对所有实验使用π= .01。

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

焦点损失:使用我们建议的焦点损失的结果如表1b所示。 焦点损失引入了一个新的超参数,聚焦参数γ,它控制调制项的强度。 当γ= 0时,我们的损失相当于CE损失。 随着γ增加,损耗的形状发生变化,因此低损耗的“简单”示例进一步折扣,见图1.当γ增加时,FL在CE上显示出大的增益。 当γ= 2时,FL比α平衡CE损失产生2.9AP的改善。

对于表1b中的实验,为了公平比较,我们发现每个γ的最佳α。 我们观察到较低的α被选择用于较高的γ(因为easy negative被降低,所以不太需要强调阳性)。 但总的来说,改变γ的好处要大得多,实际上最好的α的范围只有[.25,.75](我们测试了α∈[.01,.999])。 对于所有实验,我们使用γ= 2.0,α= .25,但α= .5几乎也起作用(.4 AP更低)。

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

正负样本的累积分布函数如图4所示。如果我们观察到正样本,我们会发现CDF对于不同的γ值看起来非常相似。 例如,大约20%的最难的阳性样本占正损失的大约一半,因为γ增加了更多的损失集中在前20%的例子中,但效果很小。

γ对阴性样品的影响是显着不同的。 对于γ= 0,正CDF和负CDF非常相似。 然而,随着γ增加,实质上更多的重量集中在难阴性实例上。 事实上,当γ= 2(我们的默认设置)时,绝大部分损失来自一小部分样本。 可以看出,FL可以有效地抵消容易否定的影响,将所有注意力集中在难性负面例子上。

在线难例挖掘(OHEM):[31]提出通过使用高损耗示例构建微型舱来改进两级探测器的训练。 具体而言,在OHEM中,每个示例通过其损失进行评分,然后应用非最大抑制(nms),并且构建具有最高损失示例的小批量。 nms阈值和批量大小是可调参数。 与焦点损失一样,OHEM更加重视错误分类的例子,但与FL不同,OHEM完全抛弃了简单的例子。 我们还实施了SSD中使用的OHEM变体[22]:在对所有示例应用nms之后,构建小批量以实现正负之间的1:3比率,以帮助确保每个小批量具有足够的正数。

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

铰链损失:最后,在早期实验中,我们尝试用pt上的铰链损失[13]进行训练,将损耗设置为高于某个pt值的0。 然而,这是不稳定的,我们无法获得有意义的结果。 探讨备用损失函数的结果见附录。

5.2. Model Architecture Design

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

我们扫描了FPN中每个空间位置和每个金字塔等级使用的比例和纵横比锚点的数量。我们考虑从每个位置的单个方形锚到每个位置12个锚的情况,跨越4个子八度音阶(2 k / 4,k≤3)和3个纵横比[0.5,1,2]。使用ResNet-50的结果显示在表1c中。仅使用一个方形锚就可以获得令人惊讶的良好AP(30.3)。但是,当每个位置使用3个比例和3个宽高比时,AP可以提高近4个点(至34.0)。我们在此工作中将此设置用于所有其他实验。

最后,我们注意到增加超过6-9个锚点没有显示出进一步的收益。因此,虽然两阶段系统可以对图像中的任意框进行分类,但是性能的饱和度如下所述。密度意味着两级系统的较高潜在密度可能无法提供优势。

速度与准确度:较大的骨干网络可以提高精度,但速度也较慢。同样,对于输入图像比例(由较短的图像侧定义)。我们在表1e中显示了这两个因素的影响。在图2中,我们绘制了RetinaNet的速度/准确度权衡曲线,并将其与使用COCO test-dev上的公共数字的最新方法进行比较。该图表显示,由我们的焦点损失实现的RetinaNet形成了所有现有方法的上限,低估了低精度制度。具有ResNet-101-FPN和600像素图像比例的RetinaNet(我们通过RetinaNet-101-600表示简化)与最近发布的ResNet101-FPN更快的R-CNN [20]的准确度相匹配,同时运行122 ms图像与172毫秒相比(均在Nvidia M40 GPU上测量)。使用更大的秤可以使RetinaNet超越所有两阶段方法的准确性,同时仍然更快。为了加快运行时间,只有一个工作点(500像素输入)使用ResNet-50-FPN比ResNet-101-FPN有所改进。解决高帧率制度可能需要特殊的网络设计,如[27],并且超出了这项工作的范围。我们注意到,在发布之后,现在可以通过来自[12]的更快的R-CNN变体获得更快和更准确的结果。

5.3. Comparison to State of the Art

我们在具有挑战性的COCO数据集上评估RetinaNet,并将测试结果与最新的最新方法(包括一阶段和两阶段模型)进行比较。 对于我们使用比例抖动训练的RetinaNet-101-800模型和比表1e中的模型长1.5倍(给出1.3 AP增益),结果显示在表2中。 与现有的一阶段方法相比,我们的方法与最接近的竞争对手DSSD [9]达到了健康的5.9点AP差距(39.1对33.2),同时也更快,见图2.与最近的两阶段方法相比, RetinaNet在基于Inception-ResNet-v2-TDM的最佳性能更快的R-CNN模型上实现了2.3个点的差距[32]。 插入ResNeXt32x8d-101-FPN [38]作为RetinaNet骨干进一步改善了结果,另外1.7 AP,超过了COCO的40 AP。

6. Conclusion

在这项工作中,我们将类不平衡确定为阻止一级物体探测器超越最佳性能的两阶段方法的主要障碍。 为了解决这个问题,我们提出了焦点损失,它将调制项应用于交叉熵损失,以便将学习重点放在难负面例子上。 我们的方法简单而有效。 我们通过设计一个完全卷积的单级检测器来证明其功效,并报告了广泛的实验分析,表明它实现了最先进的精度和速度。 源代码可在https://github.com/facebookresearch/Detectron [12]获得。

Appendix A: Focal Loss*

焦点损失的确切形式并不重要。 我们现在展示焦点损失的替代实例,其具有相似的属性并产生可比较的结果。 以下内容还提供了对焦点损失属性的更多见解。

我们首先考虑交叉熵(CE)和焦点损失(FL),其形式与正文略有不同。 具体来说,我们定义一个数量xt如下:

FL *有两个参数γ和β,它们控制损耗曲线的陡度和偏移。 我们在图5中沿着CE和FL绘制了两个选定的γ和β设置的FL *。 可以看出,与FL一样,具有所选参数的FL *减少了分配给良好分类的示例的损失。

我们使用与之前相同的设置训练RetinaNet-50-600,但我们用所选参数替换FL * FL *。 这些模型实现了几乎与使用FL训练的AP相同的AP,参见表3.换句话说,FL *是FL的合理替代方案,在实践中运行良好。

我们发现各种γ和β设置都给出了良好的结果。 在图7中,我们显示了具有FL *的RetinaNet-50-600的结果,用于一组广泛的参数。 损失图是彩色编码的,因此有效设置(模型收敛且AP超过33.5)以蓝色显示。 为简单起见,我们在所有实验中使用α= .25。 可以看出,降低分类良好的例子(xt> 0)的权重的损失是有效的。

更一般地说,我们期望具有与FL或FL *类似属性的任何损失函数同样有效。

Appendix B: Derivatives

 

 

 

 




上一篇:
下一篇:

头像

guodong

没有评论


你先离开吧:)