Focal Loss for Dense Object Detection

快来打我* 2022-12-17 07:04 251阅读 0赞

摘要

迄今为止最高精度的物体检测器是由两级组成的检测器,典型代表是R-CNN,其中R-CNN的分类器被应用于有很少元素的预选框集。相反,一级检测器被更加广泛地使用,密集的区域预选使网络有可能变得更快更简单,但到目前为止,其检测的准确性仍落后于两级检测器。在本文中,我们讨论了为什么会出现这样的情况。我们发现在训练密集检测器的过程中遇到的极端的前景 - 背景类不平衡是造成一级检测器准确性较差的主要原因。我们提出解决这一类不平衡问题的方法:通过重塑标准交叉熵损失,以降低分配给分类良好的样本的损失。在训练阶段,我们新颖的Focal Loss专注于那些很少但很难被分类的样本上,以防止大量的容易被分类的负样本在训练期间主导检测器的训练。为了评估我们损失函数的有效性,我们设计并训练了一个简单的密集检测器,我们称之为RetinaNet。我们的结果表明,在用焦点损失训练时,RetinaNet能够匹配以前的一级检测器的速度,同时精度超过所有现有的最先进的两级检测器。

一、介绍

当前最优秀的目标检测器使用的都是一种由 proposal 驱动的 two-stage 机制。和在 R-CNN 框架中一样,第一个阶段生成一个候选目标位置组成的稀疏样本集,第二个阶段使用一个卷积神经网络将各候选位置归至 foreground 类别或 background 类别。随着这些文字的改进[10,28,20,14],two-stage 框架可以在难度极高的 COCO benchmark 上一直保持很高的准确度。
既然 two-stage 检测器的结果这么好,那么一个很自然的问题是:简单的 one-stage 检测器是否也能实现类似的准确度? one-stage 检测器主要应用在由目标位置(object locations)、尺度(scales)和长宽比(aspect ration)组成的规则密集样本集上。最近对 one-stage 检测器(如 YOLO 和 SSD)进行的试验都得出了优秀的结果,相比最优秀的 two-stage 方法,one-stage 检测器速度更快,而且能实现 10%- 40% 的准确度。
本文进一步提高了 one-stage 检测器的性能:我们设计出了一个 one-stage 目标检测器,并首次达到了更复杂的 two-stage 检测器所能实现的最高 COCO 平均精度,例如FPN(特征金字塔网络,Feature Pyramid Network) 或 Mask R-CNN(Faster R-CNN的变体)。我们发现训练过程中的类别失衡是阻碍单阶段检测器实现这个结果的主要障碍,并提出了一种新的损失函数来消除这个障碍。
R-CNN 检测器通过两阶段的级联(cascade)和启发式采样(sampling heuristics)解决类别失衡问题。Proposal 阶段(如Selective Search、EdgeBoxes 、DeepMask 和 RPN)可以快速地将候选目标位置的数目缩至更小(例如 1000-2000),过滤掉大多数背景样本。在接下来的分类阶段中,应用启发式抽样法(sampling heuristics),例如一个固定的前景样本背景样本比(1:3),或者在线困难样本挖掘法(online hard example mining),在 foreground 样本和 background 样本之间维持可控的平衡。
相反,one-stage 检测器则必须处理一个由图像中规则分布的候选目标位置组成的大样本集。在实践中,目标位置的总数目通常可达 10 万左右,并且密集覆盖空间位置、尺度和长宽比。虽然还可以应用类似的抽样启发法,但是这些方法在易分类的背景样本支配训练过程的情况下依然会失效。这种失效是目标识别中的一个典型问题,通常使用 bootstrapping 或困难样本挖掘来解决。
在本文中,我们提出了一个新的损失函数,它可以替代以往用于解决类别失衡问题的方法。这个损失函数是一个动态缩放的交叉熵损失函数,随着正确分类的置信度增加,函数中的比例因子缩减至零,见图1。在训练过程中,这个比例因子可以自动地减小简单样本的影响,并快速地将模型集中在困难样本上。试验证明,Focal Loss 函数可以使我们训练出准确度很高的 one-stage 检测器,并且在性能上超越使用抽样启发法或困难样本挖掘法等以往优秀方法训练出的 one-stage 检测器。最后,我们发现 Focal Loss 函数的确切形式并不重要,并且证明了其他实例(instantiations)也可以实现类似的结果。
在这里插入图片描述

图1:我们提出了一种新的损失函数 Focal Loss(焦点损失),这个损失函数在标准的交叉熵标准上添加了一个因子 (1- pt) γ 。设定 γ > 0 可以减小分类清晰的样本的相对损失(pt > .5),使模型更加集中于困难的错误分类的样本。试验证明,在存在大量简单背景样本(background example)的情况下,我们提出的 Focal Loss 函数可以训练出准确度很高的密集对象检测器。
为了证明这个 Focal Loss 函数的有效性,我们设计了一个简单的 one-stage 目标检测器—RetinaNet,它会对输入图像中目标位置进行密集抽样。这个检测器有一个高效的 in-network 特征金字塔(feature pyramid),并使用了锚点盒(anchor box)。我们在设计它时借鉴了很多种想法[22,6,28,20]。RetinaNet 的检测既高效又准确。我们最好的模型基于 ResNet-101- FPN 骨干网,在 5fps 的运行速度下,我们在 COCO test-dev 上取得了 39.1 AP 的成绩,如图2 所示,超过目前公开的单一模型在 one-stage 和 two-stage 检测器上取得的最好成绩。
在这里插入图片描述
图2:横坐标是检测器在COCO test-dev 上的检测速度(ms),纵坐标是准确度(AP: average precision)的比值。在 Focal Loss 的作用下,我们简单的 one-stage RetinaNet 检测器打败了先前所有的 one-stage 检测器和 two-stage 检测器,包括目前成绩最好的 Faster R-CNN系统。我们在图 2 中按 5 scales(400-800 像素)分别用蓝色圆圈和橙色菱形表示了 ResNet-50-FPN 和 ResNet-101-FPN 的 RetinaNet 变体。忽略准确度较低的情况(AP < 25),RetinaNet 的表现优于当前所有的检测器,训练时间更长时的检测器达到了 39.1 AP 的成绩。

二、相关工作

经典的目标检测器: 滑动窗口范例,在稠密的图像网格上应用一个分类器,有着悠久而丰富的历史。最早的成功之一是LeCun等人的经典工作,他们将卷积神经网络应用于手写数字识别[19,36]。Viola和Jones[37]使用了增强的物体探测器来检测人脸,导致了这类模型的广泛采用。[4]介绍了HOG和积分通道的特点,[5]产生了有效的行人检测方法。DPMs[8]帮助将稠密检测器扩展到更一般的对象类别,并且多年来在PASCAL[7]上都获得了最好的结果。虽然滑动窗口方法是经典计算机视觉中领先的检测范式,但随着深度学习[18]的兴起,接下来描述的两级检测器很快占据了目标检测的主导地位。
两阶段探测器: 现代目标探测的主导范式是基于两阶段方法。正如在选择性搜索工作[35]中所开创的,第一阶段生成一个稀疏的候选建议集,它应该包含所有的对象,同时过滤掉大部分的负面位置,第二阶段将建议分类到前景类/背景类。R-CNN[11]将第二阶段分类器升级为卷积网络,准确率大幅提高,迎来了目标检测的现代时代。R-CNN在过去几年里得到了改进,无论是在速度方面[15,10]还是通过使用学习对象proposal[6,24,28]。区域建议网络(Region Proposal Networks, RPN)将提案生成与第二阶段分类器集成到一个单一卷积网络中,形成速度更快的RCNN框架[28]。对该框架的许多扩展已被提出,例如[20,31,32,16,14]。
一阶段探测器: OverFeat[30]是第一个现代的基于深度网络的一级目标探测器。最近,SSD[22,9]和YOLO[26,27]重新燃起了人们对一次性方法的兴趣。这些探测器的速度已经过调整,但其精度仍落后于两级方法。SSD的AP低10-20%,而YOLO更注重速度和准确度的取舍。参见图2。最近的研究表明,只需降低输入图像的分辨率和建议的数量,两级探测器就可以快速完成,但单级方法在精度方面落后于较大的计算预算[17]。相比之下,这项工作的目的是了解在相同或更快的速度下,单级探测器是否能够匹配或超过两级探测器。
我们的RetinaNet检测器的设计与之前的密集检测器有很多相似之处,特别是RPN[28]引入的“锚”概念,以及SSD[22]和FPN[20]中金字塔特征的使用。我们要强调的是,我们的简单检测器能够获得最好的结果,不是基于网络设计的创新,而是由于我们的新损失。
类不平衡 像 boosted detectors、DPMs 这样的经典一阶段检测器以及SSD在训练中都面临类极不平衡问题。这些检测器对每张候选图产生10e4-10e5个候选框,但只有极少数内存在物体。这种类不平衡导致两个问题:由于绝大多数候选框定位是简单负样本贡献了无用的学习信号,对它们的训练是无效的同时简单负样本主导训练使得模型degenerate。主流解决思路是做一些困难样本挖掘的工作[33,37,8,31,22],例如训练时在困难样本中抽样或更复杂的抽样、重设权重策略[2]。相比之下,我们证明了我们所提出的focal loss自然地处理了单级检测器所面临的类不平衡,并允许我们有效地训练所有的例子,而不需要采样,也不需要容易的负面因素来抵消损失和计算的梯度。
鲁棒估计: 人们对设计鲁棒损失函数(例如Huber损失[13])很感兴趣,该函数通过降低具有较大误差的例子(硬例子)的损失的权重来减少异常值的贡献。相反,我们的焦点损失不是针对离群值,而是通过降低inliers的权重来解决类不平衡(简单的例子),这样即使它们的数量很大,它们对总损失的贡献也很小。换句话说,集中损失执行一个鲁棒损失相反的角色:它集中在一个稀疏的硬例子集的训练。

三、Focal loss

Focal loss的设计是为了解决单阶段的目标检测场景,其中有一个极端不平衡之间的前景和背景类在训练期间(例如,1:1000)。我们从二元分类1的交叉熵(CE)损失开始引入Focal loss:
在这里插入图片描述
在上面的y∈{±1}指定真实类,p∈[0,1]是模型对标签y = 1的类的估计概率。为了便于标记,我们定义pt:
在这里插入图片描述
和重写CE(p,y) = CE(pt) =-log(pt)。
CE损失如图1中蓝色(上方)曲线所示。这个损失的一个显著特性是,可以很容易地看到它的情节,甚至当样本很容易分类时(pt ≥ 5),产生的损失也会很大。当对大量简单的样本进行求和时,这些小的损失值可能会压倒稀有类。

3.1 Balanced Cross Entropy

解决类不平衡的常用方法是引入权重因子α∈ [0;1],类1为权重为α,类-1权重为1-α。在实际应用中α可以通过逆类频率来设置,也可以作为交叉验证的超参数来设置。为了便于标记,我们类比pt定义了αt。我们将CE的平衡损失写成:
在这里插入图片描述

3.2 Focal Loss

正如我们的实验所表明的那样,在密集型探测器训练期间遇到的大类失衡压倒了交叉熵损失。容易分类的负面因素组成了大部分的损失,并且主宰着梯度。 虽然 α 平衡正/负样本的重要性,但它并没有区分简单/困难的样本。我们建议重塑损失函数来减轻简单的例子比重从而将训练集中在难以消除的问题上。
更正式的,我们建议给交叉熵损失增加一个调节因子 ( 1 − p t ) γ (1−p_t)^γ (1−pt)γ,其中γ具有可调焦距参数,γ≥0,我们定义Focal Loss 为
在这里插入图片描述
在图1中,焦点损失可视化出几个值: γ∈[1,5] 。我们注意到焦点损失的两个性质。当一个例子被错误分类并且 pt很小时,调制因子接近1,损失不受影响。当pt→1 ,该因子变为0,良好分类的例子的损失权重被降低。聚焦参数γ可以平滑调整简单样本下降的速率。当 γ = 0时,FL等同于CE,并且随着 γ 增加,调节因子的作用也增加(我们发现 γ = 2在我们的实验中最佳)。
直观地看,调制因子减小了简单样本的损耗贡献,扩展了例的低损耗范围。例如,γ= 2时,一个样本被分类的pt = 0.9,它的loss会比CE低100倍,pt = 0.968,它的loss会比CE低1000倍。这反过来增加了纠正错误分类的样本的重要性(这些样本的损失在γ=2,pt≤0.5时被放大至4倍)
最终在实验中使用的Focal Loss 如下公式,同时发现若计算p的loss层结合sigmoid操作会使得结果更加稳定。
在这里插入图片描述
我们在实验中采用这种形式,因为它比无α平衡形式的精度略有提高。最后,我们注意到损耗层的实现将计算p的sigmoid操作与损耗计算结合在一起,使得数值稳定性更强。
虽然在我们的主要实验结果中我们使用上面的焦点损失定义,但其确切形式并不重要。在附录中,我们考虑焦点损失的其他实例并证明这些可以同样有效。

3.3 类不平衡和模型初始化

二元分类模型默认初始化为具有输出 y = -1 or 1 的相等概率。在这种初始化下,如果存在类别失衡,频繁类造成的损失可能会主宰总损失,并导致早期训练不稳定。 为了解决这个问题,我们引入了一个“先验”的概念,用于在训练开始时模型对稀有类(foreground)估计的p值。我们通过Π表示先验,这样模型的估计p稀有类的样本很低,例如0.01。我们注意到,这是模型初始化的变化(参见x4.1),而不是损失函数的变化。我们发现,在严重的类不平衡情况下,这可以提高交叉熵和焦点损失的训练稳定性。

3.4 类不平衡和 two stage 探测器

两阶段探测器的训练经常使用交叉熵损失,而不使用“α平衡交叉熵损失”或我们建议的损失。相反,他们通过两种机制解决阶级失衡问题:(1)两阶段级联和(2)偏置小批量采样。第一个级联阶段是一个对象建议机制,它将几乎无限的可能对象位置集合减少到一两千个。重要的是,选定的提案并非随机的,但很可能对应于真实的物体位置,这消除了绝大多数简单的负样本。 在训练第二阶段时,偏置采样通常用于构造包含,例如,1:3的正反比例。这个比例就像一个隐含的“平衡因素”,通过抽样来实现。我们提出的焦点损失旨在直接通过损失函数在一个阶段的检测系统中解决这些机制。

四、RetinaNet Detector

RetinaNet是由骨干网和两个特定任务子网组成的单阶段联合网络。主干负责计算整个输入图像上的卷积特征映射,并且是一种通用(off-the-shelf)的卷积网络。第一个子网在骨干的输出上执行卷积对象分类;第二个子网执行卷积BBox回归。这两个子网具有一个简单的设计,我们专门为单阶段密集检测而提出,参见图3。虽然这些组件的细节有很多可能的选择,如实验所示,大多数设计参数对精确值不是特别敏感。我们接下来描述RetinaNet的每个组件。
特征金字塔网络主干 我们采用[20]中的特征金字塔网络(FPN)作为RetinaNet的主干网。简而言之,FPN通过自上而下的路径和横向连接增强了标准卷积网络,因此网络可以从一个单一的分辨率输入图像有效地构建一个丰富,多尺度特征金字塔,见图3(a)-(b)。金字塔的每个级别都可以用于检测不同比例的对象。FPN是改进了完全卷积网络(FCN)的多尺度预测[23],在RPN [28]和DeepMask-style proposals[24],以及two stage 检测器如 Fast R-CNN [10]或Mask R-CNN [14]都有体现。
在[20]之后,我们在ResNet架构之上构建FPN[16]。我们构建了一个P3到P7的金字塔, 其中 l 表示金字塔等级(P1的分辨率是输入分辨率的 2 l 2^l 2l分之一)。正如[20]中一样,所有金字塔层都有C = 256个通道。金字塔的细节通常遵循[20],并有一些适度的差异。虽然许多设计选择并不重要,但我们强调使用FPN主干网;仅使用最终ResNet层的特征的初步实验AP低。
Anchors 我们使用类似于[20]中RPN变体的有平移不变性的锚点框。在金字塔等级P3到P7上,锚点的面积分别为 3 2 2 32^2 322到 51 2 2 512^2 5122。如[20]中所述,在每个金字塔等级,我们使用三个长宽比{1:2,1:1,2:1},为了比[20]更密集的比例覆盖,我们在每个级别添加六个长宽比 { 2 0 , 2 1 / 3 , 2 2 / 3 } \{2^0,2^{1/3},2^{2/3}\} { 20,21/3,22/3}这在我们的设置中提高了AP。总共有在每个层级有A = 9个锚点,综合所有层级它们覆盖输入图像 32-813 的像素范围。
每个锚点分配一个长度为K的 one-hot 的分类对象,其中K是对象类的数量,以及4个回归框的回归目标。我们使用RPN [28]中设定的规则,但修改成了多类别检测和并调整阈值。特别是,使用 IoU=0.5 的阈值将 Anchor 分配给ground truth 对象框;如果他们的IoU位于[0,0.4),则为背景。由于每个锚点至多分配一个对象框,因此我们将其长度K标签矢量中的对应条目设置为1,所有其他条目设置为0。如果锚点未分配,可能会在[0.4,0.5]中发生重叠,则在训练期间将忽略它。BBox的回归目标被计算为每个锚点之间的偏移量及其分配的对象框,如果没有分配则省略。
在这里插入图片描述

分类子网 分类子网预测 A个Anchor 所在位置存在物体的可能性和K个分类概率。 该子网是接在每个FPN层后的小型FCN;该子网的参数在所有金字塔级别共享。它的设计很简单。从给定的金字塔层的输入有C个通道的特征,子网实现了4个3x3个conv层(每个conv层带有C滤波器接ReLU激活),接着是带有KA通道的3*3 conv层。最后用sigmoid激活来输出每个空间位置的KA二进制预测,参见图3©。在大多数实验中我们使用C = 256和A = 9。
与RPN [28]相比,我们的对象分类子网更深入,仅使用3x3卷积层,并且不与bbox regression子网共享参数。我们发现这些更高层次的设计决策比超参数的特定值更重要。bbox regression 子网与对象分类子网并行,我们为每个金字塔层附加另一个小FCN,以便从每个锚箱到附近的真实物体(如果存在)进行回归。
框回归子网 的设计与分类子网相同,只是它在每个空间位置以4A线性输出终止,见图3(d)。对于每个空间位置的每个A锚点,这4个输出预测锚点和实体之间的相对偏移量框(我们使用RCNN [11]中的标准框参数化)。我们注意到,与最近的工作不同,我们使用类别不可知的框回归器,它使用较少的参数,我们发现它们同样有效。对象分类子网和bbox regression 子网,尽管共享一个共同的结构,但使用独立的参数。

4.1 推断和训练

推断: RetinaNet形成了一个单一的FCN,由ResNet-FPN主干、分类子网和框回归子网组成,见图3。因此,推断只涉及通过网络转发一个映像。为了提高速度,我们每一FPN级别只解码最多1k的最高得分预测,阈值化检测器置信度为0.05后。所有级别的最高预测被合并,并使用阈值为0.5的非最大抑制来产生最终的检测结果。
focal损失: 我们使用本文中引入的焦点损失作为分类子网输出的损失。正如我们将在5节中展示的那样,我们发现γ= 2在实践中工作得很好,并且RetinaNet在γ∈[0.5,5]相对鲁棒;我们强调,当训练RetinaNet焦损失是应用于所有100 k锚在每个采样图像。这与使用启发式抽样(RPN)或硬示例挖掘(OHEM, SSD)为每个小批选择一组小锚(例如,256)的常见做法形成了对比。焦总损失计算图像的局部损失的总和所有 100 k锚,规范化锚的数量分配给一个真实的盒子。我们通过分配锚点的数量来进行归一化,而不是全部锚点,因为绝大多数锚点都是简单的负样本,并且在焦点损失下得到的损失值可以忽略不计。最后我们注意到,分配给rare类的权值α也有一个稳定的范围,但是它会相互作用,使得有必要同时选择这两个类(见表1a和表1b)。一般来说,当γ增加时应该α稍微减少(forγ = 2,α= 0.25最好)。
在这里插入图片描述
初始化: 我们用ResNet-50-FPN和ResNet-101-FPN骨干[20]进行实验。基本的ResNet-50和ResNet-101模型是在ImageNet1k上预先训练的;我们使用的是[16]发布的机型。为FPN添加的新层被初始化为[20]。所有新conv层RetinaNet子网中除了最后一个初始化与偏见b = 0和高斯的q权重充满σ= 0.01。最后conv层分类子网,我们设置了偏见初始化到b =-log((1-Π)/Π),其中Π指定的训练的每一个锚都应该标记为前景的置信~Π。我们使用Π=.01在所有的实验中,尽管结果是强劲的精确值。正如3.3节中所解释的,这个初始化可以防止大量的背景锚点在第一次迭代训练时产生一个巨大的、破坏稳定的损失值。
优化: 采用随机梯度下降(SGD)训练RetinaNet。我们使用超过8个GPU的同步SGD,每个小批共16个图像(每个GPU 2个图像)。除非另有说明,所有模型都以0.01的初始学习率训练90k次迭代,然后在60k次迭代时再除以10,在80k次迭代时再除以10。除非另有说明,否则我们使用水平图像翻转作为数据增强的唯一形式。重量衰减为0.0001,动量为0.9。训练损失为盒回归[10]所用的焦损失和标准平滑L1损失之和。表1e中模型的训练时间为10 - 35小时。

五、实验

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

5.1 Training Dense Detection

我们跑了大量实验来分析对于密集检测使用各种优化策略的损失函数的行为。对于所有实验我们都使用带有FPN的ResNet50或101。对于所有的模型简化实验,我们使用尺度为600像素的图像进行训练和测试。Network Initialization首先尝试使用标准CE loss来训练 RetinaNet,不进行任何初始化或者学习策略的修改。这个方法失败,网络在训练时无法收敛。然而,简单地将模型的最后一层加入物体预测先验概率π=.01 就能够使网络有效的训练。使用这个初始化和ResNet-50已经能在COCO上生成30.2的AP。模型对于π的数值并不敏感。Balanced Cross Entropy我们接下来尝试使用α-balanced CE loss。设置α=.75,AP增加了0.9。Focal lossfocal loss引入了一个新的超参数,聚焦参数γ,用来控制调整项的强度。如果γ=0,我们的loss和CE loss相同。当γ增加,loss在好分类例子上的变化使得好分类例子被大打折扣,如图1。γ=2的FL在AP上相对于α-balanced CE loss上升2.9。Analysis of the Focal Loss为了更好的理解focal loss,我们分析了收敛模型的损失函数的经验分布。我们使用默认的采用600像素作为输入,γ=2训练出的ResNet-101模型。我们对模型输入大量的随机的图像,然后采样了 107个负窗口的预测概率和 105个正窗口的预测概率。然后,分别对于这些正负样本,我们计算FL,然后对它们进行标准化,使它们和为1。有了归一化后的值,我们可以分别对正负样本从低到高的按loss进行排序,然后画出不同γ下的CDF(累积分布函数)。正负样本的CDF(如图4)。如果我们观察正样本,会发现CDF对于不同γ值来说大致是相似的。大约20%的正样本难例占了大约一半的正损失,当γ增加,损失会越来越集中于top 20%的样本,但是这种效果是微小的。对于负样本,γ的影响就非常不同,如γ=2,FL能够非常有效的折扣负样本简单例的效果,使得模型所有注意力都在负难例上。
Online Hard Example Mining (OHEM) 在线难样本挖掘OHEM中所有样本经过计算损失值,然后使用NMS过滤,最后在minibatch时选择损失值最大的那些样本。OHEM关注误分类样本,不同于FL,OHEM完全忽略的易分类样本。如Table 1d所示,最好的OHEM与FL有3.2点AP差距。Hinge Loss先前使用中尝试对 pt 使用Hinge Loss;对 pt 值大于某个阈值的样本,损失函数置为零。但是训练过程不稳定,并且也达不到有价值的效果。

5.2 Model Architecture Design

Anchor密度one-stage检测器的anchor密度到底多少才能覆盖任意图像边框。Two-stage检测器通过Region Pooling(ROI Pooling)可以对边框的任何位置、尺寸、长宽比归类。相比之下,one-stage 检测器使用一个固定的采样网格,一个常用的方法是在每个空间位置使用多个anchors来覆盖不同的尺寸和长宽比边框。我们在FPN每一层的每个空间位置使用不同个数的尺寸和长宽比anchors。在ResNet-50从使用1个方形anchor到12个anchors(尺寸为2k/4 2^{k/4} 2k/4, k ≤ 3,长宽比为 [0.5, 1, 2],见Table 1c)。令人惊讶的是只使用1个anchor情况下AP就有30.3;当使用3中尺寸和3中长宽比时可以到达34.0。
最终,我们发现再增加6~9个anchors也没有更多的提升。虽然two-stage检测器可以识别图片中任意的边框;性能的饱和度w.r.t. 密度意味着较高潜在密度的two-stage系统的可能不具有优势。速度VS准确率
a) 更大的主干网有更好的准确率,但速度更慢;输入图像的尺寸也是如此,见Table 1e。b) 图Figure 2 展示RetinaNet和其它方法在速度/精度的比较;RetinaNet 使用FL超过所有的方法,打破低精度的限制。ResNet-101-FPN在600像素尺寸时的精确度超过ResNet101-FPN Faster R-CNN,同时检测时间为122ms,Faster R-CNN为172ms。c) 追求速度需要特殊的网络设计如Yolo 9000。总结类别不均衡是导致one-stage检测器超越two-stage检测器的主要障碍。我们提出 focal loss在交叉熵损失函数中使用一个调节项来聚焦于困难负样本。方法简单有效。通过一个one-stage的FCN检测器在速度和精度同时达到stage-of-the-art。

6 结论

在这项工作中,我们确定类不平衡是阻止单阶段对象检测器超越性能最好的两阶段方法的主要障碍。为了解决这个问题,我们提出了焦点损失,它对交叉熵损失应用一个调制项,以集中学习硬的负例子。我们的方法简单而高效。我们设计了一个全卷积的一级检测器来证明它的有效性,并报告了大量的实验分析,表明它达到了先进的精度和速度。源代码可在https://github.com/facebookresearch/Detectron\[12\]获得。

发表评论

表情:
评论列表 (有 0 条评论,251人围观)

还没有评论,来说两句吧...

相关阅读