Retinanet论文解读

目录

摘要

1.引言

2.相关工作

3. 焦点损失

3.1、平衡交叉熵

3.3. 类不平衡与模型初始化

3.4.类不平衡和两级检测器

4. Retina探测器

4.1 推理和训练

5. 实验

5.1、训练密集检测

5.2.模型架构设计

5.3.与最先进技术的比较

6.结论

参考文献略

相关阅读推荐:

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

代码:

原论文给的代码地址是:GitHub - facebookresearch/Detectron: FAIR's research platform for object detection research, implementing popular algorithms like Mask R-CNN and RetinaNet.

我推荐:

yhenon/pytorch-retinanet: Pytorch implementation of RetinaNet object detection. (github.com) 

 

图 1. 我们提出了一种新的损失,我们称之为 Focal Loss,它在标准交叉熵标准中添加了一个因子 (1 - p t ) 的γ次方。设置 γ > 0 可减少分类良好的示例的相对损失(p t > .5),将更多注意力放在难分类的错误示例上。正如我们的实验将证明的那样,所提出的焦点损失能够在存在大量简单背景示例的情况下训练高度准确的密集对象检测器。

图 2. COCO 测试的速度 (ms) 与准确度 (AP) - dev。通过焦点损失,我们简单的一级 Retina Net 检测器优于所有以前的一级和二级检测器,包括来自 [20] 的最佳报道的 Faster R-CNN [28] 系统。我们展示了 Res Net - 50 - FPN(蓝色圆圈)和 Res Net - 101 - FPN(橙色菱形)在五个尺度(400 - 800 像素)的 Retina Net 变体。忽略低精度状态(AP<25),Retina Net 形成所有当前检测器的上包络,改进的变体(未显示)达到 40.8 AP。第 5 节中给出了详细信息。

【思考🤔】 论文一开始就将实验数据和图展示,直观给给性能如何和重要成果。

提出Focal Loss
50层Retina AP32.5 , 73ms ; 速度接近单阶段检测的实时性,精度提升4个点。
101层模型能达到 AP37.8 时间,对标精度和yolov5比差一点,不过这个是2018年的,yolov5现在更新了很多次了


摘要

迄今为止,精度最高的目标检测器基于由 R-CNN 推广的两阶段方法,其中将分类器应用于一组稀疏的候选目标位置。相比之下,应用于可能对象位置的常规密集采样的单级检测器具有更快和更简单的潜力,但迄今为止已经落后于两级检测器的准确性。在本文中,我们调查了为什么会出现这种情况。 我们发现,密集检测器训练过程中遇到的极端前景 - 背景类别不平衡是主要原因。我们建议通过重塑标准交叉熵损失来解决此类不平衡问题,使其降低分配给分类良好样本的损失的权重。

我们新颖的 Focal Loss 将训练集中在一组稀疏的困难示例上,并防止大量简单的负样本在训练期间压倒检测器。

为了评估损失的有效性,我们设计并训练了一个简单的密集检测器,我们称之为 Retina Net。我们的结果表明,在使用焦点损失进行训练时,Retina Net 能够与之前的一级检测器的速度相匹配,同时超过所有现有的最先进的两级检测器的准确度。

代码地址:
https://github.com/facebookresearch/Detectron
https://github.com/facebookresearch/Detectron

【思考🤔】文章主要研究一阶段检测器,精度没有二阶段高的原因。发现主要原因是 背景类别不平衡,提出 通过 构造交叉熵损失函数,使降低分配更低的损失权重给正样本来解决。提出Focal Loss损失函数。结果很好,速度在一阶段检测器,精度甚至能超过二级检测器。

1.引言

当前最先进的目标检测器基于两阶段、提议驱动的机制。正如在 R-CNN 框架中所普及的那样,第一阶段生成一组稀疏的候选对象位置,第二阶段使用卷积神经网络将每个候选位置分类为前景类或背景。通过一系列进步,这个两阶段框架在具有挑战性的 COCO 基准测试 [21] 上始终保持最高准确度。 

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

本文进一步推进了这一领域:我们提出了一种单级目标检测器,它首次与更复杂的两级检测器的最新COCO AP相匹配,例如特征金字塔网络(FPN)[20]或更快的R-CNN[28]的Mask R-CNN[14]变体。为了实现这一结果,我们将训练过程中的类别不平衡视为阻碍单级探测器达到最先进精度的主要障碍,并提出了一种新的损失函数来消除这一障碍。

类不平衡通过两级级联和采样启发式在 R - CNN 类检测器中得到解决。提议阶段(例如,Selective Search [35]、Edge Boxes [39]、Deep Mask [24, 25]、RPN [28])迅速将候选对象位置的数量缩小到少量(例如,1 - 2k ),过滤掉大部分背景样本。在第二个分类阶段,执行采样启发式方法,例如固定的前景与背景比率 (1:3),或在线硬示例挖掘 (OHEM) [31],以保持前景和背景之间的可管理平衡。

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

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

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

2.相关工作

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

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

一级探测器:Over Feat [30] 是第一个基于深度网络的现代单阶段目标检测器之一。最近 SSD [22, 9] 和 YOLO [26, 27] 对单阶段方法重新产生了兴趣。这些检测器已针对速度进行了调整,但其准确性落后于两阶段方法。 SSD 的 AP 降低了 10 - 20%,而 YOLO 则专注于更极端的速度/准确性权衡。参见图 2。最近的工作表明,只需降低输入图像分辨率和提议的数量,两阶段检测器就可以变得更快,但即使在计算预算较大的情况下,单阶段方法的准确性也会落后 [17]。相比之下,这项工作的目的是了解一级探测器在以相似或更快的速度运行时是否可以匹配或超过二级探测器的精度。

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

类不平衡:经典的单阶段目标检测方法,如增强检测器 [37, 5] 和 DP Ms [8],以及最近的方法,如 SSD [22],在训练期间都面临着大类不平衡。这些检测器评估每张图像的 10 ^4 ~10 ^5 个候选位置,但只有少数位置包含对象。这种不平衡导致了两个问题:(1)训练效率低下,因为大多数位置都是简单的负样本,没有提供有用的学习信号; (2) 整体而言,简单的否定会压倒训练并导致退化模型。一个常见的解决方案是执行某种形式的硬负挖掘 [33、37、8、31、22],在训练或更复杂的采样/重新加权方案 [2] 期间对硬示例进行采样。相比之下,我们展示了我们提出的焦点损失自然地处理了单级检测器面临的类别不平衡,并允许我们有效地训练所有示例,而无需采样,也不会轻易压倒损失和计算的梯度。

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

3. 焦点损失

(这一章可以去看我的focal loss的博客)
Focal Loss 旨在解决单阶段目标检测场景,其中在训练期间前景和背景类别之间存在极端不平衡(例如,1:1000)。我们从二元分类(将焦点损失扩展到多类情况很简单并且效果很好;为简单起见,我们专注于这项工作中的二元损失。) 的交叉熵 (CE) 损失开始引入焦点损失:

 

 在上面的 y ∈ { ±1 } 中指定了 ground-truth 类,p ∈ [0, 1] 是模型对标签 y = 1 的类的估计概率。为了符号方便,我们定义 p t :

 

重写为: CE(p, y) = CE(p t ) = − log(p t ). 

CE 损失可以看作是图 1 中的蓝色(顶部)曲线。这种损失的一个显着特性,可以在其图中很容易看出,是即使是容易分类的示例 (p t ≫ .5) 也会产生损失具有非平凡的幅度。当对大量简单示例求和时,这些小的损失值可能会压倒稀有类。

3.1、平衡交叉熵

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

 

这种损失是对 CE 的简单扩展,我们将其视为我们提出的焦点损失的实验基线。

3.2. 焦点损失定义
 正如我们的实验将表明的那样,在密集检测器的训练过程中遇到的大类不平衡压倒了交叉熵损失。容易分类的负数构成了损失的大部分,并主导了梯度。虽然 α 平衡了正面/负面示例的重要性,但它没有区分简单/困难示例。相反,我们建议重塑损失函数以降低简单示例的权重,从而将训练重点放在难负样本上。
更正式地说,我们建议在交叉熵损失中添加一个调制因子 (1 − p t ) γ,可调聚焦参数 γ ≥ 0。我们将焦点损失定义为:

 

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

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

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

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

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

3.3. 类不平衡与模型初始化

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

3.4.类不平衡和两级检测器

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

4. Retina探测器

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

 

 图 3. 单阶段 Retina Net 网络架构在前馈 Res Net 架构 [16] (a) 之上使用特征金字塔网络 (FPN) [20] 主干来生成丰富的多尺度卷积特征金字塔 (b )。在这个主干上,Retina Net 附加了两个子网络,一个用于分类锚框(c),一个用于从锚框回归到真实对象框(d)。网络设计有意简单,这使这项工作能够专注于一种新颖的焦点损失函数,该函数消除了我们的一级检测器和最先进的两级检测器(如带有 FPN 的 Faster R-CNN)之间的准确度差距。 20] 同时以更快的速度运行。

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

在 [20] 之后,我们在 Res Net 架构 [16] 之上构建 FPN。我们构建了一个具有 P3 到 P 7 级别的金字塔,其中 l 表示金字塔级别(P l 的分辨率比输入低 2^ l)。如在 [20] 中,所有金字塔级别都有 C = 256 个通道。金字塔的细节通常遵循[20],但有一些适度的差异

(Retina Net 使用特征金字塔级别 P 3 到 P 7,其中 P 3 到 P 5 使用自顶向下和横向连接从相应的 Res Net 残差阶段(C3 到 C 5 )的输出计算,就像在 [20] 中一样,P 6 是通过 C 5 上的 3×3 stride - 2 conv 获得,P 7 通过应用 Re LU 计算,然后是 P 6 上的 3×3 stride - 2 conv。这与 [20] 略有不同:(1)出于计算原因,我们不使用高分辨率金字塔级别 P 2,(2)P 6 是通过跨步卷积而不是下采样计算的,以及(3)我们包括 P 7改善大物体检测。这些微小的修改提高了速度,同时保持了准确性。)。

虽然许多设计选择并不重要,但我们强调使用 FPN 主干才是关键;仅使用来自最终 Res Net 层的特征的初步实验产生了低 AP。

[20] T.-Y. Lin, P. Doll´ar, R. Girshick, K. He, B. Hariharan, and

S. Belongie. Feature pyramid networks for object detection. In CVPR, 2017. 1, 2, 4, 5, 6, 8

锚点: 我们使用类似于 [20] 中的 RPN 变体中的平移不变锚框。锚点在金字塔等级 P 3 到 P 7 上分别具有 32 ^2 到 512 ^2 的面积。与 [20] 中一样,在每个金字塔级别,我们使用三个纵横比 {1:2, 1:1, 2:1} 的锚点。对于比 [20] 中更密集的尺度覆盖,我们在每个级别添加大小为 { 2 ^0 , 2 ^1/3 , 2^ 2/3 } 的锚点,这些锚点是原始的 3 个纵横比锚点集。这提高了我们设置中的 AP。每个级别总共有 A = 9 个锚点,并且跨级别它们覆盖了相对于网络输入图像的 32 - 813 像素的比例范围。

每个锚点都分配有一个长度为 K 的分类目标的 one-hot 向量,其中 K 是对象类别的数量,以及一个 长度为4 的框回归目标向量。我们使用来自 RPN [28] 的分配规则,但针对多类检测进行了修改并调整了阈值。具体来说,使用 0.5 的交集 - 并集 (Io U) 阈值将锚分配给地面实况对象框;如果他们的 Io U 在 [0, 0.4) 中,则为背景。由于每个锚点最多分配给一个对象框,我们将其长度 K 标签向量中的相应条目设置为 1,将所有其他条目设置为 0。如果未分配锚点,则可能发生在 [0.4, 0.5) 中的重叠,它在训练期间被忽略。框回归目标计算为每个锚点与其分配的对象框之间的偏移量,如果没有分配,则省略。

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

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

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

4.1 推理和训练

推理:Retina Net 形成一个 FCN,由 Res Net - FPN 主干网、分类子网和框组成回归子网,参见图 3。因此,推理只涉及通过网络前向传播图像。为了提高速度,在将检测器置信度阈值设置为 0.05 之后,我们仅从每个 FPN 级别最多 1k 个得分最高的预测中解码框预测。合并所有级别的最高预测,并应用阈值为 0.5 的非最大抑制以产生最终检测。

焦点损失:我们使用这项工作中引入的焦点损失作为分类子网输出的损失。正如我们将在第 5 节中展示的那样,我们发现 γ = 2 在实践中效果很好,并且 Retina 网络对 γ ∈ [0.5, 5] 相对稳健。我们强调,在训练 Retina Net 时,焦点损失应用于每个采样图像中的所有 ∼ 100k 个锚点。这与使用启发式采样 (RPN) 或硬示例挖掘 (OHEM, SSD) 为每个小批量选择一小组锚点(例如 256 个)的常见做法形成对比。

图像的总焦点损失计算为所有 ∼ 100k 个锚点的焦点损失的总和,通过分配给真实框框的锚点数量进行归一化。我们通过分配的锚点数量而不是总锚点来执行归一化,因为绝大多数锚点都是容易的负数,并且在焦点损失下接收到的损失值可以忽略不计。最后,我们注意到分配给稀有类的权重 α 也有一个稳定的范围,但它与 γ 相互作用,因此有必要将两者一起选择(见表 1a 和 1b)。一般来说,当 γ 为增加(对于 γ = 2,α = 0.25 效果最好)。

初始化:我们使用 Res Net - 50 - FPN 和 Res Net - 101 - FPN 主干[20]进行实验。基础 Res Net - 50 和 Res Net - 101 模型在 Image Net1k 上进行了预训练;我们使用[16]发布的模型。为 FPN 添加的新层在 [20] 中初始化。除了 Retina Net 子网中的最后一层之外,所有新的卷积层都使用偏置 b = 0 初始化,并且使用 σ = 0.01 填充高斯权重。

对于分类子网的最后一个卷积层,我们将偏置初始化设置为 b = − log((1 − π)/π),其中 π 指定在

每个锚点的训练开始都应该被标记为前景,置信度为 ∼ π。我们在所有实验中使用 π = .01,尽管结果对精确值是稳健的。如第 3.3 节所述,此初始化可防止大量背景锚在第一次训练迭代中产生大的、不稳定的损失值。

 

 表 1. Retina Net 和 Focal Loss (FL) 的消融实验。除非另有说明,否则所有模型都在 trainval35k 上进行训练并在 minival 上进行测试。如果未指定,默认值为:γ = 2; 3 个比例和 3 个纵横比的锚点; Res Net - 50 - FPN 骨干网;以及 600 像素的训练和测试图像比例。 (a) 具有 α - 平衡 CE 的 Retina Net 最多达到 31.1 AP。 (b) 相比之下,使用具有相同精确网络的 FL 可获得 2.9 AP 增益,并且对精确的 γ /α 设置相当稳健。 (c) 使用 2 - 3 比例和 3 纵横比的锚点会产生良好的结果,之后点性能就会饱和。 (d) FL 优于在线硬示例挖掘 (OHEM) [31, 22] 的最佳变体超过 3 点 AP。 (e) 各种网络深度和图像尺度的 Retina Net 在测试开发中的精度/速度权衡(另请参见图 2)。

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

5. 实验

我们展示了具有挑战性的 COCO 基准 [21] 的边界框检测赛道的实验结果。对于训练,我们遵循惯例 [1, 20] 并使用 COCO trainval35k split(来自 80k 图像的联合训练和来自 40k 图像验证拆分的随机 35k 图像子集)。我们通过评估 minival split(来自 val 的剩余 5k 图像)来报告损害和敏感性研究。对于我们的主要结果,我们在 test-dev 拆分上报告 COCO AP,它没有公共标签,需要使用评估服务器。

5.1、训练密集检测

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

网络初始化:我们第一次尝试使用标准交叉熵 (CE) 损失来训练 Retina Net,而无需对初始化或学习策略进行任何修改。这很快就会失败,因为网络在训练期间会发散。然而,简单地初始化我们模型的最后一层,使得检测到对象的先验概率为 π = .01(参见第 4.1 节),可以实现有效的学习。用 Res Net - 50 训练 Retina Net,这个初始化已经在 COCO 上产生了 30.2 的可观 AP。结果对 π 的确切值不敏感,因此我们在所有实验中使用 π = .01。

 

 图 4. 收敛模型中不同 γ 值的正样本和负样本的归一化损失的累积分布函数。改变 γ 对正例损失分布的影响很小。然而,对于负样本,增加 γ 会使损失集中在难样本上,几乎所有注意力都从简单的负样本上移开。

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

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

对于表 1b 中的实验,为了公平比较,我们为每个 γ 找到了最好的 α。我们观察到较低的 α 被选择用于较高的 γ (因为简单的负数被降低,所以需要较少强调正数)。然而,总体而言,改变 γ 的好处要大得多,实际上最好的 α 的范围仅为 [.25,.75](我们测试了 α ∈ [.01, .999])。对于所有实验,我们使用 γ = 2.0 和 α = .25,但 α = .5 的效果几乎一样(低于 0.4 AP)。

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

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

γ对负样本的影响是截​​然不同的。对于 γ = 0,正负 CD F 非常相似。然而,随着 γ 的增加,更多的权重集中在难的负样本上。事实上,当 γ = 2(我们的默认设置)时,绝大多数损失来自一小部分样本。可以看出,FL 可以有效地降低易负例的影响,将所有注意力集中在难负例上。

A. Shrivastava, A. Gupta, and R. Girshick. Training regionbased object detectors with online hard example mining. In CVPR, 2016. 2, 3, 6, 7

Online Hard Example Mining (OHEM)在线困难样本挖掘:[31] 提出通过使用高损失示例构建小批量来改进两阶段检测器的训练。具体来说,在 OHEM 中,每个示例都根据其损失进行评分,然后应用非最大抑制 (nms),并使用损失最高的示例构建小批量。 nms 阈值和批量大小是可调参数。与焦点损失一样,OHEM 更强调错误分类的示例,但与 FL 不同,OHEM 完全丢弃了简单示例。我们还实现了 SSD [22] 中使用的 OHEM 变体:在将 nms 应用于所有示例之后,构建小批量以强制正负之间的比例为 1:3,以帮助确保每个小批量有足够的正数。

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

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

 表二:目标检测 单阶段模型的结果在COCO1test-dev上是最好的。对于展示的结果 我们RetinaNet 101-800模型 使用jitter 训练对比相同模型要时间长1.5倍。我们的模型达到了最好的结果,在一阶段和二阶段模型上都有出色表现。对于速度和精准度参考表1e和图2.

5.2.模型架构设计

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

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

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

速度与准确性:较大的骨干网络产生更高的准确性,但推理速度也较慢。对于输入图像比例(由较短的图像侧定义)也是如此。我们在表 1e 中展示了这两个因素的影响。在图 2 中,我们绘制了 Retina Net 的速度/准确度权衡曲线,并将其与最近使用 COCO test-dev 上的通常数量的方法进行了比较。该图显示,由我们使用焦点损失、超过现有方法的上采样 的 Retina Net ,不考虑低准确度的机制。

具有 Res Net - 101 - FPN 和 600 像素图像比例的 Retina Net(为简单起见,我们将其表示为 Retina Net - 101 - 600)与最近发布的 Res Net101 - FPN Faster R - CNN [20] 的准确性相匹配,同时运行每张图像 122 毫秒,而 172 毫秒(均在 Nvidia M40 GPU 上测量)。

使用更大的尺度允许 Retina Net 超越所有两阶段方法的准确性,同时仍然更快。对于更快的运行时间,只有一个操作点(500 像素输入)使用 Res Net - 50 - FPN 优于 Res Net - 101 - FPN。解决高帧率机制可能需要特殊的网络设计,如 [27] 中所示,并且超出了这项工作的范围。我们注意到,在发表后,现在可以通过 [12] 中的 Faster R - CNN 的变体获得更快、更准确的结果。

5.3.与最先进技术的比较

[12] R. Girshick, I. Radosavovic, G. Gkioxari, P. Doll´ar, and K. He. Detectron. https://github.com/ facebookresearch/detectron, 2018. 8

[32] A. Shrivastava, R. Sukthankar, J. Malik, and A. Gupta. Beyond skip connections: Top-down modulation for object detection. arXiv:1612.06851, 2016. 2, 8

[38] S. Xie, R. Girshick, P. Doll´ar, Z. Tu, and K. He. Aggregated residual transformations for deep neural networks. In CVPR, 2017. 8

我们在具有挑战性的 COCO 数据集上评估 Retina Net,并将测试开发结果与最近的最先进方法(包括一阶段和两阶段模型)进行比较。表 2 显示了我们的 Retina Net - 101 - 800 模型使用尺度抖动训练的结果,比表 1e 中的模型长 1.5 倍(给出 1.3 AP 增益)。与现有的一阶段方法相比,我们的方法与最接近的竞争对手 DSSD [9] 实现了稳健的 5.9 点 AP 差距(39.1 对 33.2),同时也更快,参见图 2。与最近的两阶段方法相比, Retina Net 在基于 Inception - Res Net - v2 - TDM [32] 的性能最佳的 Faster R - CNN 模型之上实现了 2.3 个百分点的差距。插入 Res Ne Xt32x8d - 101 - FPN [38] 作为 Retina Net 骨干网,进一步提高了结果 1.7 AP,超过了 COCO 上的 40 AP。

6.结论

在这项工作中,我们将类别不平衡确定为阻止单阶段目标检测器超越性能最佳的两阶段方法的主要障碍。为了解决这个问题,我们提出了将调节项应用于交叉熵损失的焦点损失,以便将学习重点放在难的负样本上。我们的方法简单而高效。我们通过设计一个完全卷积的一级检测器来证明它的功效,并报告了广泛的实验分析,表明它达到了最先进的精度和速度。


 附录 A:焦点损失*

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

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

 其中 y ∈ { ±1 } 与之前一样指定了ground-truth 类。然后我们可以写出 p t = σ(x t )(这与等式 2 中 p t 的定义兼容)。当 x t > 0 时,样本被正确分类,在这种情况下 p t > .5。

我们现在可以根据 x t 定义另一种形式的焦点损失。我们定义 p t ∗ 和 FL ∗ 如下:

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

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

我们发现各种 γ 和 β 设置给出了很好的结果。在图 7 中,我们展示了具有 FL * 的 Retina Net - 50 - 600 的结果,用于一组广泛的参数。损失图采用颜色编码,因此有效设置(模型收敛且 AP 超过 33.5)以蓝色显示。为简单起见,我们在所有实验中使用 α = .25。可以看出,减少分类良好的示例(x t > 0)的权重的损失是有效的。
更一般地说,我们期望任何与 FL 或 FL * 具有相似属性的损失函数同样有效。

附录 B:衍生品

作为参考,CE、FL 和 FL 的导数 * w.r.t. x 是:

选定设置的图如图 6 所示。对于所有损失函数,对于高置信度预测,导数趋向于 - 1 或 0。然而,与 CE 不同的是,对于 FL 和 FL ∗ 的有效设置,只要 x t > 0,导数就会很小。 

参考文献略

相关阅读推荐:

RetinaNet论文阅读 - 知乎 (zhihu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坠金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值