Focal Loss for Dense Object Detection
Abstract
迄今为止,最高精度的对象检测器基于R-CNN推广的两阶段方法,其中将分类器应用于稀疏的候选对象位置集。 相比之下,应用于可能物体位置的规则,密集采样的一级检测器可能会变得更快,更简单,但到目前为止,其精度已经落后于二级检测器。 在本文中,我们调查了为什么会这样。 我们发现,在密集探测器的训练过程中遇到的极端前景-背景类别失衡是主要原因。 我们建议通过重塑标准交叉熵损失来解决此类不平衡问题,从而降低分配给分类良好的示例的损失。 我们的新提出的交叉损失将培训重点放在了稀疏的困难示例上,并防止了在培训过程中大量的简单负片使检测器重负。 为了评估损失的有效性,我们设计并训练了一个简单的密集检测器,称为RetinaNet。 我们的结果表明,经过聚焦损失训练后,RetinaNet能够与以前的一级检测器的速度相匹配,同时超过所有现有的最先进的二级检测器的精度。
1. Introduction
当前最先进的对象检测器基于两阶段的提案驱动机制。 正如在R-CNN框架中流行的那样[11],第一阶段生成稀疏的候选对象位置集,第二阶段使用卷积神经网络将每个候选位置分类为前景类之一或背景类别。 通过一系列进展[10,28,20,14],此两阶段框架始终在具有挑战性的COCO基准测试中实现最高准确性[21]。
尽管两级检测器取得了成功,但一个自然的问题是:一个简单的一级检测器能否达到类似的精度? 将一级检测器应用于对象位置,比例和纵横比的定期密集采样。 YOLO [26,27]和SSD [22,9]等一级检测器的最新工作证明了令人鼓舞的结果,相对于最新的两级方法,该检测器的速度更快,准确度在10-40%以内。本文进一步推动了这一领域的发展:我们提出了一种单级目标检测器,该检测器首次与更复杂的两级探测器的最新COCO AP相匹配,例如功能金字塔网络(FPN)[20]或Faster R-CNN [28]的变体:Mask R-CNN [14]。为了获得此结果,我们将训练期间的类不平衡确定为阻碍一级检测器实现最新精度的主要障碍,并提出了消除这种障碍的新损失函数。
类R-CNN探测器中的类不平衡是通过两级级联和采样启发法解决的。 提议阶段(例如,选择性搜索[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-101FPN骨干网的最佳模型在以5 fps的速度运行时,可达到39.1的COCO测试开发AP,超过了先前发布的最好的一阶段和两阶段检测器的单模型结果,请参见 图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)将提案生成与第二阶段分类器集成到单个卷积网络中,形成了Faster R CNN框架[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]中使用的特征金字塔。 我们强调,我们的简单检测器并非基于网络设计的创新,而是由于我们的新颖性而获得了最佳结果。
类不平衡:两种经典的一阶段对象检测方法,如增强检测器[37,5]和DPM [8],以及最新方法,如SSD [22],在训练过程中都面临着很大的类不平衡。这些检测器每个图像评估 1 0 4 − 1 0 5 10^4-10^5 104−105个候选位置,但是只有少数几个位置包含对象。 这种不平衡会导致两个问题:(1)培训效率低下,因为大多数位置都是简单的否定词,没有任何有用的学习信号; (2)整体而言,简单的负样本(easy negative example)会淹没训练并导致模型退化。 常见的解决方案是执行某种形式的硬性否定挖掘[33、37、8、31、22],这种形式在训练或更复杂的采样/称重方案[2]期间会采样一些困难的例子。 相反,我们表明,我们提出的焦损自然可以处理一级检测器所面临的类不平衡,并使我们能够有效地训练所有示例,而无需进行采样,并且没有容易的negative example使损失和计算出的梯度不堪重负的情况。
稳健估计:人们对设计稳健损失函数(如Huber损失[13])非常感兴趣,该函数通过降低具有较大误差的实例(硬实例)的损失权重来减少异常值的贡献。相反,我们的焦点损失不是处理异常值,而是通过降低内联(简单示例)的权重来处理类不平衡,这样即使它们的数量很大,它们对总损失的贡献也很小。换言之,焦点损失扮演着与稳健损失相反的角色:它将训练集中在一组稀疏的硬例子上.
3. Focal Loss
焦点损失旨在解决在训练过程中前景和背景类别之间存在极端不平衡的一阶段对象检测场景(例如1:1000)。我们从二元分类的交叉熵(CE)损失开始介绍焦点损失:
在上面的y∈{±1}中,指定了真相类别,而p∈[0,1]是模型对带有标签y = 1的类别的估计概率。为方便起见,我们定义 p t p_{t} pt:
并重写 C E ( p , y ) = C E ( p t ) = − l o g ( p t ) CE(p,y)= CE(p_{t})=-log(p_{t}) CE(p,y)=CE(pt