旋转目标检测:FCOS: Fully Convolutional One-Stage Object Detection【方法解读】

FCOS: 全卷积单阶段目标检测

我们提出了一种全卷积单阶段目标检测器(FCOS),以逐像素预测的方式解决目标检测问题,类似于语义分割。目前几乎所有的最先进目标检测器,如RetinaNet、SSD、YOLOv3和Faster R-CNN,都依赖于预定义的锚框。相反,我们提出的FCOS检测器是无锚框的,同时也是无候选区域的。通过消除预定义的锚框集,FCOS完全避免了与锚框相关的复杂计算,如训练期间计算重叠等。更重要的是,我们还避免了与锚框相关的所有超参数,这些参数通常对最终的检测性能非常敏感。

仅使用非极大值抑制(NMS)进行后处理,使用ResNeXt-64x4d-101的FCOS在单模型和单尺度测试中实现了44.7%的AP,超越了以前的单阶段检测器,并具有更简单的优势。我们首次展示了一种更简单且灵活的检测框架,实现了改进的检测精度。我们希望所提出的FCOS框架可以作为许多其他实例级任务的一个简单而强大的替代方案。代码可以在以下网址获得:

tinyurl.com/FCOSv1

1. 引言

物体检测是计算机视觉中一个基础但具有挑战性的任务,要求算法为图像中每个感兴趣的实例预测一个包含类别标签的边界框。当前所有的主流检测器如 Faster R-CNN [24]、SSD [18] 和 YOLOv2、v3 [23] 都依赖于一组预定义的锚框,并且长久以来认为锚框的使用是检测器成功的关键。尽管它们取得了巨大的成功,但锚框基检测器存在一些缺点:

  1. 如文献 [15, 24] 所示,检测性能对锚框的尺寸、长宽比和数量非常敏感。例如,在 RetinaNet [15] 中,改变这些超参数会影响 COCO 基准测试上的 AP 高达 4%。

  2. 即使经过精心设计,由于锚框的尺度和长宽比是固定的,检测器在处理形状变化较大的目标候选时会遇到困难,特别是对于小物体。预定义的锚框也会妨碍检测器的泛化能力,因为它们需要在新的检测任务上重新设计以适应不同的目标尺寸或长宽比。

  3. 为了实现高召回率,锚框基检测器需要在输入图像上密集放置锚框(例如,对于短边为 800 的图像,在特征金字塔网络 (FPN) [14] 中需要超过 18 万个锚框)。训练期间大多数这些锚框被标记为负样本。负样本过多会加剧训练中正负样本的不平衡。

  4. 锚框还涉及复杂的计算,例如计算与真实边界框的交并比(IoU)分数。

最近,全卷积网络 (FCNs) [20] 在语义分割 [20, 28, 9, 19]、深度估计 [17, 31]、关键点检测 [3] 和计数 [2] 等密集预测任务中取得了巨大成功。作为高层次视觉任务之一,物体检测可能是唯一一个由于使用锚框而偏离了整洁的逐像素预测框架的任务。自然地要问一个问题:我们能否以类似于语义分割中的逐像素预测方式来解决物体检测问题? 这样一来,这些基础的视觉任务就可以(几乎)统一在一个框架中。我们展示了答案是肯定的。此外,我们证明了,首次通过这种更简单的 FCN 基检测器,其性能甚至优于基于锚框的对手。

在文献中,有一些工作尝试利用 FCNs 框架进行物体检测,例如 DenseBox [12]。这些 FCN 框架直接在特征图的每个空间位置上预测一个 4D 向量和一个类别标签。图 1(左)显示,4D 向量描述了从边界框的四边到位置的相对偏移。这些框架类似于语义分割中的 FCNs,只是每个位置需要回归一个 4D 连续向量。然而,为了处理不同尺寸的边界框,DenseBox [12] 将训练图像裁剪并缩放到固定比例。因此 DenseBox 必须在图像金字塔上进行检测,这违背了 FCN 一次计算所有卷积的理念。此外,这些方法主要用于场景文本检测 [33, 10] 或人脸检测 [32, 12] 等特殊领域的目标检测,因为认为这些方法不适用于具有高度重叠边界框的通用物体检测。图 1(右)显示,高度重叠的边界框导致了难以处理的模糊性:不清楚在这些重叠区域中的哪个边界框应该进行回归。

在后续部分中,我们将仔细研究这个问题,并展示通过 FPN 可以大大消除这种模糊性。结果表明,我们的方法已经可以在检测准确性上与传统的基于锚框的检测器媲美。此外,我们观察到,我们的方法可能会在远离目标物体中心的位置产生许多低质量的预测边界框。为了抑制这些低质量的检测结果,我们引入了一个新的"中心度"分支(只有一层),用于预测像素到其对应边界框中心的偏差,如公式 (3) 所定义。这个分数然后用于在 NMS 中下调低质量检测边界框的权重,并合并检测结果。这种简单而有效的中心度分支使得基于 FCN 的检测器在相同的训练和测试设置下,表现优于基于锚框的对手。

这个新的检测框架具有以下优点:

  • 检测现在与许多其他可以通过 FCN 解决的任务(如语义分割)统一,使得从这些任务中借用思想变得更容易。
  • 检测变得无候选区域和无锚框,显著减少了设计参数的数量。这些设计参数通常需要启发式调优,并涉及许多技巧以获得良好的性能。因此,我们的新检测框架使检测器,特别是其训练,变得更加简单。
  • 通过消除锚框,我们的新检测器完全避免了与锚框相关的复杂计算,如 IoU 计算和训练期间锚框与真实边界框之间的匹配,从而减少了训练和测试时间以及内存占用。
  • 不依赖复杂的技巧,我们在单阶段检测器中取得了最先进的结果。我们还展示了所提出的 FCOS 可以用作两阶段检测器中的区域建议网络(RPNs),并且性能显著优于其基于锚框的 RPNs 对手。考虑到更简单的无锚框检测器的更好性能,我们鼓励社区重新思考在物体检测中使用锚框的必要性,锚框目前被认为是检测的事实标准。
  • 所提出的检测器可以立即扩展到其他视觉任务,包括实例分割和关键点检测。我们相信这种新方法可以成为许多实例级预测问题的新基准。

2. 相关工作

基于锚框的检测器

基于锚框的检测器继承了传统滑动窗口和基于候选区域的检测器的思想,如 Fast R-CNN [6]。在基于锚框的检测器中,锚框可以被视为预定义的滑动窗口或候选区域,这些窗口或区域被分类为正样本或负样本,并通过一个额外的偏移回归来细化边界框的位置。因此,这些检测器中的锚框可以视为训练样本。与以前的检测器如 Fast R-CNN 不同,Fast R-CNN 为每个滑动窗口/候选区域重复计算图像特征,锚框利用了 CNN 的特征图,避免了重复的特征计算,大大加快了检测过程。锚框的设计在 Faster R-CNN 的 RPNs [24]、SSD [18] 和 YOLOv2 [22] 中得到了普及,并成为现代检测器的惯例。

然而,如上所述,锚框导致了过多的超参数,这些超参数通常需要仔细调优以获得良好的性能。除了上述描述锚框形状的超参数外,基于锚框的检测器还需要其他超参数来标记每个锚框为正样本、忽略样本或负样本。在以前的工作中,它们通常采用锚框和真实边界框之间的交并比 (IoU) 来确定锚框的标签(例如,如果锚框的 IoU 在 [0.5, 1] 范围内,则为正锚框)。这些超参数对最终的准确性有很大的影响,并且需要启发式调优。同时,这些超参数是特定于检测任务的,使得检测任务偏离了用于其他密集预测任务(如语义分割)的整洁的全卷积网络架构。

无锚框检测器

最受欢迎的无锚框检测器可能是 YOLOv1 [21]。YOLOv1 不使用锚框,而是在靠近物体中心的点预测边界框。由于仅使用靠近中心的点进行预测,YOLOv1 的召回率较低,如 YOLOv2 [22] 所述。因此,YOLOv2 也采用了锚框。与 YOLOv1 相比,FCOS 利用了真实边界框中的所有点来预测边界框,并通过提出的"中心度"分支抑制低质量的检测边界框。因此,FCOS 能够提供与基于锚框的检测器相当的召回率,如我们的实验所示。

CornerNet [13] 是最近提出的无锚框检测器,通过检测边界框的一对角点并将它们组合形成最终的检测边界框。CornerNet 需要更复杂的后处理来组合属于同一实例的角点对。为此目的,学习了一个额外的距离度量。

另一类无锚框检测器如 [32] 基于 DenseBox [12]。这些检测器被认为不适用于通用物体检测,因为它们在处理重叠边界框和召回率较低方面存在困难。在本工作中,我们展示了通过多层次 FPN 预测,这两个问题可以在很大程度上得到缓解。此外,我们还展示了,结合我们提出的中心度分支,这种更简单的检测器能够实现比基于锚框的对手更好的检测性能。

3. 我们的方法

在本节中,我们首先以逐像素预测的方式重新表述物体检测。接下来,我们展示了如何利用多层次预测来提高召回率并解决重叠边界框带来的模糊性。最后,我们提出了"中心度"分支,它有助于抑制低质量的检测边界框,并显著提高整体性能。

3.1 全卷积单阶段目标检测器

设 F i ∈ R H × W × C F_i \in \mathbb{R}^{H \times W \times C} Fi∈RH×W×C 为骨干 CNN 第 i i i 层的特征图, s s s 为到该层的总步幅。输入图像的真实边界框定义为 { B i } \{ B_i \} {Bi},其中 B i = ( x 0 ( i ) , y 0 ( i ) , x 1 ( i ) , y 1 ( i ) , c ( i ) ) ∈ R 4 × { 1 , 2 , . . . C } B_i = (x_0^{(i)}, y_0^{(i)}, x_1^{(i)}, y_1^{(i)}, c^{(i)}) \in \mathbb{R}^4 \times \{1, 2, ... C\} Bi=(x0(i),y0(i),x1(i),y1(i),c(i))∈R4×{1,2,...C}。这里 ( x 0 ( i ) , y 0 ( i ) ) (x_0^{(i)}, y_0^{(i)}) (x0(i),y0(i)) 和 ( x 1 ( i ) , y 1 ( i ) ) (x_1^{(i)}, y_1^{(i)}) (x1(i),y1(i)) 分别表示边界框的左上角和右下角的坐标, c ( i ) c^{(i)} c(i) 是边界框内物体的类别, C C C 为类别数量,MS-COCO 数据集中的 C C C 为 80。

对于特征图 F i F_i Fi 上的每个位置 ( x , y ) (x, y) (x,y),我们可以将其映射回输入图像上的位置 ( ⌊ s 2 ⌋ + x s , ⌊ s 2 ⌋ + y s ) (\lfloor \frac{s}{2} \rfloor + xs, \lfloor \frac{s}{2} \rfloor + ys) (⌊2s⌋+xs,⌊2s⌋+ys),该位置接近于位置 ( x , y ) (x, y) (x,y) 的感受野中心。不同于基于锚框的检测器,后者考虑输入图像上的位置为(多个)锚框的中心,并用这些锚框作为参考回归目标边界框,我们直接在该位置回归目标边界框。换句话说,我们的检测器直接将位置视为训练样本,而不是像基于锚框的检测器那样将锚框视为训练样本,这与语义分割中的 FCNs 相同 [20]。

具体来说,如果位置 ( x , y ) (x, y) (x,y) 落在任何真实边界框内,并且位置的类别标签 c ∗ c^* c∗ 是真实边界框的类别标签,则该位置被视为正样本,否则为负样本且 c ∗ = 0 c^* = 0 c∗=0(背景类)。除了分类标签外,我们还有一个 4D 实向量 t ∗ = ( l ∗ , t ∗ , r ∗ , b ∗ ) t^* = (l^*, t^*, r^*, b^*) t∗=(l∗,t∗,r∗,b∗) 作为该位置的回归目标。这里 l ∗ l^* l∗、 t ∗ t^* t∗、 r ∗ r^* r∗ 和 b ∗ b^* b∗ 是从位置到边界框四边的距离,如图 1(左)所示。如果一个位置落在多个边界框中,则视为模糊样本。我们简单地选择最小面积的边界框作为其回归目标。在下一节中,我们将展示通过多层次预测,可以显著减少模糊样本的数量,从而几乎不影响检测性能。形式上,如果位置 ( x , y ) (x, y) (x,y) 与边界框 B i B_i Bi 相关联,则该位置的回归目标可以表述为:

l ∗ = x − x 0 ( i ) , t ∗ = y − y 0 ( i ) , r ∗ = x 1 ( i ) − x , b ∗ = y 1 ( i ) − y l^* = x - x_0^{(i)}, \quad t^* = y - y_0^{(i)}, \quad r^* = x_1^{(i)} - x, \quad b^* = y_1^{(i)} - y l∗=x−x0(i),t∗=y−y0(i),r∗=x1(i)−x,b∗=y1(i)−y

值得注意的是,FCOS 可以利用尽可能多的前景样本来训练回归器。这不同于基于锚框的检测器,后者只考虑与真实边界框具有足够高 IoU 的锚框作为正样本。我们认为,这可能是 FCOS 优于其基于锚框的对手的原因之一。

网络输出

对应于训练目标,我们的网络最终层预测一个 80 维向量 p p p 作为分类标签和一个 4D 向量 t = ( l , t , r , b ) t = (l, t, r, b) t=(l,t,r,b) 作为边界框坐标。遵循 [15],我们训练了 C C C 个二分类器,而不是训练一个多分类器。类似于 [15],我们在骨干网络的特征图后分别添加了四个卷积层用于分类和回归分支。此外,由于回归目标总是正数,我们在回归分支的顶端使用 exp ⁡ ( x ) \exp(x) exp(x) 将任何实数映射到 ( 0 , ∞ ) (0, \infty) (0,∞)。值得注意的是,FCOS 的网络输出变量比流行的基于锚框的检测器 [15, 24] 少 9 倍,因为后者在每个位置有 9 个锚框。

损失函数

我们定义我们的训练损失函数如下:

L ( { p x , y } , { t x , y } ) = 1 N p o s ∑ x , y L c l s ( p x , y , c x , y ∗ ) + λ N p o s ∑ x , y 1 { c x , y ∗ > 0 } L r e g ( t x , y , t x , y ∗ ) , L(\{p_{x,y}\}, \{t_{x,y}\}) = \frac{1}{N_{pos}} \sum_{x,y} L_{cls}(p_{x,y}, c^*{x,y}) + \frac{\lambda}{N{pos}} \sum_{x,y} \mathbf{1}{\{c^*{x,y} > 0\}} L_{reg}(t_{x,y}, t^*_{x,y}), L({px,y},{tx,y})=Npos1x,y∑Lcls(px,y,cx,y∗)+Nposλx,y∑1{cx,y∗>0}Lreg(tx,y,tx,y∗),

其中 L c l s L_{cls} Lcls 是 [15] 中的焦点损失, L r e g L_{reg} Lreg 是 UnitBox [32] 中的 IoU 损失。 N p o s N_{pos} Npos 表示正样本的数量,本文中 λ \lambda λ 取 1 作为 L r e g L_{reg} Lreg 的平衡权重。求和在特征图 F i F_i Fi 上的所有位置进行。 1 { c x , y ∗ > 0 } \mathbf{1}{\{c^*{x,y} > 0\}} 1{cx,y∗>0} 是指示函数,如果 c x , y ∗ > 0 c^*_{x,y} > 0 cx,y∗>0 则取 1,否则取 0。

推理

FCOS 的推理过程非常简单。给定输入图像,我们通过网络前向传播它,并获取每个位置的分类得分 p x , y p_{x,y} px,y 和回归预测 t x , y t_{x,y} tx,y 在特征图 F i F_i Fi 上。按照 [15],我们选择分类得分 p x , y > 0.05 p_{x,y} > 0.05 px,y>0.05 的位置作为正样本,并反转公式 (1) 以获得预测的边界框。

图1 -- 如左图所示,FCOS 通过预测一个 4D 向量 ( l , t , r , b ) (l, t, r, b) (l,t,r,b) 来编码每个前景像素的边界框位置(在训练期间由真实边界框信息监督)。右图显示,当一个位置位于多个边界框内时,关于该位置应该回归哪个边界框,可能会产生模糊。

解析:

左图展示了 FCOS 方法的工作原理。FCOS 通过预测一个包含四个分量的向量 ( l , t , r , b ) (l, t, r, b) (l,t,r,b) 来表示边界框的位置。这四个分量分别表示从当前像素位置到边界框左边、顶部、右边和底部的距离。在训练过程中,这些距离是通过真实边界框的信息进行监督的,即模型在训练时会参考图像中的实际边界框来调整其预测,使得预测值尽可能接近实际值。

右图则展示了一个位置可能位于多个边界框内的情况。在这种情况下,该位置在回归哪个边界框的问题上会产生模糊性。这意味着,对于一个落在多个边界框内的像素点,模型可能难以确定该点到底应该属于哪个边界框,从而影响检测的准确性。

通过这两个图示,解释了 FCOS 如何进行边界框的预测以及在面对重叠边界框时可能遇到的问题。这种方法通过直接预测每个像素到边界框边缘的距离,避免了传统方法中使用预定义锚框的复杂性,但同时也引入了新的挑战,特别是在处理重叠边界框时的模糊性问题。

----------------------------以下是"3.1 全卷积单阶段目标检测器"小节的解析-------------------------------

3.1 全卷卷积单阶段目标检测器

特征图和边界框定义

在全卷积单阶段目标检测器中,设 F i ∈ R H × W × C F_i \in \mathbb{R}^{H \times W \times C} Fi∈RH×W×C 为骨干 CNN 第 i i i 层的特征图,其中 H H H 是特征图的高度, W W W 是特征图的宽度, C C C 是特征图的通道数。 s s s 为到该层的总步幅。输入图像的真实边界框定义为 { B i } \{ B_i \} {Bi},其中 B i = ( x 0 ( i ) , y 0 ( i ) , x 1 ( i ) , y 1 ( i ) , c ( i ) ) ∈ R 4 × { 1 , 2 , . . . C } B_i = (x_0^{(i)}, y_0^{(i)}, x_1^{(i)}, y_1^{(i)}, c^{(i)}) \in \mathbb{R}^4 \times \{1, 2, ... C\} Bi=(x0(i),y0(i),x1(i),y1(i),c(i))∈R4×{1,2,...C}。这里 ( x 0 ( i ) , y 0 ( i ) ) (x_0^{(i)}, y_0^{(i)}) (x0(i),y0(i)) 和 ( x 1 ( i ) , y 1 ( i ) ) (x_1^{(i)}, y_1^{(i)}) (x1(i),y1(i)) 分别表示边界框的左上角和右下角的坐标, c ( i ) c^{(i)} c(i) 是边界框内物体的类别, C C C 为类别数量。在 MS-COCO 数据集中的 C C C 为 80。

位置映射

对于特征图 F i F_i Fi 上的每个位置 ( x , y ) (x, y) (x,y),我们可以将其映射回输入图像上的位置 ( ⌊ s 2 ⌋ + x s , ⌊ s 2 ⌋ + y s ) (\lfloor \frac{s}{2} \rfloor + xs, \lfloor \frac{s}{2} \rfloor + ys) (⌊2s⌋+xs,⌊2s⌋+ys),该位置接近于位置 ( x , y ) (x, y) (x,y) 的感受野中心。不同于基于锚框的检测器,后者考虑输入图像上的位置为(多个)锚框的中心,并用这些锚框作为参考回归目标边界框,我们直接在该位置回归目标边界框。

训练样本

在我们的检测器中,直接将位置视为训练样本,而不是像基于锚框的检测器那样将锚框视为训练样本,这与语义分割中的 FCNs 相同 [20]。具体来说,如果位置 ( x , y ) (x, y) (x,y) 落在任何真实边界框内,并且位置的类别标签 c ∗ c^* c∗ 是真实边界框的类别标签,则该位置被视为正样本,否则为负样本且 c ∗ = 0 c^* = 0 c∗=0(背景类)。

回归目标

除了分类标签外,我们还有一个 4D 实向量 t ∗ = ( l ∗ , t ∗ , r ∗ , b ∗ ) t^* = (l^*, t^*, r^*, b^*) t∗=(l∗,t∗,r∗,b∗) 作为该位置的回归目标。这里 l ∗ l^* l∗、 t ∗ t^* t∗、 r ∗ r^* r∗ 和 b ∗ b^* b∗ 是从位置到边界框四边的距离,如图 1(左)所示。如果一个位置落在多个边界框中,则视为模糊样本。我们简单地选择最小面积的边界框作为其回归目标。形式上,如果位置 ( x , y ) (x, y) (x,y) 与边界框 B i B_i Bi 相关联,则该位置的回归目标可以表述为:

l ∗ = x − x 0 ( i ) , t ∗ = y − y 0 ( i ) , r ∗ = x 1 ( i ) − x , b ∗ = y 1 ( i ) − y l^* = x - x_0^{(i)}, \quad t^* = y - y_0^{(i)}, \quad r^* = x_1^{(i)} - x, \quad b^* = y_1^{(i)} - y l∗=x−x0(i),t∗=y−y0(i),r∗=x1(i)−x,b∗=y1(i)−y

前景样本

值得注意的是,FCOS 可以利用尽可能多的前景样本来训练回归器。这不同于基于锚框的检测器,后者只考虑与真实边界框具有足够高 IoU 的锚框作为正样本。我们认为,这可能是 FCOS 优于其基于锚框的对手的原因之一。

网络输出

对应于训练目标,我们的网络最终层预测一个 80 维向量 p p p 作为分类标签和一个 4D 向量 t = ( l , t , r , b ) t = (l, t, r, b) t=(l,t,r,b) 作为边界框坐标。遵循 [15],我们训练了 C C C 个二分类器,而不是训练一个多分类器。类似于 [15],我们在骨干网络的特征图后分别添加了四个卷积层用于分类和回归分支。此外,由于回归目标总是正数,我们在回归分支的顶端使用 exp ⁡ ( x ) \exp(x) exp(x) 将任何实数映射到 ( 0 , ∞ ) (0, \infty) (0,∞)。值得注意的是,FCOS 的网络输出变量比流行的基于锚框的检测器 [15, 24] 少 9 倍,因为后者在每个位置有 9 个锚框。

损失函数

我们定义我们的训练损失函数如下:

L ( { p x , y } , { t x , y } ) = 1 N p o s ∑ x , y L c l s ( p x , y , c x , y ∗ ) + λ N p o s ∑ x , y 1 { c x , y ∗ > 0 } L r e g ( t x , y , t x , y ∗ ) , L(\{p_{x,y}\}, \{t_{x,y}\}) = \frac{1}{N_{pos}} \sum_{x,y} L_{cls}(p_{x,y}, c^*{x,y}) + \frac{\lambda}{N{pos}} \sum_{x,y} \mathbf{1}{\{c^*{x,y} > 0\}} L_{reg}(t_{x,y}, t^*_{x,y}), L({px,y},{tx,y})=Npos1x,y∑Lcls(px,y,cx,y∗)+Nposλx,y∑1{cx,y∗>0}Lreg(tx,y,tx,y∗),

其中 L c l s L_{cls} Lcls 是 [15] 中的焦点损失, L r e g L_{reg} Lreg 是 UnitBox [32] 中的 IoU 损失。 N p o s N_{pos} Npos 表示正样本的数量,本文中 λ \lambda λ 取 1 作为 L r e g L_{reg} Lreg 的平衡权重。求和在特征图 F i F_i Fi 上的所有位置进行。 1 { c x , y ∗ > 0 } \mathbf{1}{\{c^*{x,y} > 0\}} 1{cx,y∗>0} 是指示函数,如果 c x , y ∗ > 0 c^*_{x,y} > 0 cx,y∗>0 则取 1,否则取 0。

----------------------------以上是"3.1 全卷积单阶段目标检测器"小节的解析-------------------------------

3.2 使用 FPN 进行 FCOS 的多层次预测

在这里,我们展示了如何通过使用 FPN 进行多层次预测来解决 FCOS 的两个潜在问题 [14]。1)CNN 最终特征图的大步幅(例如,16 倍)可能导致相对较低的最佳可能召回率(BPR)(^1)。对于基于锚框的检测器,大步幅导致的低召回率可以通过降低正锚框所需的 IOU 分数在一定程度上得到补偿。对于 FCOS,乍一看可能会认为 BPR 会比基于锚框的检测器低很多,因为由于大步幅,最终特征图编码的物体位置不可能被召回。我们在此通过实验证明,即使步幅很大,基于 FCN 的 FCOS 仍然可以产生良好的 BPR,甚至比官方实现 Detectron [7] 中的基于锚框的检测器 RetinaNet [15] 的 BPR 更好(参考表 1)。因此,BPR 实际上不是 FCOS 的问题。此外,通过使用多层次 FPN 预测 [14],BPR 可以进一步提高,以匹配基于锚框的 RetinaNet 能达到的最佳 BPR。

2)真实边界框中的重叠会导致难以解决的模糊性,即位置在重叠区域中应该回归哪个边界框?这种模糊性导致了基于 FCN 的检测器性能下降。在这项工作中,我们展示了通过多层次预测可以极大地解决这种模糊性,并且基于 FCN 的检测器可以获得与基于锚框的检测器相当,甚至更好的性能。

遵循 FPN [14],我们在不同层次的特征图上检测不同大小的物体。具体来说,我们使用了五个层次的特征图,定义为 { P 3 , P 4 , P 5 , P 6 , P 7 } \{P_3, P_4, P_5, P_6, P_7\} {P3,P4,P5,P6,P7}。 P 3 , P 4 P_3, P_4 P3,P4 和 P 5 P_5 P5 由骨干 CNN 的特征图 C 3 , C 4 C_3, C_4 C3,C4 和 C 5 C_5 C5 通过一个带有自顶向下连接的 1 × 1 卷积层生成,如图 2 所示。 P 6 P_6 P6 和 P 7 P_7 P7 通过在 P 5 P_5 P5 和 P 6 P_6 P6 上应用一个步幅为 2 的卷积层生成。因此,特征层次 P 3 , P 4 , P 5 , P 6 P_3, P_4, P_5, P_6 P3,P4,P5,P6 和 P 7 P_7 P7 的步幅分别为 8, 16, 32, 64 和 128。

与基于锚框的检测器不同,后者为不同大小的锚框分配到不同的特征层次,我们直接限制每个层次的边界框回归范围。具体来说,我们首先计算每个层次上每个位置的回归目标 l ∗ , t ∗ , r ∗ l^*, t^*, r^* l∗,t∗,r∗ 和 b ∗ b^* b∗。接下来,如果一个位置满足 max ⁡ ( l ∗ , t ∗ , r ∗ , b ∗ ) > m i \max(l^*, t^*, r^*, b^*) > m_i max(l∗,t∗,r∗,b∗)>mi 或 max ⁡ ( l ∗ , t ∗ , r ∗ , b ∗ ) < m i − 1 \max(l^*, t^*, r^*, b^*) < m_{i-1} max(l∗,t∗,r∗,b∗)<mi−1,则该位置被设置为负样本,因此不再需要回归边界框。这里 m i m_i mi 是层次 i i i 需要回归的最大距离。在本工作中, m 2 , m 3 , m 4 , m 5 , m 6 m_2, m_3, m_4, m_5, m_6 m2,m3,m4,m5,m6 和 m 7 m_7 m7 分别设置为 0, 64, 128, 256, 512 和 ∞。由于不同大小的物体分配到不同的特征层次,并且大多数重叠发生在大小差异很大的物体之间。如果一个位置,即使使用多层次预测,仍然分配到多个真实边界框,我们简单地选择最小面积的边界框作为其目标。如我们的实验所示,多层次预测可以大大缓解上述模糊性,并将基于 FCN 的检测器的性能提高到与基于锚框的检测器相同的水平。

最后,遵循 [14, 15],我们在不同特征层次之间共享头部,不仅使检测器参数效率更高,还提高了检测性能。然而,我们观察到,不同的特征层次需要回归不同的大小范围(例如, P 3 P_3 P3 的大小范围为 [0, 64] 和 P 4 P_4 P4 为 [64, 128]),因此使用相同头部处理不同特征层次是不合理的。因此,我们使用可训练的标量 s i s_i si 调整指数函数 exp ⁡ ( s i x ) \exp(s_i x) exp(six) 的基数,从而自动调整特征层次 P i P_i Pi 的输出基数,这稍微提高了检测性能。

(^1)检测器可以达到的召回率上限。

----------------------以下是"3.2 使用 FPN 进行 FCOS 的多层次预测"小节的解析-------------------------

在这部分,作者提到 FCOS 存在两个潜在问题,分别是:

  1. 大步幅导致的最佳可能召回率(BPR)低

    • 在 CNN 中,特征图的步幅越大,特征图的分辨率越低。比如,最终特征图步幅为 16 倍,即特征图的分辨率是原始图像的 1/16。
    • 大步幅会导致低 BPR,意味着检测器可能无法召回所有目标。
    • 对于基于锚框的检测器,可以通过降低正锚框的 IOU 阈值来部分弥补这一问题,但对于 FCOS,这种方法无效。
  2. 真实边界框重叠导致的模糊性

    • 当一个位置位于多个真实边界框内时,模型无法确定该位置应该回归哪个边界框,导致性能下降。

通过引入 FPN,可以解决上述两个问题。

改进 BPR

  1. 多层次特征图

    • 使用 FPN 生成多个层次的特征图 { P 3 , P 4 , P 5 , P 6 , P 7 } \{P_3, P_4, P_5, P_6, P_7\} {P3,P4,P5,P6,P7},这些特征图来自不同的骨干层次 C 3 , C 4 , C 5 C_3, C_4, C_5 C3,C4,C5,并通过 1 × 1 卷积层生成。
    • P 6 P_6 P6 和 P 7 P_7 P7 通过在 P 5 P_5 P5 和 P 6 P_6 P6 上应用步幅为 2 的卷积层生成。
    • 不同的特征图具有不同的步幅:8, 16, 32, 64 和 128。
  2. 限制回归范围

    • 计算每个层次上每个位置的回归目标 l ∗ , t ∗ , r ∗ , b ∗ l^*, t^*, r^*, b^* l∗,t∗,r∗,b∗。
    • 如果位置的回归目标超过某个层次的最大距离 m i m_i mi,则该位置被设置为负样本。
    • 本文中, m 2 , m 3 , m 4 , m 5 , m 6 m_2, m_3, m_4, m_5, m_6 m2,m3,m4,m5,m6 和 m 7 m_7 m7 分别设置为 0, 64, 128, 256, 512 和 ∞。
  3. 避免模糊性

    • 如果一个位置分配到多个真实边界框,则选择面积最小的边界框作为目标。
    • 多层次预测可以显著减少这种模糊性,提高基于 FCN 的检测器性能。

共享头部和可训练标量

  1. 共享头部

    • 在不同特征层次之间共享头部,提升参数效率并提高检测性能。
    • 不同特征层次需要回归不同大小范围的目标,因此使用相同的头部不合理。
  2. 可训练标量

    • 使用可训练的标量 s i s_i si 调整指数函数 exp ⁡ ( s i x ) \exp(s_i x) exp(six) 的基数,自动调整特征层次 P i P_i Pi 的输出基数,进一步提升检测性能。

实验验证

通过实验验证,使用 FPN 进行多层次预测可以显著提高 FCOS 的 BPR,使其达到甚至超过基于锚框的检测器的水平。同时,多层次预测也有效地解决了边界框重叠带来的模糊性问题,使基于 FCN 的检测器性能得到了显著提升。

总结而言,通过多层次 FPN 预测和相应的优化策略,FCOS 在解决大步幅导致的低 BPR 和边界框重叠带来的模糊性问题上表现出色,使其能够在保持高效的同时,达到或超过传统基于锚框的检测器的性能。

----------------------以上是"3.2 使用 FPN 进行 FCOS 的多层次预测"小节的解析-------------------------

3.3. FCOS的中心度

在FCOS中使用多层次预测后,FCOS与基于锚点的检测器之间仍然存在性能差距。我们观察到,这是由于许多由远离物体中心的位置生成的低质量预测边界框导致的。

我们提出了一种简单而有效的策略来抑制这些低质量的检测边界框,而无需引入任何超参数。具体来说,我们在分类分支的并行位置添加一个单层分支(如图2所示),以预测位置的"中心度"。中心度描述了位置到其负责物体中心的归一化距离,如图7所示。给定位置的回归目标 ( l^, t^ , r^, b^ ),中心度目标定义为:

centerness ∗ = min ⁡ ( l ∗ , r ∗ ) max ⁡ ( l ∗ , r ∗ ) × min ⁡ ( t ∗ , b ∗ ) max ⁡ ( t ∗ , b ∗ ) \text{centerness}^* = \sqrt{\frac{\min(l^*, r^*)}{\max(l^*, r^*)} \times \frac{\min(t^*, b^*)}{\max(t^*, b^*)}} centerness∗=max(l∗,r∗)min(l∗,r∗)×max(t∗,b∗)min(t∗,b∗)

我们在此使用平方根来减缓中心度的衰减。中心度的范围从0到1,因此用二元交叉熵(BCE)损失进行训练。该损失添加到损失函数 Eq. (2) 中。在测试时,最终得分(用于排名检测到的边界框)通过将预测的中心度与相应的分类得分相乘来计算。因此,中心度可以降低远离物体中心的边界框的得分。因此,这些低质量的边界框很可能被最终的非极大值抑制(NMS)过程过滤掉,从而显著提高检测性能。

中心度的另一种替代方法是仅使用真实边界框的中央部分作为正样本,但需要一个额外的超参数,如工作 [12, 33] 所示。在我们提交后, [1] 中显示了两种方法的结合可以获得更好的性能。实验结果见表3。

相关推荐
幻风_huanfeng5 分钟前
线性代数中的核心数学知识
人工智能·机器学习
volcanical13 分钟前
LangGPT结构化提示词编写实践
人工智能
weyson44 分钟前
CSharp OpenAI
人工智能·语言模型·chatgpt·openai
RestCloud1 小时前
ETLCloud异常问题分析ai功能
人工智能·ai·数据分析·etl·数据集成工具·数据异常
IT古董1 小时前
【机器学习】决定系数(R²:Coefficient of Determination)
人工智能·python·机器学习
鲜枣课堂1 小时前
5G-A如何与AI融合发展?华为MBBF2024给出解答
人工智能·5g·华为
武子康2 小时前
大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
大数据·人工智能·python·机器学习·数据挖掘·scikit-learn·kmeans
武子康2 小时前
大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
大数据·人工智能·python·深度学习·算法·机器学习·数据挖掘
封步宇AIGC3 小时前
量化交易系统开发-实时行情自动化交易-Okex K线数据
人工智能·python·机器学习·数据挖掘
封步宇AIGC3 小时前
量化交易系统开发-实时行情自动化交易-Okex交易数据
人工智能·python·机器学习·数据挖掘