Focal Loss for Dense Object Detection

摘要

精度高的two stage 目标检测算法流行于R-CNN,它们分类器运用了一系列稀疏的候选框目标定位;而one stage目标检测则是对可能的目标定位运用了一系列的有规律、密集的采样,更简单也更快,但是精度不如two stage。

在这篇文章中,我们将探究是什么原有导致了这个现象。
我们发现在dense detectors 训练期间,前景和背景种类不平衡现象加剧了,这是导致dense detectors精度不够sparse detectors 的主要原因
我们通过修改标准的交叉熵损失来处理这个问题。比如对易分类的样本降低损失权重。

我们新颖的Focal loss侧重于训练一组稀疏的困难样本,并防止大量容易的负样本在训练期间淹没detector

为了验证our loss的有效性,我们设计并训练了一个简单的dense detector 命名为RetinaNet。结果显示。RetinaNet在和one-stage检测器宿舍相当的情况下,能够超越目前所有的two-stage的检测器。

Code:Code

1 介绍

目前最先进的物体检测器基于two-stage,proposal-driven mechanism(提案驱动的机制)。正如在R-CNN框架中推广的那样,第一阶段生成一系列稀疏的候选的目标定位框;第二阶段使用卷积神经网络对每个定位进行分类

one-stage 检测器 应用了物体位置、比例和纵横比的常规、密集采样。比如说YOLO,SSD系列。

这篇文章主要目的:提出一个one-stage 目标检测器,它比更复杂的two-stage目标检测器(比如说 FPN,Mask R-CNN,Faster R-CNN拥有相当的COCO AP(精确度)。为了实现这一目的,我们将训练过程中的类别不平衡确定为阻碍one-stage检测器实现stage-of -the-art的主要障碍,并提出了消除这一障碍的新loss函数——Focal Loss

类别不平衡在类似R-CNN的 two-stage detectors 中通过two-stage cascade(两级级联)和sampling heuristics(采样启发式)来解决
1. 提议阶段(The proposal stage (e.g., Selective Search , EdgeBoxes],
DeepMask , RPN )迅速减少候选的目标位置到一个很小的数目(比如1-2K),过滤掉大多数的背景样本。
2. 分类阶段:采样启发式方法(例如固定的前景与背景比率 (1:3) 或在线硬示例挖掘 (OHEM))被用于去维持前景和背景的平衡。

相比之下,one-stage 检测器 必须处理在图像中规律采样的更大的一组候选对象位置。在实际中会参数大约100K的位置信息,其中包含了空间位置信息,尺寸,横纵比。如果在one-stage 检测器使用sampling heuristics,将会是没有效率的。因为在训练流程中,容易分类的背景样本仍然占据主导。因此这个问题通常是通过bootstrapping 或者 hard example mining 技术来处理

在本文中,我们提出了一种新的损失函数,它可以作为以前处理类别不平衡的方法的更有效的替代方案。这个损失函数是动态缩放的交叉熵损失,如图1所示,其中比例因子衰减为零是因为正确类的置信度增加为1。
在这里插入图片描述

	设置γ > 0 可降低分类良好的样本的相对损失(pt > .5,将更多注意力放在困难的、错误分类的样本上。
	实验表明,所提出的Focal loss 使得在存在大量简单背景样本的情况下能够训练高精度的密集物体检测器。

为了验证Focal Loss的有效性,我们设计了一个简单的one-stage目标检测器命名为RetinaNet。其设计具有高效的网络内特征金字塔和并使用了Anchors。RetinaNet是高效和准确的;我们的最佳模型基于ResNet-101- FPN骨干网,在以5 fps的速度运行时实现了39.1的COCO AP,超过了以前最好的one-stage和two-stage 检测器。发布的one-stage模型结果,见图2。

在这里插入图片描述

2 相关工作

2.1 two-stage目标检测

选择性搜索第一阶段产生一系列稀疏的候选proposal,第二阶段对proposal进行分类,前景种类/背景。R-CNN [11] 将第二阶段分类器升级为卷积网络,在精度方面取得了巨大的进步,并开创了目标检测的新时代。
区域提案网络 (RPN) 将proposal的生成与第二阶段分类器集成到单个卷积网络中,形成了 Faster RCNN 框架 [28]。

2.2 one-stage目标检测

OverFeat、YOLO、SSD等。相比于two-stage目标检测,SSD的AP降低10-20%,而YOLO则专注于更极端的速度/精度权衡。

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

2.3 Class Imbalance

无论是one-stage还是two-stage,在训练时都会遇到类别不平衡的问题。
检测器对于每张图片会产生

1

0

4

10^4

104~

1

0

5

10^5

105个候选定位,但是只有很少的位置包含有目标。这种不平衡会导致两个问题:

  1. 训练效率低下,因为大多数位置都是容易的负样本,导致没有有用的学习信号;
  2. 多数的,简单的负样本会压倒训练,导致模型退化

相比之下,我们提出的Focal Loss自然地处理了one-stage检测器面临的类别不平衡,并允许我们在所有样本上有效地训练,而无需采样,也不会有简单的负样本压倒训练时的loss和计算的梯度。

2.4 Robust Estimation

人们对设计鲁棒损失函数(例如,Huber 损耗 [13])非常感兴趣,这些函数通过降低具有较大误差的样本(硬样本)的损失来减少异常值的权重。
相反,Focal Loss通过降低对正常值(简单示例)的权重来解决类失衡问题,即使它们的数量很大,它们对总损失的贡献也很小

3 Focal Loss

Focal loss旨在解决one-stage目标检测场景中,在训练期间前景和背景类之间存在极端不平衡现象。

Focal loss来源于二分类交叉熵损失(BCE/CE).
在这里插入图片描述

其中

y

{

±

1

}

y\in \{\pm 1\}

y{±1},表示指定ground-truth类别(前景、背景)。p ∈ [0, 1] 是标签为 y = 1 的类的模型估计概率。
为了便于表示,我们定义了

p

t

p_t

pt
在这里插入图片描述
当与大量简单示例相加时,这些小的交叉熵损失值可以压倒稀有类。

3.1. Balanced Cross Entropy

解决类不平衡的常用方法是为class 1 引入权重因子α ∈ [0, 1] ,为class −1 引入 1−α.
在这里插入图片描述

	这种损失函数是CE的简单延伸,我们将其视为我们提议的Focal Loss的实验基线。

3.2. Focal Loss Definition

虽然α平衡了正面/负面样本的重要性,但它并没有区分简单/困难的样本。
我们建议将损失函数重塑为减小简单样本的权重,从而将训练重点放在困难的负面因素上。

我们建议在交叉熵损失中添加调制因子

(

1

p

t

)

γ

(1 − p_t )^γ

(1pt)γ,可调焦参数γ ≥0。我们将Focal Loss定义为:
在这里插入图片描述

在这里插入图片描述

我们注意到Focal Loss的两个属性:
(1)当一个样本被错误分类并且pt很小时,调制因子接近1并且loss不受影响。当 pt → 1 时,因子变为 0,分类良好的示例的loss被降低权重。
(2) Focal loss参数γ平滑地调整简单示例衰减的速率。当γ = 0时,FL等效于CE,并且随着γ的增加,调制因子的影响同样增加(我们发现γ = 2在我们的实验中效果最好)

在这里插入图片描述

3.3. Class Imbalance and Model Initialization

默认情况下,二分类模型初始化为具有相等的输出概率 y = −1 或 1。
在这样的初始化下,在存在类不平衡的情况下,训练中频繁出现的类别而造成的损失可能主导总损失,并导致早期训练的不稳定。

为了解决这个问题,我们引入了"先验"的概念,用于在训练开始时由稀有类(前景)的模型估计的 p 值。
我们用π表示先验,并对其进行设置,以便让模型对稀有类示例预测的p较低(比如0.01)。我们发现这可以提高在严重类不平衡情况下交叉熵和Focal loss损失的训练稳定性。


前景目标出现的相对较少,将初始概率p设为较小的值。


3.4. Class Imbalance and Two-stage Detectors

Two-stage检测器通常采用交叉熵损失函数,它们通过两种机制解决类失衡问题:(1)a two-stage cascade(两级级联)(2)biased minibatch sampling

第一步:an object proposal mechanism将目标定位减少到1~2k。重要的是,所选proposals不是随机的,而是可能对应于真实的对象位置,这消除了绝大多数简单的负样本。
第二步:biased minibatch sampling通常用于构建包含例如1:3正负样本比例的小型batches。此比率类似于通过 sampling 实现的隐式 α 平衡因子。

4.RetinaNet Detector

RetinaNet 是一个单一的统一网络,由一个骨干网两个特定于任务的子网组成。

  1. 主干网负责计算整个输入图像上的卷积特征图,并且是一个脱离自身的卷积网络。
  2. 第一个子网对主干网的输出执行卷积对象分类;
  3. 第二个子网执行卷积边界框回归

4.1 Feature Pyramid Network Backbone

FPN通过自上而下的路径和横向连接增强了标准卷积网络,因此该网络从单个分辨率输入图像有效地构建了丰富的多尺度特征金字塔,参见图(a)-(b)
在这里插入图片描述
Retinanet在resnet 架构头部构建FPN结构,构建了P3~P7的特征金字塔,都有C=256t channels。

4.2 Anchors

Anchor在金字塔层 P3 至 P7 上的区域分别为

3

2

2

32^2

322~

51

2

2

512^2

5122.
在这里插入图片描述

我们使用的Anchors拥有三个高宽比为{1:2,2:1,1:1}。
对于比 FPN论文中更密集的缩放覆盖范围,在每个级别(P3~P7),我们添加大小为 {

2

0

2

1

/

3

2

2

/

3

2^0 , 2^{1/3} , 2^{2/3}

2021/322/3 } 的原始 3 个纵横比锚点集的锚点。这改进了我们的设置中的 AP。总的来说,每个级别有A = 9个锚点,并且跨级别,它们覆盖了相对于网络输入图像的32 - 813像素的比例范围.

IoU 阈值 >=0.5 将Anchor分配给ground-truth框;如果他们的 IoU 位于 [0, 0.4] 中,则将其设置为背景。由于每个Anchor最多分配给一个对象框,因此我们将其长度为 K(K个类别) 的标签向量中的相应条目设置为 1,将所有其他条目设置为 0。 如果Anchor未分配(在 [0.4, 0.5) 中重叠时可能会发生这种情况),则在训练期间会忽略该Anchor.

4.3 Classification Subnet

在这里插入图片描述

此子网是附加到每个 FPN 级别的小型 FCN;此子网的参数在所有金字塔级别共享
4个3*3 Conv *C filters+ReLU  +3*3Conv * KA filters +sigmoid (C=256,K=9)

4.4 Box Regression Subnet

我们将另一个小 FCN 附加到每个金字塔级别,以便将每个锚框的偏移量回归到最近的ground-truth对象(如果存在)。
框回归子网的设计与分类子网相同,只是它以每个空间位置的 4A 线性输出终止。
对于每个空间位置的A 个锚点中的每一个Anchor,这 4 个输出预测锚点和地面结构框之间的相对偏移量(我们使用 RCNN [11] 中的标准框参数化)。
对象分类子网和框回归子网虽然共享一个通用结构,但使用单独的参数。

4.5 Inference and Training

  1. 为了提高速度,在将检测器置信度阈值限定为0.05之后,我们仅解码每个FPN级别最多1k最高得分预测的box预测。合并所有级别的顶部预测,并应用阈值为 0.5 的非最大值抑制(NMS)以生成最终检测结果。
  2. 用Focal Loss作为分类子网的损失函数。训练 RetinaNet 时,Focal Loss将应用于每个采样图像中的所有Anchors。图像的总Focal Loss计算为所有 ∼100k 锚点的Focal Loss之和,由分配给ground-truth框的Anchor数进行归一化。
  3. 而启发式采样 (RPN) 或硬示例挖掘(OHEM、SSD)为每个minibatch选择一小组锚点(例如 256 个)

4.6 Initialization

在这里插入图片描述
在这里插入图片描述

	在训练开始,每个anchor都被标记为置信度为0.01的前景对象。

在这里插入图片描述

5. Experiments

5.1. Training Dense Detection

所有的实验都采用Resnet50和Resnet101+FPN构建主干网络。在所有消融实验中图像像素均为600px。
在这里插入图片描述

	 γ = 2.0 and α =0 .25 效果最好
	 Focal Loss可以抛弃简单的负样本的影响,聚焦于困难负样本上。

在这里插入图片描述


在这里插入图片描述

	 OHEM更强调错误分类的样本,但与Focal Loss不同,OHEM完全丢弃了简单的样例。

5.2. Model Architecture Design

Anchor Density:two-stage 检测器 可以使用区域池操作对任何位置、比例和纵横比的box进行分类。相比之下,由于one-stage检测器使用固定采样网格,因此在这些方法中实现box高覆盖率的常用方法是在每个空间位置使用多个"Anchor"来覆盖各种比例和宽高比的box。

6. Conclusion

  1. 我们将类不平衡确定为阻止one-stage检测器超越最佳性能two-stage方法的主要障碍。
  2. 我们提出了将调制项应用于交叉熵损失的Focal Loss,以便将学习重点放在硬负样本上
  3. 提出了Retinanet用于验证Focal Loss的有效性。

版权声明:本文为CSDN博主「chairon」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chairon/article/details/122251604

chairon

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

论文笔记之CSPNet

本文解决的是减少推理计算的问题。 本文收录于CVPR2019 论文地址:https://arxiv.org/pdf/1911.11929.pdf 1. 摘要 目前最先进的能够在计算机视觉任务上取得非常好的结果的方法往往很大程度上

YOLOv5论文笔记

1、网络结构图 (1)输入端 :Mosaic数据增强、自适应锚框计算、自适应图片缩放 (2)Backbone :Focus结构,CSP结构 &#x