资讯详情

【CV】RetinaNet:使用二分类类别不平衡损失 Focal Loss 实现更好的目标检测

论文名称:Focal Loss for Dense Object Detection 论文下载:https://arxiv.org/abs/1610.02357 论文年份:ICCV 2017 13045(2022/05/10) 论文代码:https://github.com/facebookresearch/Detectron

论文总结

RetinaNet 的设计基于 RPN 提出的 anchor 以及 SSD 和 FPN 使用的特征金字塔。其性能的提高是由新提出的 Focal Loss 而不是网络架构。Focal Loss 在训练期间,旨在解决单阶段目标检测场景(例如,1:1000)。容易分类的负数构成大部分损失,并主导梯度。为了更好地区分简单和困难的样本,Focal Loss 通过引入调制因素,可以有效减少易负例的影响,将所有注意力集中在难负例上。直观地说,调制因素减少了简单示例的损失贡献,扩大了低损失范围。

目前,这种损失函数已被广泛应用,比如推荐场景CTR预测(正负样本比1:1000)和广告场景CVR(正负样本比1:10000),LTV经典的二分类不平衡问题是预测(正负样本数量差异较大)。

RetinaNet 它是一个单一统一的网络,由一个主网络和两个特定任务的子网络组成。主干负责计算整个输入图像的卷积特征图。第一个子网对主干的输出进行卷积对象分类;第二个子网执行卷积边界框回归。

Abstract

The highest accuracy object detectors to date are based on a two-stage approach popularized by R-CNN, where a classifier is applied to a sparse set of candidate object locations. In contrast, one-stage detectors that are applied over a regular , dense sampling of possible object locations have the potential to be faster and simpler , but have trailed the accuracy of two-stage detectors thus far . In this paper , we investigate why this is the case. We discover that the extreme foreground-background class imbalance encountered during training of dense detectors is the central cause. We propose to address this class imbalance by reshaping the standard cross entropy loss such that it down-weights the loss assigned to well-classified examples. Our novel Focal Loss focuses training on a sparse set of hard examples and prevents the vast number of easy negatives from overwhelming the detector during training. To evaluate the effectiveness of our loss, we design and train a simple dense detector we call RetinaNet. Our results show that when trained with the focal loss, RetinaNet is able to match the speed of previous one-stage detectors while surpassing the accuracy of all existing state-of-the-art two-stage detectors.

迄今为止,。相比之下,常规密集采样的单阶段检测器可能更快、更简单,但到目前为止,其准确性落后于两阶段检测器。在本文中,我们调查了为什么会发生这种情况。我们发现,。我们建议。我们。为了评估损失的有效性,我们设计并训练了一个简单的密集检测器,我们称之为 。结果表明,当使用焦点损失进行训练时,

1. Introduction

目前最先进的目标检测器是基于两个阶段的推荐驱动(proposal-driven)机制。。通过一系列的进步 [10, 28, 20, 14]这两阶段框架具有挑战性 COCO 基准 [21] 始终保持最高精度。

虽然检测器在两个阶段取得了成功,但一个自然问题是:一个。最近关于单阶段检测器的工作,比如 YOLO [26, 27] 和 SSD [22, 9]与最先进的两阶段方法相比,显示了有希望的结果,产生了更快的检测器,精度在 1040% 以内。

本文进一步推动了这一领域:我们提出了一个最先进的单阶段目标探测器,它是第一个和更复杂的两阶段探测器 COCO AP 匹配,如特征金字塔网络(FPN)[20 ] 或 Mask R-CNN [14] Faster R-CNN [28] 变体。为了实现这一结果,我们

启发式解决类不平衡。

相比之下,。在实践中,这通常相当于。虽然类似的采样启发方法也可以应用,但它们也可以应用。这种低效率是目标检测的经典问题,通常

在本文中,我们提出了一个。直观地说,这种缩放因子可以自动减少简单示例的贡献,并在训练过程中快速集中注意力。。最后,我们注意到焦点损失的确切形式并不重要,我们展示了其他可以达到类似结果的例子。

为了证明焦点损失的有效性,我们设计了一个。其设计具有高效的网络特征金字塔和锚点的使用。。 RetinaNet 高效准确;我们最好的模型是基于 ResNet-101FPN 骨干网,在以 5 fps 实现运行 39.1 的 COCO 测试开发 AP,超过单阶段和两阶段检测器之前发布的最佳单模型结果,见图 2。

2. Related Work

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

:现代物体检测的主要范式基于两阶段方法。正如在选择性搜索工作 [35] 中所开创的那样,。 R-CNN [11] 将第二阶段分类器升级为卷积网络,大大提高了准确性,并开启了现代目标检测时代。多年来,R-CNN 在速度 [15, 10] 和使用学习目标提议 [6, 24, 28] 方面都得到了改进。。已经提出了对该框架的许多扩展,例如[20、31、32、16、14]。

:OverFeat [30] 是第一个基于深度网络的现代单阶段目标检测器。最近 SSD [22, 9] 和 YOLO [26, 27] 对单阶段方法重新产生了兴趣。这些检测器已针对速度进行了调整,但其。 SSD 的 AP 降低了 10-20%,而 YOLO 则专注于更极端的速度/准确性权衡。参见图 2。最近的工作表明,。相比之下,这项工作的目的是了解单阶段检测器在以相似或更快的速度运行时是否可以匹配或超过两阶段检测器的精度。

。我们强调,

:经典的单阶段目标检测方法,如增强检测器 [37、5] 和 DPM [8],以及最近的方法,如 SSD [22],在训练期间都面临着大的类不平衡。这些检测器评估每张图像的 104105 个候选位置,但只有少数位置包含目标。这种

  • 1)

  • 2)整体而言,

。相比之下,我们表明,我们提出的焦点损失(focal loss)自然地处理了单阶段检测器面临的类别不平衡,并允许有效地训练所有示例,而无需采样,也不会出现压倒损失和计算梯度的简单负数。

:人们对设计稳健的损失函数(例如,Huber 损失 [13])非常感兴趣,这些损失函数通过降低具有大错误的示例(困难示例)的损失权重来减少异常值的贡献。相比之下,我们的。换句话说,

3. Focal Loss

在这里插入图片描述 。我们从二分类的交叉熵 (CE) 损失开始引入焦点损失(focal loss): 在上面的 y ∈ {±1} 中指定了 ground-truth 类,标签 y = 1 的类的估计概率。为了符号方便,我们定义 p t p_t pt​: 可以看作是图 1 中的蓝色(顶部)曲线。这种损失的一个显著特性,可以在其图中很容易看出,是。当对大量简单示例求和时,这些小的损失值可能会压倒稀有的类。

3.1. Balanced Cross Entropy

解决类不平衡的一种常用方法是为类 1 引入加权因子 α ∈ [0, 1],为类 -1 引入 1-α。在实践中,。为了符号方便,我们定义 αt 的方式与定义 pt 的方式类似。我们将 α 平衡 CE 损失写为: 这种损失是对 CE 的简单扩展,我们将其视为**焦点损失(focal loss)**的实验基线。

3.2. Focal Loss Definition

正如我们的实验将表明的那样,。相反,我们建议

更正式地说,我们建议。我们将焦点损失(focal loss)定义为: 在图 1 中,对于 γ ∈ [0, 5] 的几个值,焦点损失可视化。我们注意到焦点损失的两个属性。

  • 1)
  • 2)(我们发现 γ = 2 在我们的实验中效果最好)。

。例如,当 γ = 2 时,与 CE 相比,用 pt = 0.9 分类的示例的损失将低 100 倍,而当 pt ≈ 0.968 时,它的损失将低 1000 倍。这反过来又增加了纠正错误分类示例的重要性(对于 pt ≤ .5 和 γ = 2,其损失最多缩小 4 倍)。

在实践中,我们使用: 我们在实验中采用这种形式,因为。最后,我们注意到

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

3.3. Class Imbalance and Model Initialization

。在这样的初始化下,在存在。为了解决这个问题,我们。我们。我们注意到。我们发现这可以在严重的类不平衡的情况下提高交叉熵和焦点损失的训练稳定性。

3.4. Class Imbalance and Two-stage Detectors

。相反,他们

  • 1)两阶段级联

  • 2)有偏差的小批量采样

第一个级联阶段是一个 [35,24,28],它。重要的是,选择的提议不是随机的,而是可能对应于真实的对象位置,这消除了绝大多数简单的否定。。这个比率。我们提出的

4. RetinaNet Detector

。这两个子网络具有一个简单的设计,我们专门为单阶段密集检测提出了建议,请参见图 3。虽然这些组件的细节有很多可能的选择,但大多数设计参数对精确值并不特别敏感,如实验。我们接下来描述 RetinaNet 的每个组件。 :我们采用 [20] 中的特征金字塔网络(FPN)作为 RetinaNet 的骨干网络。简而言之,。金字塔的每一层都可以用于检测不同尺度的对象。 ,如其在 RPN [28] 和 DeepMask 风格提议 [24] 以及两阶段检测器(如 Fast R-CNN [ 10]或Mask R-CNN [14]。

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

在目标检测任务中,输入图像经过骨干网络提取特征,得到特征图,该图上的每个像素点,即为anchor(锚点)。参考自:link。

:我们使用与 [20] 中的 RPN 变体中的类似的。锚框在金字塔级别 P3 到 P7 上的面积分别为 3 2 2 32^2 322 到 51 2 2 512^2 5122。。每个级别总共有 A = 9 个锚点,并且在各个级别上,它们覆盖了相对于网络输入图像的32-813个像素的比例范围。

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

:分类子网络。它的设计很简单。从给定的金字塔级别获取具有 C 个通道的输入特征图,子网应用四个 3×3 卷积层,每个具有 C 个过滤器,每个后跟 ReLU 激活,然后是带有 KA 过滤器的 3×3 卷积层。最后,参见图 3 ©。在大多数实验中,我们使用 C = 256 和 A = 9。

:与对象分类子网并行,我们。框回归子网的设计与分类子网相同,只是它。对于每个空间位置的每个 A 锚,这 4 个输出预测锚和真实框之间的相对偏移(我们使用来自 RCNN [11] 的标准框参数化)。我们注意到,与最近的工作不同,我们使用了与类别无关的边界框回归器,它使用的参数更少,而且我们发现同样有效。对象分类子网和框回归子网虽然具有共同的结构,但使用不同的参数。

4.1. Inference and Training

:RetinaNet 形成一个单一的 FCN,由 ResNet-FPN 主干网,分类子网和框回归子网组成,见图 3。因此,。为了提高速度,

焦点损失(focal loss):我们使用这项工作中引入的焦点损失作为分类子网输出的损失。正如我们将在第 5 节中展示的那样,我们发现 γ = 2 在实践中效果很好,并且 RetinaNet 对 γ ∈ [0.5, 5] 相对稳健。我们强调,在训练 RetinaNet 时,焦点损失应用于每个采样图像中的所有 ~100k 锚点。这与使用启发式采样 (RPN) 或硬示例挖掘 (OHEM, SSD) 为每个小批量选择一小组锚点(例如 256 个)的常见做法形成对比。图像的总焦点损失计算为所有 ~100k 锚点的焦点损失的总和,通过分配给真实框的锚点数量进行归一化。。最后,我们注意到(见表 1a 和 1b)。(对于 γ = 2,α = 0.25 效果最好)。 :我们使用 ResNet-50-FPN 和 ResNet-101-FPN 主干[20]进行实验。基础 ResNet-50 和 ResNet-101 模型在 ImageNet1k 上进行了预训练;我们使用[16]发布的模型。为 FPN 添加的新层在 [20] 中初始化。除了 RetinaNet 子网中的最后一层之外,所有新的卷积层都初始化为偏置 b = 0,高斯权重填充为 σ = 0.01。。我们在所有实验中使用 π = .01,尽管结果对精确值是稳健的。如第 3.3 节所述,

:RetinaNet 。我们在 8 个 GPU 上使用同步 SGD,每个 minibatch 总共 16 个图像(每个 GPU 2 个图像)。除非另有说明,否则所有模型都经过 90k 次迭代训练,初始学习率为 0.01,然后在 60k 时除以 10,再在 80k 次迭代时除以 10。除非另有说明,否则我们使用水平图像翻转作为数据增强的唯一形式。。训练损失是用于框回归 [10] 的焦点损失和标准平滑 L1 损失的总和。表 1e 中模型的训练时间在 10 到 35 小时之间。

5. Experiments

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

5.1. Training Dense Detection

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

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

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

:使用我们提出的焦点损失的结果如表 1b 所示。焦点损失引入了一个新的超参数,即。随着 γ 的增加,FL 显示出比 CE 有很大的收益。在 γ = 2 的情况下,FL 比 α 平衡的 CE 损失提高了 2.9 AP。对于表 1b 中的实验,为了公平比较,我们为每个 γ 找到了最好的 α。我们观察到较低的 α 被选择用于较高的 γ(因为简单的负数被降低,所以需要较少强调正数)。然而,总体而言,(我们测试了 α ∈ [.01, .999])。对于所有实验,我们使用 γ = 2.0 和 α = .25,但 α = .5 的效果几乎一样(低于 0.4 AP)。

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

:[31] 提出通过。具体来说,在 OHEM 中,。 nms 阈值和批量大小是可调参数。。我们还实现了 SSD [22] 中使用的 OHEM 变体:在将 nms 应用于所有示例之后,构建小批量以强制正负之间的比例为 1:3,以帮助确保每个小批量有足够的正数。我们在具有大类不平衡的单阶段检测设置中测试了这两种 OHEM 变体。原始 OHEM 策略和选定批次大小和 nms 阈值的“OHEM 1:3”策略的结果如表 1d 所示。这些结果使用 ResNet-101,我们使用 FL 训练的基线在此设置下达到了 36.0 AP。相比之下,OHEM 的最佳设置(没有 1:3 的比例,批量大小 128,0.5 的 nms)达到 32.8 AP。这是 3.2 AP 的差距,。我们注意到我们为 OHEM 尝试了其他参数设置和变体,但没有取得更好的结果。

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

5.2. Model Architecture Design

:单阶段检测系统中最重要的设计因素之一是它覆盖可能的图像框空间的密集程度。**两阶段检测器可以使用区域池化操作 [10] 对任何位置,比例和纵横比的框进行分类。**相比之下,

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

最后,我们注意到。因此,虽然两阶段系统可以对图像中的任意框进行分类,但相对于密度的性能饱和意味着两阶段系统的更高潜在密度可能不会提供优势。

:较大的骨干网络产生更高的准确性,但推理速度也较慢。对于输入图像比例(由较短的图像侧定义)也是如此。我们在表 1e 中展示了这两个因素的影响。在图 2 中,我们绘制了 RetinaNet 的速度/准确度权衡曲线,并将其与最近使用 COCO test-dev 上的公众号的方法进行了比较。该图显示,由我们的焦点损失启用的 RetinaNet 形成了所有现有方法的上包络,不考虑低准确度的机制。具有 ResNet-101-FPN 和 600 像素图像比例的 RetinaNet(为简单起见,我们将其表示为 RetinaNet-101-600)与最近发布的 ResNet101-FPN Faster R-CNN [20] 的精度相匹配,同时运行时间为 122 ms图像与 172 毫秒相比(均在 Nvidia M40 GPU 上测量)。。解决高帧率机制可能需要特殊的网络设计,如 [27] 中所示,并且超出了这项工作的范围。我们注意到,在发表后,现在可以通过 [12] 中的 Faster R-CNN 的变体获得更快,更准确的结果。

5.3. Comparison to State of the Art

我们在具有挑战性的 COCO 数据集上评估 RetinaNet,并将测试开发结果与最近最先进的方法(包括一阶段和两阶段模型)进行比较。。与现有的一阶段方法相比,我们的方法与最接近的竞争对手 DSSD [9] 实现了健康的 5.9 点 AP 差距(39.1 与 33.2),同时也更快,参见图 2。与最近的两阶段方法相比, RetinaNet 比基于 Inception-ResNet-v2-TDM [32] 的性能最佳的 Faster R-CNN 模型高出 2.3 个百分点。插入 ResNeXt32x8d-101-FPN [38] 作为 RetinaNet 骨干网络,进一步提高了 1.7 AP 的结果,超过了 COCO 上的 40 AP。

6. Conclusion

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

标签: 1x8p连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台