论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection

FCOS:Fully Convolutional One-Stage Object Detection

Zhi Tian Chunhua Shen∗ Hao Chen Tong He
The University of Adelaide, Australia


目录

FCOS:Fully Convolutional One-Stage Object Detection

1. Introduction

2. Related Work

(1)Anchor-based Detectors.

(2)Anchor-free Detectors. 

3. Our Approach

3.1. Fully Convolutional One-Stage Object Detector

(1)Network Outputs. 

(2)Loss Function. 

(3)Inference. 

3.2. Multi-level Prediction with FPN for FCOS

3.3. Center-ness for FCOS

4. Experiments

(1)Training Details.

(2)Inference Details.

4.1. Ablation Study

4.1.1 Multi-level Prediction with FPN

4.1.2 With or Without Center-ness

4.1.3 FCOS vs. Anchor-based Detectors

4.2. Comparison with State-of-the-art Detectors

5. Extensions on Region Proposal Networks

6. Conclusion

 

Appendix

7. Class-agnostic Precision-recall Curves

8. Visualization for Center-ness

9. Qualitative Results


Abstract:提出了一种全卷积的单级目标检测器 ( FCOS ),以一种逐像素预测的方式解决目标检测问题,类似于语义分割。几乎所有最先进的目标检测器,如 RetinaNet,SSD,YOLOv3 和 Faster R-CNN 都依赖于预定义的锚框。相比之下,我们提出的检测器FCOS是无锚框(anchor box free),也无建议的(proposal free)。通过消除预定义的锚框设置,FCOS完全避免了与锚框相关的复杂计算,如在训练过程中计算重叠,大大减少了训练内存占用。更重要的是,我们还避免了与锚框相关的所有超参数,这些超参数通常对最终检测性能非常敏感。由于只有后处理非最大抑制 ( NMS ),我们的检测器 FCOS 比以前的基于锚框的单级检测器具有更简单的优点。首次提出了一种简单灵活的检测框架,提高了检测精度。我们希望这个提出的 FCOS 框架可以作为许多其他实例级任务的简单而强大的替代方案。

代码获取:tinyurl.com/FCOSv1   https://github.com/tianzhi0549/FCOS

论文获取:https://arxiv.org/pdf/1904.01355.pdf

 


1. Introduction

目标检测是计算机视觉中的一项基本而又具有挑战性的任务,它要求算法为图像中感兴趣的每个实例预测一个带有类别标签的边界框。目前所有主流的检测器,如 Faster R-CNN [20]、SSD [15]、YOLOv2、v3 [19]都依赖于一组预定义的锚框,长期以来人们认为锚框的使用是检测器成功的关键。尽管它们取得了巨大的成功,但值得注意的是,基于锚框的检测器存在一些缺陷

  1. 如[12,20]所示,检测性能对锚框的尺寸、纵横比和数量敏感。例如,在 RetinaNet [12]中,在COCO基准[13]上,改变这些超参数会影响AP高达4%的性能。因此,这些超参数需要在基于锚框的检测器中仔细调整
  2. 即使经过精心设计,由于锚框的尺度和长径比是固定的,检测器在处理形状变化较大的候选对象时也会遇到困难,特别是对于小对象预定义的锚框还限制了检测器的泛化能力,因为它们需要针对不同对象大小或纵横比的新检测任务重新设计。
  3. 为了获得较高的召回率,需要一个基于锚框的检测器将框密集地放置在输入图像上 ( 例如,对于短边为 800 的图像,在特征金字塔网络 ( FPN ) [11]中放置超过 180K 个锚框)。在训练过程中,这些锚框大多被标记为负样本。负样本数量过多加剧了训练中正样本与负样本之间的不平衡
  4. 在训练过程中,当计算所有锚框和地面真实框(ground-truth boxes)之间的交并集 ( intersectionover-union, IOU ) 得分时,锚框数量过多也会显著增加计算量和内存占用

近年来,全卷积网络[16]在语义分割[16]、深度估计[14]、关键点检测[2]、计数[1]等密集预测任务中取得了巨大的成功。目标检测作为高级视觉任务之一,可能是唯一一个偏离纯卷积逐像素预测框架的任务,这主要是由于锚框的使用。问这样一个问题:我们能否以简洁的逐像素预测的方式来解决对象检测问题,例如类似用于语义分割的 FCN ? 由此,这些基本的远景任务可以(几乎)统一在一个框架中。我们证明答案是肯定的。此外,我们还首次证明了基于 FCN 的检测器比基于锚框的检测器具有更好的性能。

在文献中,一些作品试图利用基于 FCN 的框架进行目标检测,如 DenseBox [9]和 UnitBox [24]。具体地说,这些基于 FCN 的框架直接预测了特征图(feature maps)级别上每个空间位置上的一个 4D 向量加上一个类的类别。如图1(左)所示,4D 向量描述了一个边界框到该位置的四个边的相对偏移量。这些框架类似于用于语义分割的 FCNs,只是每个位置都需要回归一个 4D 连续向量。但是,为了处理不同大小的边界框,DenseBox [9]将训练图像调整为固定的比例。因此,DenseBox 必须对图像金字塔进行检测,这与 FCN 一次计算所有卷积的思想是相悖的。此外,更重要的是,这些方法主要用于特殊领域的目标检测,如场景文本检测[25]或人脸检测[24,9],因为人们认为这些方法不适用于具有高度重叠边界框的一般对象检测。如图1所示(右图),高度重叠的边界框导致了训练过程中难以处理的模糊性:对于重叠区域中的像素,不清楚 w.r.t 应该回归到哪个边界框

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第1张图片

在后续中,我们将进一步研究这个问题,并说明使用 FPN 可以在很大程度上消除这种模糊性。结果表明,该方法与传统的基于锚框的检测方法具有相当的检测精度。此外,我们注意到我们的方法可能会在远离目标对象中心的位置产生大量低质量的预测边界框。为了抑制这些低质量的检测,我们引入了一个新的 “ 中心度(center-ness)” 分支(只有一层)来预测一个像素到其相应边界框中心的偏移,如公式(3)所定义。然后,该分数用于降低低质量检测边界框的权重,并将检测结果合并到NMS中。简单而有效的中心度分支允许基于 FCN 的检测器在完全相同的训练和测试设置下胜过基于锚框的检测器。

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

  1. 现在检测与许多其他使用 FCN 解决的任务(如语义分割)统一起来,从而更容易重用这些任务中的思想。
  2. 检测变为无建议、无锚框,大大减少了设计参数的数量。设计参数通常需要启发式调优,为了获得良好的性能,需要使用许多技巧。因此,我们的新检测框架使检测器,特别是它的训练,变得相当简单。此外,通过消除锚框,我们的新检测器完全避免了训练过程中锚框与地面真值框之间复杂的 IOU 计算和匹配,并将总训练内存占用降低了 2 倍左右。
  3. 在没有附加条件的情况下,我们在单级检测器中实现了最先进的结果。我们还证明了所提出的 FCOS 可以在两级检测器中作为一个区域建议网络(Region Proposal Networks)使用,并且与基于锚框的 RPN 相比,可以获得更好的性能。由于更简单的无锚检测器性能更好,我们鼓励社区重新考虑在目标检测中使用锚框的必要性,因为锚框目前被认为是检测的实际标准。
  4. 所提出的检测器可以立即扩展到以最小的修改完成其他视觉任务,包括实例分割和关键点检测。我们认为,该方法可以作为许多实例预测问题的新基线

 


2. Related Work

 

(1)Anchor-based Detectors.

基于锚框的检测器继承了传统滑动窗口和基于建议(proposal)的检测器 ( 如 Fast R-CNN [5] ) 的思想。在基于锚框的检测器中,锚框可以看作是预先定义的滑动窗口或 proposal ,这些窗口或 proposal 被划分为正补丁(positive patches)或负补丁(negative patches),通过额外的偏移量回归来细化边界框位置的预测。因此,这些检测器中的锚框可以看作是训练样本。与之前的 Fast R-CNN 等检测器反复计算每个滑动窗口 / proposal 的图像特征不同,锚框利用卷积神经网络 ( CNNs ) 的特征图,避免了重复的特征计算,大大加快了检测过程。Faster R-CNN 中的 RPNs [20]、SSD [15]和 YOLOv2 [18]推广了锚框的设计,成为现代检测器的惯例。

然而,如上所述,锚框会导致过多的超参数,通常需要仔细调整这些超参数才能获得良好的性能。除了上述锚框形状的超参数外,基于锚框的检测器还需要其他超参数将每个锚框标记为正样本、忽略样本或负样本。在之前的工作中,他们经常使用锚框和 ground truth 框之间的交并集(intersection over union,IOU)来标记它们 ( 例如,如果锚框的 IOU 在 [0.5, 1],记作正样本)。这些超参数对最终的精度影响很大,需要进行启发式调优(heuristic tuning)。同时,这些超参数是针对检测任务的,使得检测任务偏离了语义分割等其他密集预测任务中使用的简洁的全卷积网络架构。

 

(2)Anchor-free Detectors. 

最流行的无锚检测器可能是 YOLOv1 [17]。YOLOv1没有使用锚框,而是预测在靠近对象中心的点上的边界框。只使用中心附近的点,因为它们被认为能够产生更高的质量检测。然而,由于仅使用靠近中心的点来预测边界框, YOLOv1 的召回率较低,正如 YOLOv2 [18]中所述。于是,YOLOv2 [18]也使用了锚框。与 YOLOv1 相比,FCOS 利用 ground truth 边界框中的所有点来预测边界盒,并通过提出的 “ 中心度 ” 分支抑制检测到的低质量的边界框。因此,FCOS 能够提供与基于锚框的检测器相当的召回率,如我们的实验所示。

CornerNet [10]是最近提出的一种单级无锚框检测器,它检测边界框的一对角,并将它们分组形成最终检测到的边界框。CornerNet 需要更复杂的后处理来对属于同一实例的角对进行分组。为了分组,我们学习了一个额外的距离度量。

另一类无锚框检测器如[24]是基于 DenseBox [9]的。由于难以处理重叠的边界框,且召回率较低,该检测器系列已被认为不适合通用目标检测。在这项工作中,我们证明了多级 FPN 预测可以很大程度上缓解这两个问题。此外,与我们提出的中心度分支一起指出的是,相对于基于锚框的检测器,更简单的检测器可以实现更好的检测性能。

 


3. Our Approach

在本节中,我们首先以逐像素预测的方式重新定义目标检测。接下来,我们展示了如何利用多级预测来提高召回率,并解决训练中由于边界框重叠而产生的歧义。最后,我们提出了我们的 “ 中心度 ” 分支,它有助于抑制低质量检测的边界框,并大大提高了整体性能。

 

3.1. Fully Convolutional One-Stage Object Detector

设 F_{i}\epsilon \mathbb{R}^{H\times W\times C} 为主干 CNN 第 i 层的 feature map,s 为该层前的总步长(total stride)。输入图像的 ground-truth 边界框定义为 \left \{ B_{i} \right \} ,其中 B_{i}= \left ( x_{0}^{\left ( i \right )} , y_{0}^{\left ( i \right )}, x_{1}^{\left ( i \right )}, y_{1}^{\left ( i \right )}, c^\left ( i \right ){}\right )\epsilon \mathbb{R}^{4}\times \left \{ 1, 2 ... C \right \} 。这里的 \left ( x_{0}^{\left ( i \right )}, y_{0}^{\left ( i \right )} \right ) 和 \left ( x_{1}^{\left ( i \right )}, y_{1}^{\left ( i \right )} \right ) 表示边界框的左上角和右下角的坐标。c^{\left ( i \right )} 是边界框中的对象所属的类。C 是类的数量,对于COCO数据集来说是80。

对于特征图 F_{i} 上的每个位置 \left ( x, y \right ),我们可以将其映射回输入图像上靠近位置 \left ( x, y \right ) 的接受域中心的 \left ( \left \lfloor \frac{s}{2} \right \rfloor+xs, \left \lfloor \frac{s}{2} \right \rfloor+ys \right ) 。与基于锚框的检测器不同,基于锚框的检测器将输入图像上的位置作为锚框的中心,并对这些锚框的目标边界框进行回归,我们直接对每个位置的目标边界框进行回归。也就是说,我们的检测器直接将位置看作训练样本,而不是在基于锚框的检测器中将锚框看作训练样本,这与在用于语义分割[16]的 FCNs 中是一样的。

具体来说,如果位置 \left ( x, y \right ) 落在任意一个 ground-truth 边界框中则被认为是正样本,并且这个位置的类标签 c^{\ast } 是 B_{i} 的类标签。否则就是负样本,并且 c^{\ast }=0(背景类)。除了用于分类的标签之外,我们还有一个 4D 实向量 t^{\ast }=\left ( l^{\ast }, t^{\ast }, r^{\ast }, b^{\ast } \right ) 作为每个样本的回归目标。这里的 l^{\ast }t^{\ast }r^{\ast }b^{\ast } 是位置距离边界框四边的距离,如图1(左)所示。如果一个位置落在多个边界框中,它被认为是一个模糊的样本。当前,我们简单地选择面积最小的边界框作为其回归目标。在下一节中,我们将展示使用多级预测,可以显著减少模糊样本的数量。如果位置 \left ( x, y \right ) 与一个边界框 B_{i} 相关联,该位置的训练回归目标可以表示为:

值得注意的是,FCOS 可以利用尽可能多的前景样本来训练回归器。与基于锚框的检测器不同,基于锚框的检测器只考虑与 ground-truth boxes 具有足够高的 IOU 的锚框作为正样本。我们认为这可能是 FCOS 优于基于锚框的同类产品的原因之一。

 

(1)Network Outputs. 

对应于训练目标,我们的网络的最后一层预测分类标签的 80D 向量 p,和边界框坐标的 4D 向量 t=( l, t, r, b )。根据[12],我们不再训练多类分类器,而是训练 C 个二进制分类器。与[12]类似,我们在主干网络的 feature maps 之后添加了 4 个卷积层,分别用于分类和回归分支。此外,由于回归目标总是正样本,我们在回归分支的顶部使用 exp( x ) 将任意实数映射到 ( 0, \infty )。值得注意的是,FCOS 的网络输出变量比流行的基于锚框的每个位置有9个锚框的检测器少 9× [12,20]。

 

(2)Loss Function. 

我们将训练损失函数定义为:

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第2张图片

其中 L_{cls} 为焦距损失,如[12];L_{reg} 为 IOU 损失,如 UnitBox [24]。N_{pos} 表示正样本数量,本文中的 \lambda 和 1 是 L_{reg} 的平衡权重。对特征图 F_{i} 上的所有位置进行求和。\mathbb{I}_{\left \{ c_{i}^{\ast }> 0 \right \}}是显示函数,如果 c_{i}^{\ast }> 0,显示为1,否则显示为0。

 

(3)Inference. 

FCOS 的推论很简单。对于给定的输入图像,通过网络进行前向传递,得到特征图 F_{i} 上每个位置的分类得分 p_{x, y} 和回归预测 t_{x, y}。根据[12],选取 p_{x, y}> 0.05 作为正样本,反向计算公式(1)得到预测的边界框。

 

3.2. Multi-level Prediction with FPN for FCOS

在这里,我们展示了如何用 FPN 的多级预测[11]解决提出的 FCOS 的两个可能的问题。

1) CNN 中最终feature map的大步长 ( 如16× ) 可能导致相对较低的最佳可能召回 ( best possible recall,BPR ) 。对于基于锚框的检测器,由于较大的步长而导致的低召回率,可以通过降低正锚框所需的 IOU 分数来在一定程度上得到补偿。对于 FCOS,乍一看,人们可能认为 BPR 比基于锚框的检测器获得的要低得多,因为不可能召回一个由于步长很大在最终的特征图上没有位置编码的对象。在这里,我们通过实验证明,即使步长很大,基于 FCN 的 FCOS 仍然能够产生良好的 BPR,甚至可以优于官方实现检测器[6]中基于 anchor 的 RetinaNet 检测器[12]的 BPR ( 见表1 )。因此,BPR 实际上不是 FCOS 的问题。此外,利用多级 FPN 预测[11],可以进一步改进 BPR,使其达到基于锚框的 RetinaNet 检测器可获得的最好的 BPR。

2) ground-truth框中的重叠会在训练过程中造成难以处理的歧义,即,w.r.t.,一个位置应该回归到重叠区域内的哪个边界框 ? 这种模糊性导致基于 FCN 的检测器性能下降。结果表明,采用多级预测方法可以有效地解决模糊问题,与基于锚框的检测器相比,基于 FCN 的检测器具有相当甚至更好的性能。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第3张图片

 

根据 FPN [11],我们在不同层次的 feature map 上检测不同大小的对象。具体地说,我们使用了定义为 \left \{ P_{3}, P_{4}, P_{5}, P_{6}, P_{7} \right \} 的五个层次的特征图。P3、P4、P5 由主干 CNNs 的特征图 C3、C4、C5 生成,后面是一个[11]中1×1的卷积层,横向连接,如图2所示。P6 和 P7 分别在 P5 和 P6 上应用一个 stride 为 2 的卷积层生成。因此,特征层次为 P3,P4,P5,P6,P7 的stride分别为 8,16,32,64,128。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第4张图片

与基于锚框的检测器将不同大小的锚框分配到不同的特征级别不同,我们直接限制了边界框回归的范围。更具体地说,我们首先计算每个位置在所有特征层次上的回归目标:l^{\ast }t^{\ast }r^{\ast }b^{\ast }。接下来,如果一个位置满足 max\left ( l^{\ast }, t^{\ast }, r^{\ast }, b^{\ast } \right )>m _{i} 或 max\left ( l^{\ast }, t^{\ast }, r^{\ast }, b^{\ast } \right )< m _{i-1} ,它被设置为是一个负样本,因此不再需要返回一个边界框。这里 m _{i} 是第 i 个特征层次需要回归的最大距离。其中,m2、m3、m4、m5、m6、m7 分别设为 0、64、128、256、512 和 \infty 。由于不同尺寸的物体被分配到不同的特征层,且大部分重叠发生在尺寸相差较大的物体之间,因此多级预测可以在很大程度上缓解上述的模糊性,并将基于 FCN 的检测器提高到与基于锚框的检测器相同的水平,如我们的实验所示。

最后,根据[11,12],我们在不同的特征层之间共享 heads,不仅使检测器的参数效率更高,而且提高了检测性能。但是,我们观察到需要不同的特征层来回归不同的尺寸范围 ( 例如,P3 和 P4 的尺寸范围分别为 [0,64] 和 [64,128] ) 。因此,对于不同的特征层使用相同的 heads 是不合理的。因此,我们没有使用标准的 exp( x ) ,而是使用 exp( s_{i}x ) 和一个可训练标量 s_{i} ,来自动调整特征层级为 P_{i} 时指数函数的底,从经验上提高了检测性能。

 

3.3. Center-ness for FCOS

在 FCOS 中使用多级预测后,与基于锚框的检测器相比,FCOS 的性能仍然存在较大的差距。我们观察到,这是由于许多由位置产生的低质量的预测边界框距离目标中心很远。

我们提出了一个简单而有效的策略来抑制这些检测到的低质量边界框,而不引入任何超参数。具体来说,我们添加了一个单层分支,与分类分支并行,以预测一个位置的 “ 中心 ” ( 即,从该位置到该位置负责的对象的中心的距离 ),如图2所示。给定一个位置的回归目标 l^{\ast }t^{\ast }r^{\ast }b^{\ast },中心目标定义为:

我们用根号来减缓 center-ness 的衰减。center-ness 范围从0到1,因此用二进制交叉熵损失 ( binary cross entropy,BCE ) 训练。损失加到公式(2)的损失函数中。测试时,将预测的中心度(center-ness)与相应的分类分数相乘,计算最终得分 ( 用于对检测到的边界框进行排序 )。因此,中心度可以降低远离对象中心的边界框的权重。最终的非最大抑制 ( NMS ) 过程可以滤除这些低质量的边界框,提高检测性能,具有较高的概率。

基于锚框的检测器使用两个 IOU 阈值 T_{low} 和 T_{high} ,将锚框标记为负样本、忽略和正样本,从锚框的角度可以将中心度看作一个软阈值。它是在网络训练中学习的,不需要调整。此外,利用该策略,我们的检测器仍然可以将任何落在 ground-truth 框中的位置视为正样本,除了上述多层预测中设置为负样本的位置外,这样就可以让回归器使用尽可能多的训练样本。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第5张图片

 


4. Experiments

在大尺度检测基准 COCO [13]上进行了实验。按照惯例[12,11,20],我们使用 COCO 中的 trainval35k 部分 ( 115K图像 ) 用于训练,minival 部分 ( 5K图像 ) 作为我们的消融研究( Ablation Study )的验证集。我们通过将 test_dev 部分 ( 20K图像 ) 检测结果上传到评估服务器,报告了主要结果。

 

(1)Training Details.

除非特别指出,否则我们使用 ResNet-50 [7]作为骨干网络,并使用与 RetinaNet [12]相同的超参数。具体来说,我们训练网络时采用随机梯度下降 ( stochastic gradient descent,SGD ) ,迭代 90K 次,初始学习率为 0.01,小批量(mini-batch)16幅图像。在迭代 60K 和 80K 时,学习率分别降低了10倍。权重衰减和动量分别设置为 0.0001 和 0.9。我们用在 ImageNet [3]上预先训练的权值初始化我们的骨干网络。对于新添加的层,我们像[12]一样将它们初始化。除非指定,否则将把输入图像的大小调整为短边为800,长边小于或等于1333。

 

(2)Inference Details.

我们首先通过网络将输入图像前向传递,得到带有预测类的预测边界框。下面的后处理与 RetinaNet [12]完全相同,我们直接使用相同的后处理超参数 ( 如NMS阈值 )。我们认为,如果对超参数进行优化,可以进一步提高我们的检测器的性能。我们使用与训练时的输入图像相同大小的尺寸。

 

4.1. Ablation Study

 

4.1.1 Multi-level Prediction with FPN

如前所述,基于 FCN 的检测器的主要问题是 低召回率 和 由于ground-truth边界框重叠而导致的模糊样本。在本节中,我们证明了这两个问题都可以通过多级预测得到很大程度上的解决。

 

(1)Best Possible Recalls.

基于 FCN 检测器的第一个问题是,它可能不能提供良好的最佳可能召回率 ( best possible recall,BPR )。在本节中,我们表示这个问题是不必要的。在这里,BPR 被定义为检测器最多能召回的 ground-truth boxes 数量与所有 ground-truth boxes 数量之比。如果在训练中一个 ground-truth 框能分配给至少一个样本,则认为该框被召回(即,FCOS中的位置(location)或基于锚框的检测器中的锚框(anchor box))。如 表1 所示,在只有特征层级为 P4(feature level P4),stride为 16 ( 即,没有 FPN ) 的情况下, FCOS 已经可以获得 95.55% 的 BPR。其 BPR 远远高于官方实现的检测器中基于锚框的检测器 RetinaNet 的 90.92% 的 BPR,其中仅使用 IOU ≥0.4 的低质量匹配。在 FPN 的帮助下,FCOS 可以实现 98.40% 的 BPR,非常接近基于锚框的检测器通过使用所有低质量匹配所能达到的最佳 BPR。由于事实上这些探测器的 precision-recall 曲线 ( 如补充材料所示 ) 中的最佳召回率(best recall)远低于90%,FCOS 与基于锚框的检测器之间的小 BPR 间隙实际上并不会影响检测器的性能。表4 也证实了这一点,其中 FCOS 实现的 AR 甚至比基于锚框的同类产品更好。因此,关于低 BPR 的问题可能没有必要。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第6张图片

 

(2)Ambiguous Samples.

基于 FCN 的检测器的另一个问题是,由于 ground-truth 边界框的重叠,可能会产生大量的模糊样本,如图1(右)所示。在 表2 中,我们展示了在 minival split 中模糊样本与所有正样本的比值。如表所示,如果不使用 FPN,只使用 feature level P4,确实存在大量的模糊样本 ( 23.16% )。但是,如果我们使用所有的特征级别,这个比例可以显著降低到 7.14%,因为大多数重叠的对象被分配到不同的特征级别。此外,我们认为,由于相同类别的对象之间的重叠而产生的模糊样本在推断时并不重要,因为无论样本回归到哪个对象的 w.r.t,这些样本预测的边界框总是可以与正确的类别匹配。因此,我们只计算不同类别边界框重叠时的模糊样本。如 表2 所示,多级预测将模糊样本的比例从 17.84% 降低到 3.75%。为了进一步证明在基于 FCN 的 FCOS 中,ground truth box 中的重叠不是一个问题,我们计算了在推断时有多少检测到的边界框来自于模糊位置。我们发现只有2.3%的检测到的边界框是由模糊的位置产生的。进一步考虑到不同类别之间的重叠,比例降低到1.5%。在后续的实验中表明,极低的重叠比并不会使我们的 FCOS 比基于锚框的检测器差。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第7张图片

 

(3)Detection Performance.

到目前为止,我们已经证明了 FCOS 的 BPR 就足够了,多层级预测不仅可以提高 BPR,而且可以显著降低训练过程中 w.r.t 的模糊度,即回归到哪个边界框。如 表3 所示,在多级预测的帮助下,基于 FCN 的 FCOS 已经可以实现与基于锚框的 RetinaNet 相同等级的多级预测性能 ( 33.8% vs. 35.7%)。与只有一个 feature level P4 的相比,AP 几乎增加了一倍。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第8张图片

 

4.1.2 With or Without Center-ness

我们已经证明,基于 FCN 的 FCOS 能够达到与基于锚框的检测器 RetinaNet 相当的性能。然而,在 AP 中仍然存在约 2% 的性能差距。我们认为,这一差距可能是由于有一些检测到的低质量的边界框,是由远离一个对象中心的位置(locations)产生的。很容易得出,越靠近中心的位置越有可能产生更准确的预测。因此,对远距离的位置产生的检测应赋以较低的置信度。为此,我们利用中心度分支(a center-ness branch)来抑制检测到的低质量边界框。如 表5 所示,center-ness 分支可以将 AP 从 33.8% 提升到 36.6%,性能优于基于锚的检测器 ( 35.7% )。可以注意到,中心度(center-ness)也可以用预测回归向量计算,而不需要引入额外的中心度分支。但是,如 表5 所示,回归向量计算的中心度并不能提高性能,因此需要单独学习中心度

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第9张图片

为了进一步证明 center-ness 的有效性,我们又进行了一个实验。我们假设有一个数据库,它在推理过程中提供了基本事实中心度评分(ground-truth center-ness score)。在保持所有其他设置完全相同的情况下,推理用的 ground-truth center-ness 显著地将 AP 提高到 42.1,这意味着我们目前如 表5 所示的 36.6 的 AP 准确率还有很大的提升空间,只要我们提高 center-ness 的预测精度。

因此,我们使 center-ness 分支更深入,具有与分类和回归分支相同的体系结构,从而将 AP 从 36.6 提高到 36.8。

理论上,我们甚至可以训练一个单独的深度网络,它与主检测器不共享任何权重,其唯一目的是预测 center-ness 得分。这只是有可能,因为事实上 center-ness 评分仅用于推理。因此,我们能够将 center-ness 预测器的训练与检测器的训练解耦。这种解耦使我们能够以额外的计算复杂度为代价来设计最好的 center-ness 预测器。我们还假设,如果需要 NMS 进行后处理,那么所有其他检测器都可以从这种精确的 center-ness 评分预测器中获益。我们把这个话题留给以后的工作。

 

4.1.3 FCOS vs. Anchor-based Detectors

上述 FCOS 与标准 RetinaNet 有两个小的不同。1) 除了最后的预测层,我们在新增加的卷积层中使用了组归一化 ( Group Normalization,GN ) [23],这使得我们的训练更加稳定。2) 我们使用 P5 产生了 P6 和 P7,而不是 RetinaNet 中的 C5。我们发现使用P5可以稍微提高性能。

为了证明我们的 FCOS 可以作为基于锚的检测器的一种简单而强大的替代品,为了公平的比较,我们在 RetinaNet 中加入了 GN,在我们的检测器中也使用了 C5。如 表4 所示,在完全相同的设置下,我们的 FCOS 仍然优于基于锚的检测器。由于与基于锚的检测器相比,我们的基于 FCN 的检测器有很多优点 ( 如 表4 所示,设计复杂度要低得多,并且只使用了一半内存占用进行训练 ),我们鼓励社区重新考虑在目标检测中使用锚框的必要性。此外,值得注意的是,我们直接使用了对基于锚的检测器进行了优化的 RetinaNet 的所有超参数 ( 如学习率、NMS 阈值等 )。我们认为,如果对超参数进行调优,FCOS 的性能还可以进一步提高。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第10张图片

人们可能仍然担心边界框中的重叠会导致性能下降。为了进一步证明重叠不是 FCOS 的问题,我们构造了 minival 的一个子集,命名为 minival_overlapped。它由 3986 幅图像组成,每幅图像至少包含一个重叠边界框。子集总共包含 35,058 个边界框,其中 30,625 个边界框 ( 高达 87% ) 与其他边界框重叠。在子集上,我们的 FCOS 仍然比基于锚的 RetinaNet 性能更好,这表明 FCOS 可以很好地处理重叠的边界框。

 

4.2. Comparison with State-of-the-art Detectors

在消融研究(ablation study)中,为了与基于锚的检测器进行公平的比较,并证明我们的框架可以作为基于锚的检测器的一个强大而简单的替代方案,我们直接利用了 RetinaNet 的所有超参数。我们认为,如果为我们的检测器调整超参数,性能可以大大提高。对于 test-dev split 的主要结果,我们在训练过程中使用了与 RetinaNet 类似的缩放抖动(scale jitter),并将迭代次数增加了一倍。其他设置与消融研究完全相同。如 表7 所示,以 ResNet-101-FPN 和 ResNet-32x8d-101-FPN 为主干,我们的 FCOS 在 AP 中分别比相同主干的 RetinaNet 表现出 1.9% 和 1.3% 的优势。据我们所知,这是第一次没有任何附加条件的无锚探测器比基于锚的探测器性能好很多。FCOS 的性能也大大超过了其他经典的基于锚的两级检测器,比如 Faster RCNN

与目前最先进的 CornerNet [10]检测器相比,我们的 FCOS 在 AP 方面也有 0.5% 的增益。也许增益相对较小,但是我们的检测器对比 CornerNet 具有以下优点:1) 我们使用更快更简单的骨干 ResNet-101 而不是 CornerNet 中的 Hourglass-104 来实现性能。2) 除了检测任务中标准的后处理 NMS 外,我们的检测器不需要任何其他后处理。而 CornerNet 则需要用嵌入向量将角对进行分组,这就需要对检测器进行特殊的设计。3) 与 CornerNet 相比,我们认为我们的 FCOS 更有可能作为目前主流基于锚的检测器的一个强大而简单的替代品

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第11张图片

 


5. Extensions on Region Proposal Networks

到目前为止,我们已经证明,在单极检测器中,我们的 FCOS 可以比基于锚的同类产品实现更好的性能。直观上,FCOS 也应该能够在两级检测器 Faster RCNN 中用 FPN [11]替换区域建议网络 (  Region Proposal Networks,RPNs ) 中的锚框。在本节中,我们通过实验证实了这一点。

与有 FPN [11]的 RPNs 相比,我们用 FCOS 中的方法替换了锚框。此外,我们在 FPN 头(heads)的层中加入GN,使我们的训练更加稳定。所有其他设置与官方代码[6]中具有 FPN 的 RPNs 完全相同。如 表8 所示,即使没有提出中心度分支,我们的 FCOS 已经显著提高了。通过提出的中心度分支,FCO S进一步将分别提高到 52.8% 和 60.3%,相对于官方的具有 FPN 的 RPNs , 相对提高了 21%,相对提高了 3%。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第12张图片

 


6. Conclusion

我们提出了一种无锚框(anchor-free)和无建议(proposal-free)的单级检测器 FCOS。实验结果表明,FCOS 与目前流行的基于锚框的单级检测器 ( 包括 RetinaNet、YOLO 和 SSD ) 相比,性能较好,但设计复杂度要低得多。FCOS 完全避免了所有与锚框相关的计算和超参数,以逐像素预测的方式解决了目标检测问题,类似于语义分割等其他密集预测任务。FCOS 还在单级检测器中实现了最先进的性能。我们也证明了 FCOS 可以作为 RPNs 应用于两级检测器 Faster RCNN 中,并在很大程度上优于其原先的 RPNs。鉴于其有效性和高效性,我们希望 FCOS 能够作为目前主流基于锚的检测器的一个强大而简单的替代品。我们也相信FCOS可以扩展到解决许多其他实例级的识别任务。

 


Appendix


 

7. Class-agnostic Precision-recall Curves

在 图4、图5 和 图6 中,我们分别给出了 IOU 阈值为 0.50、0.75 和 0.90 时,split minival 上的 class-agnostic precision-recall 曲线。表9 为三条曲线对应的 APs。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第13张图片论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第14张图片

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第15张图片论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第16张图片

如 表9 所示,我们的 FCOS 比基于 anchor 的同类 RetinaNet 实现了更好的性能。此外,值得注意的是,有了更严格的 IOU 阈值,FCOS 相对于 RetinaNet 有较大的改进,这表明 FCOS具有更好的边界框回归器,可以更准确地检测对象。其中一个原因应该是 FCOS 有能力利用更多的前景样本来训练回归器,正如我们在本文中提到的。

最后,从所有的 precision-recall 曲线中可以看出,这些检测器在 precision-recall 曲线中的最佳召回率(best recalls)远低于 90%。这进一步表明,介于 FCOS 和 RetinaNet 之间的最佳可能召回率 ( best possible recall,BPR ) 的小差距 ( 98.40% vs. 99.23% ) 几乎不影响最终的检测性能

 


8. Visualization for Center-ness

正如我们在论文中提到的,通过抑制低质量的检测边界框,提出的中心度分支大大提高了检测性能。在本节中,我们确认这一点。我们期望中心度能够降低低质量边界框的权重,从而在后续的非最大抑制 ( NMS ) 等后处理中过滤掉这些边界框。如果检测到的边界框具有较低的 IOU 分数,则将其与相应的 ground-truth 边界框视为低质量的边界框。一个 IOU 较低但置信度得分较高的边界框很可能成为假阳性(虚假正样本),从而影响精度。

在 图7 中,我们将检测到的边界框视为一个二维点 (x,y), x 为其得分,y 为 IOU 及其对应的 ground-truth 框。如 图7 所示
(左),在应用中心度之前,有大量的低质量的边界框,但有较高的置信度得分 ( 即,直线 y = x 下方的点 )。这些低质量的边界框由于得分高,在后期处理中无法消除,导致检测精度下降。将分类得分与中心度得分相乘后(即,他们的分数降低了),这些点会被推到图的左侧,如 图7(右) 所示。因此,这些低质量的边界框更有可能在后处理中被过滤掉,最终的检测性能可以得到提高。

论文笔记(FCOS)-2019-FCOS:Fully Convolutional One-Stage Object Detection_第17张图片

 


9. Qualitative Results

定性结果如 图8 所示。如图所示,我们提出的 FCOS 可以检测范围很广的对象,包括拥挤、堵塞、高度重叠、极小和非常大的对象

你可能感兴趣的:(论文笔记)