论文翻译 | FCOSv2:《FCOS: A Simple and Strong Anchor-free Object Detector》

FCOS: A Simple and Strong Anchor-free Object Detector

摘要:目标检测是计算机视觉中最重要的任务之一,它为一些实例级的识别任务和许多下游的应用打下了基础。近年来,单阶段目标检测方法由于设计简单、性能优越,比双阶段目标检测方法受到更广泛的关注。在此,我们提出了一个全卷积的单阶段目标检测器(FCOS),以逐像素预测的方式解决目标检测问题,类似于语义分割这样的密集预测问题。几乎所有的state-of-the-art目标检测器,如RetinaNet、SSD、YOLOv3和Faster R-CNN,都依赖于预定义的锚点框。相比之下,我们提出的检测器FCOS是anchor box free的,同时也没有proposal。通过消除锚点框的预定义集,FCOS完全避免了与锚点框相关的复杂计算,如在训练过程中计算IoU分数。更重要的是,我们还避免了所有与锚点框相关的超参数,这通常对最终的检测性能很敏感。只通过后处理非极大抑制(NMS),我们演示了一个更简单和灵活的检测框架,并实现了提高检测精度的目的。我们希望所提出的FCOS框架可以作为许多其他实例级任务的一个简单而强大的替代方案。

索引:目标检测、全卷积的单阶段目标检测、锚点框、深度学习。

1.引言

​ 目标检测需要一个算法来预测图像中感兴趣的每个实例的边界框位置和类别标签。在深度学习之前,滑动窗口方法是主要的方法[1]、[2]、[3],它对每个可能的位置进行了详尽的分类,因此需要特征提取和分类评估非常快。随着深度学习的到来,Faster R-CNN[4]发明之后,目标检测已经在很大程度上转向使用全卷积网络(FCNs)。所有当前主流的检测器(例如:Faster R-CNN [4], SSD [5] and YOLOv2,v3 [6])都依赖于一套预定义的锚点框,长期以来,人们一直认为锚点框的使用是现代检测器成功的关键。.尽管它们取得了巨大的成功,但值得注意的是,基于锚点的检测器存在一些缺点:

  • 如Faster R-CNN和RetinaNet[7]所示,检测性能对锚点框的尺寸、长宽比和数量都很敏感。例如,在RetinaNet中,改变这些超参数会影响COCO基准[8]在AP中高达4%的性能。因此,这些超参数需要在基于锚点的检测器中进行微调。
  • **即使可以针对数据集对锚点框做精心设计,但由于锚点框的尺度和长宽比保持固定,检测器在处理形状变化较大的候选目标时也会遇到困难,特别是对于小目标。**预定义的锚点框也阻碍了检测器的泛化能力,因为它们需要在具有不同目标大小或长宽比的新检测任务上重新设计。
  • 为了获得高召回率,基于锚点的检测器需要在输入图像上密集地放置锚点框(例如,对于较短边为800的图像,特征金字塔网络(FPN)[9]中超过180K个锚点框)。大多数这些锚点框在训练过程中被标记为负样本。负样本数量的增加加剧了训练中正负样本之间的不平衡。
  • 锚点框还涉及复杂的计算,例如使用ground-truth边界框计算IoU分数。

​ 最近,以逐像素预测的方式FCNs[10]在密集预测任务中取得了巨大的成功,例如语义分割 [10], [11], [12], 深度估计[13],[14], 关键点检测 [15] 和计算。作为其中一种高层的视觉任务,目标检测因为用到了锚点,可能是唯一一个没有用到全卷积的像素级的预测框架。

​ 我们自然会问一个问题:我们能通过简单的像素级预测来做目标检测,例如类似于语义分割的FCN?因此,这些基本的视觉任务可以统一在(几乎)一个单一的框架中。我们在这项工作中表明,答案是肯定的。此外,我们还证明了,更简单的基于FCN的检测器可以获得比基于锚点的检测器更好的性能。

​ 在文献中,有些工作试图利用逐像素预测FCNs进行目标检测,如DenseBox[16]。具体来说,这些基于FCN的框架直接预测了在特征图某个级别上的每个空间位置上的一个4D向量加上一个类别。如图1(左)所示,4D向量描述了从一个边界框的四个边到该位置的相对偏移量。这些框架类似于语义分割的FCNs(除了每个位置都需要回归一个4D连续向量)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0hgVqr9K-1648611669139)(images/image-20220108192652474.png)]

图1:FCOS的总体概念。如左图所示,FCOS的工作原理是预测一个4D向量(l、t、r、b),编码每个前景像素上的边界框的位置(在训练期间由ground-truth边界框信息监督)。右边的图显示,当一个位置驻留在多个边界框中时,这个位置应该回归的边界框可能是模糊的。

​ 然而,为了处理不同大小的边界框,DenseBox[16]裁剪并调整训练图像到一个固定的比例。因此,DenseBox必须对图像金字塔进行检测,这与FCN提出的一次计算所有卷积的思想相反。

​ 此外,更重要的是,这些方法主要用于特定领域的目标检测,如场景文本检测[17]、[18]或人脸检测[16]、[19],有人认为这些方法应用于高度重叠边界框的通用的目标检测时效果不理想。如图1(右)高度重叠的边界框导致了一个棘手的模糊问题:不清楚对于重叠区域中的像素,应该回归哪个边界框。

​ 在续篇中,我们将仔细观察这个问题,并表明通过FPN,这种模糊性可以在很大程度上被消除。因此,我们的方法已经可以获得与传统的基于锚点的检测器相似甚至更好的检测精度。此外,我们观察到,我们的方法可能会在远离目标对象中心的位置产生许多低质量的预测边界框。很容易看出,其目标边界框中心附近的位置可以做出更可靠的预测。因此,我们引入了一个新的“center-ness”分数来描述一个位置到中心的偏差,如等式(3)中的定义,用于降低低质量检测边界框,从而有助于抑制NMS中这些低质量的检测。中心度center-ness分数由一个分支(只有一层)与边界框回归分支并行进行预测,如图2所示。 简单而有效的中心度center-ness分支显著提高了检测性能,而计算时间的增加可以忽略不计。
在这里插入图片描述
在这里插入图片描述

图2:FCOS的网络结构,其中C3、C4、C5表示主干网络的特征图,而P3到P7是用于最终预测的特征级别。H×W是特征图的高度和宽度。‘/s’(s=8,16,…,128)是某级别的特征映射与输入图像的降采样比。例如,所有的数字都用800×1024输入计算。

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

  • 目标检测现在与许多其他FCN可解决的任务相统一,如语义分割,这使得它更容易重用这些任务中的想法。以[20]为例,开发了一种用于密集预测任务的结构化知识蒸馏方法。由于FCOS的标准FCN框架,所开发的技术可以立即应用于基于FCOS的目标检测。
  • 检测变得无proposal和无锚点,这大大减少了设计参数的数量。设计参数通常需要启发式的调优,并涉及到许多技巧,以获得良好的性能。因此,我们新的检测框架使得检测器,特别是它的训练,变得相当简单。
  • 通过消除锚点框,我们的新检测器完全避免了与锚点框相关的复杂计算,如在训练过程中,锚点框与ground-truth框之间的IOU计算和匹配,从而比基于锚点的相应部分的训练和测试更快。
  • 没有一点花哨,我们在单阶段检测器中取得了state-of-the-art的结果。鉴于其更简单的无锚点检测器的准确性有所提高,我们鼓励学界重新考虑锚点框在目标检测中的必要性(而锚点框目前被认为是设计检测方法的实际标准。)
  • 由于大大降低了设计的复杂性,我们提出的检测器优于以前的强基线检测器,如Faster R-CNN[4]、RetinaNet[7]、YOLOv3[6]和SSD[5]。更重要的是,由于其简单的设计,FCOS可以很容易地扩展到解决其他实例级的识别任务(以最小的修改),实例分割[21]、[22]、[23]、[24]、关键点检测[25]、文本定位[26]和跟踪[27]、[28]已经证明了这一点。我们希望看到更多建立在FCOS基础上的实例识别方法。

1.1相关工作

在这里,我们回顾了一些最接近我们的工作。

基于锚点的检测器。基于锚点的检测器继承了传统的滑动窗口和基于proposal的检测器,如Fast R-CNN[29]。在基于锚点的检测器中,锚点框可以被视为预定义的滑动窗口或proposal,它们被分为正例patches或负例patches,通过一个额外的偏移回归来细化边界框位置的预测。因此,这些检测器中的锚点框可以看作是训练样本。与之前的检测器不同,如Fast RCNN(重复计算每个滑动窗口/proposal的图像特征),锚点框利用cnn的特征图,避免重复的特征计算,大大加快了检测过程。锚点框的设计在Faster R-CNN中的RPN[4]、SSD[5]和YOLOv2[30]中得到推广,已成为现代检测器的惯例。

​ 然而,如上所述,锚点框会导致过多的超参数,通常需要仔细调整这些参数以获得良好的性能。除了上述描述锚点形状的超参数外,基于锚点的检测器还需要其他超参数将每个锚框标记为一个正例、被忽略的样本或负例。在以前的工作中,他们经常使用锚点框和ground-truth框之间的IOU来确定锚点框的标签(例如,如果一个正例锚点的IOU在[0.5,1]之间)。这些超参数对最终的精度有很大的影响,并且需要启发式的调优。同时,这些超参数是特定于检测任务的,使得检测任务偏离了用于其他密集预测任务的全卷积网络架构

无锚点的检测器。最流行的无锚点检测器可能就是YOLOv1[31]了。YOLOv1不使用锚点框,而是在靠近目标中心的一些点上去预测边界框。只使用在中心附近的点,因为它们被认为能够产生高质量的检测。然而,由于只使用中心附近的点来预测边界框,因此如YOLOv2[30]中提到的,YOLOv1的召回率(也叫查全率)很低。因此,YOLOv2[30]也使用了锚点框。与YOLOv1相比,FCOS可以利用ground truth边界框中的所有点来预测边界框,而检测到的低质量的边界框可以被所提出的“center-ness中心度”分支所抑制。因此,如我们的实验所示,FCOS能够提供与基于锚点的检测器类似的召回率。

​ CornerNet[32]是最近提出的一种单阶段的无锚点检测器,它可以检测边界框的一对角,并将它们分组形成最终检测到的边界框。CornetNet需要更复杂的后处理来对属于同一实例的角对(the pairs of corners)进行分组。为了进行分组,需要学习了一个额外的距离度量方法。

另一种无锚点检测器,如[19],是基于DenseBox[16]的。由于难以处理重叠的边界框和相对较低的召回率,这一系列检测器被认为不适合通用的目标检测。在这项工作中,我们展示了通过多层次的预测(即FPNs),可以在很大程度上缓解这两个问题。此外,我们还表明,加上我们提出的center-ness中心度分支,更简单的检测器可以获得比基于锚的同类检测器更好的检测性能。最近,FSAF[33]被提出使用一个无锚点的检测分支作为一个基于锚点的检测分支的补充,因为他们认为一个完全无锚点的检测器不能实现良好的性能。他们还利用一个特征选择模块来提高无锚点分支的性能,使无锚点检测器具有与基于锚点的对应检测器相当的性能。然而,在这项工作中,我们令人惊讶地表明,完全无锚点的检测器实际上可以获得比基于锚点的检测器更好的性能,而不需要在FSAF中使用特征选择模块。更令人惊讶的是,完全无锚点的检测器在FSAF中优于无锚点和基于锚点的检测器的组合。因此,长期存在的锚点框可以被完全消除,这会使检测更加简单。

​ 还有一些并发的无锚点检测器。例如,CenterNet[34]用hourglass网络预测物体的中心点、宽度和高度,显示出良好的性能。如表9所示,与CenterNet相比,FCOS的网络享有更快的训练速度,并在准确性/速度之间有更好的权衡。RepPoints[35]用一组点表示框,并使用转换函数来获取目标框。相比之下,FCOS是一种简洁而非常直接的框检测方法。
在这里插入图片描述

表9:实时的FCOS(FCOS-RT)模型。AP is on COCO val split。"shtw.”:共享塔(即,4×conv。正如图2展示的分类和回归分支之间的层。推理inference时间是用一个1080Ti或Titan XP的GPU来测量的(这两个GPU的速度很接近)。所有FCOS模型的FPS都是在1080Ti的GPU上测量的。我们使用[6]发布的代码测量了在1080Ti上YOLOv3的FPS。对于FCOS和YOLOv3,我们在这里测量端到端推理inference时间(即,从预处理到最终的输出框的时间)

​ 在这项工作提交后,一些新的无锚点检测器出现了。例如,CPN[36]用自底向上的无锚点网络取代了双阶段检测器中的区域建议网络(RPNs),从而取得了改进的结果。HoughNet[37]采用了一种投票机制来提高无锚点自底向上检测的性能。这些检测器需要分组或投票后处理,因此比FCOS要复杂得多、更慢。还有许多建立在FCOS之上的后续工作[38],[39],[40],[41]。这些工作增强了FCOS的检测特性、损失函数或分配策略,进一步提高了无锚点检测器的性能。

2.我们的方法

​ 在本节中,我们首先以逐像素预测的方式重新制定目标检测。接下来,我们展示了如何利用多层次预测来提高召回率和解决由重叠边界框导致的模糊性。最后,我们提出了我们提出的“中心度center-ness”分支(它有助于抑制低质量的检测边界框,并大幅度提高整体性能)

2.1全卷积的单阶段目标检测器

​ 设Fi∈RH×W×C为CNN主干网络第i层的特征图,s为到该层的总步长。输入图像的ground-truth边界框被定义为{Bi},其中Bi=(x0(i)、y0(i)、x1(i)、y1(i)、c(i))∈R4×{1,2…C}。这里(x0(i),y0(i))和(x1(i),y1(i))表示边界框的左上角和右下角的坐标。c(i)是边界框中的对象所属的类。C是类的数量,对于MS-COCO数据集,C是80个。

​ 对于特征图Fi上的每个位置(x,y),我们可以将其映射回输入图像为
,该位置接近位置(x,y)的感受野的中心。与基于锚点的检测器(将输入图像上的位置作为(多个)锚点框的中心,并以这些锚点框作为参考,回归目标边界框)这种方式不同,我们直接在该位置回归目标边界框。换句话说,我们的检测器直接将位置视为训练样本,而不是基于锚点的检测器中的锚点框,这与语义分割[10]中的FCNs相同。

​ 具体来说,由 [42] 可知,如果位置(x,y)落入任何ground-truth框的中心区域,则认为它是一个正样本。框的中心区域以(cx,cy)为中心,则会定义子框为,其中s是到当前特征图的总步长,
(COCO上的超参数)为1.5。子框需要被剪切,使其不会超出原始框。请注意,这与我们最初的会议版本[43]不同,在原始版本中,只要这些位置在一个ground-truth框中,我们认为它们是正例。该位置的类标签c是ground-truth框的类标签。否则,它是一个负例并且c=0(背景类)。除了用于分类的标签外,我们还有一个四维实向量
作为该位置的回归目标。如
图1(左)
所示,这里的l、t、r和b为从该位置到GT边界框四面的距离。**如果一个位置位于多个边界框的中心区域,则认为它是一个不明确的样本。**我们只是简单地选择面积最小的边界框作为其回归目标。在下一节中,我们将展示,通过多层次预测,可以显著减少模糊样本的数量,因此它们几乎不会影响检测性能。在形式上,如果位置(x,y)与一个边界框Bi相关联,则该位置的训练回归目标可以表述为,
在这里插入图片描述

​ 其中s是到特征映射Fi的总步长,用于缩小回归目标,防止梯度在训练过程中发生爆炸。结合这些设计,FCOS可以以一种无锚点的方式检测物体,而一切都是由网络学习的,而不需要任何预定义的锚点框。值得注意的是,这与每个位置有一个锚点框的基于锚点的检测器并不相同,关键的区别是我们定义正样本和负样本的方式。单锚点检测器仍然使用预定义的锚点框作为先验,并使用锚点框和ground-truth框之间的IoU来确定这些锚点框的标签。在FCOS中,我们消除了对先验的需要,并通过是否包含在GT框中来标记位置。在实验中,我们将证明使用单个锚点只能获得较差的性能。

网络输出。与训练目标相对应,我们的网络的最后一层预测了一个80D的分类向量p和一个4D向量t=(l,t,r,b)编码的边界框坐标。在[7]之后,我们不是训练一个多类分类器,而是训练C个二分类器。与[7]类似,我们在FPNs生成的特征图后,分别添加两个分支用于分类和回归任务,分别包含四个卷积层(不包括最终的预测层)。此外,由于回归目标总是正例,我们使用ReLU(x)将所以实数映射到回归分支顶部(0,∞)。值得注意的是,FCOS比流行的基于锚点的检测器(每个位置有9个锚点框)[4]和[7]少9倍的网络输出变量,这在FCOS应用于关键点检测[25]或实例分割[44]时是非常重要的。

损失函数。我们将我们的训练损失函数定义如下:
在这里插入图片描述

其中Lcls是focal loss(如[7]),Lreg是GIoU loss[45]。实验表明,在UnitBox[19]中,使用的GIoU损失性能比IoU损失(这是在我们的初步版本[43]中使用的)性能更好。Npos为正例样本数,本文λ为1(目的是平衡Lreg的权重)。这个总和是在特征图Fi上的所有位置上计算的。在这里插入图片描述
是指示器函数(如果ci*>0,则为1,否则为0)。

推理。FCOS的推理很简单。给定一个输入图像,我们将其转发到网络中,得到特征图Fi上每个位置的分类分数px,y和回归预测tx,y。在[7]之后,我们选择px,y>0.05的位置作为正例样本,反转等式(1)来获得预测的边界框。

2.2带有FPN多层次预测的FCOS

在这里,我们展示了如何通过FPN[9]的多层次预测来解决所提出的FCOS的两个可能的问题。

​ 首先,CNN中最终特征图的大步长(例如,16×)可以导致相对较低的最佳可能召回率(BPR)1(1. Upper bound of the recall rate that a detector can achieve.)。对于基于锚点框的检测器,可以通过降低对正锚点框的IOU评分要求,在一定程度上补偿由于大步长而导致的低召回率。对于FCOS来说,乍一看,人们可能会认为BPR可能比基于锚点的检测器要低得多,因为它不可能召回一个在最终特征图上没有位置编码的目标。在这里,我们的经验表明,即使有很大的步长,FCOS仍然能够产生良好的BPR,它甚至可以比官方实现的Detectron[46]中基于锚点的检测器RetinaNet[7]的BPR更好(见表1)。因此,BPR实际上并不是FCOS的问题。此外,通过多层次FPN预测[9],可以进一步改进BPR,以匹配基于锚点的RetinaNet所能达到的最佳BPR。
在这里插入图片描述

表1:在COCO val2017 split上,在各种匹配规则下的基于锚点的RetinaNet的BPR和FCOS的BPR的对比。FCOS与最好的基于锚点的RetinaNet的BPR非常相近,比Detectron[46]的官方实现有更高的召回率高得多(后者只考虑与IOU≥0.4的低质量匹配的情况)。

​ 第二,如图1(右) 所示,GT框中的重叠部分会导致难以处理的模糊性,即重叠部分中的位置应该回归哪个边界框?这种模糊性会导致性能下降。在这项工作中,我们证明了通过多层次预测(和中心采样)可以极大地解决模糊性,并且与基于锚点的预测相比,FCOS可以获得相同的,有时甚至更好的性能。

​ 具体来说,在FPN[9]之后,我们在不同的特征图层级上检测不同大小的目标。我们使用了定义为{P3,P4,P5,P6,P7}的五个层次的特征图。如图2所示,P3、P4和P5是由主干CNNs的特征图C3、C4和C5产生的,其自上而下的连接如[9]所述。P6和P7是由在P5和P6上分别应用一个步长为2的3×3的卷积层所产生的。请注意,这与原始的RetinaNet不同,后者从主干特征图C5中获得P6和P7。我们发现这两种方案都具有相似的性能,但我们使用的这一种方案的参数更少。而特征级别P3,P4,P5,P6和P7的步长分别为8、16、32、64和128

​ 基于锚点的检测器将不大小的锚点框分配给不同的特征级别。由于锚点框和GT框是根据它们的IoU分数关联起来的,这使得不同的FPN特征级别能够处理不同比例大小的目标。但是,这将每个FPN级别的锚点框的大小和目标对象大小结合起来,这是有问题的。锚点框的大小应该是特定于某种数据的,但这可能会从一个数据集更改为另一个数据集。每个FPN级别的目标对象大小应该取决于FPN级别的感受野,而这则取决于网络架构。因为我们只需要关注每个FPN级别的目标对象大小,而不需要设计锚点框大小,所以FCOS删除了这种耦合。与基于锚点的检测器不同,在FCOS中,我们直接限制了每个层次的边界框回归的范围。更具体地说,我们首先计算所有特征层次上每个位置的回归目标l、t、r和b。接下来,如果特征级别i的某个位置满足max(l,t,r,b)≤mi−1或max(l,t,r,b)≥mi,它被设置为一个负样本,因此不再需要回归一个边界框。这里的mi是特性层次i需要回归的最大距离。本工作将m2、m3、m4、m5、m6和m7分别设置为0、64、128、256、512和∞。我们认为,限定最大距离是确定每个特征级别的目标对象范围的更好方法,因为这确保了完整的对象总是在每个特征级别的感受野内。此外,由于不同大小的对象被分配到不同的特征级别,重叠大多发生在相当不同大小的对象之间,可以很大程度上大大缓解上述模糊性。如果一个位置,即使使用了多层次的预测,仍然被分配给多个GT框,我们就简单地选择具有最小面积的GT框作为其目标。如实验所示,通过多级预测,无锚点检测器和基锚检测器都能达到相同的水平性能。

​ 最后,在[7],[9]之后,我们在不同的特征级别之间共享头部,不仅使检测器参数高效,而且提高了检测性能。然而,我们观察到不同的特征级别需要回归不同的大小范围(例如,P3的大小范围为[0,64],P4为[64,128]),因此对不同的特征级别使用相同的头部可能不是最佳设计。在我们的初步版本[43]中,这个问题是通过将一个可学习的scalar乘以卷积层的输出来解决的在这个版本中,由于回归目标是根据FPN特征级别的步长而缩小的,如等式(1)所示,scalars就变得不那么重要了。但是,我们仍然保持它们以保持兼容性。

2.3FCOS的中心度

​ 在使用了多级预测之后,FCOS已经可以获得比基于锚点的RetinaNet相应部分更好的性能。此外,我们还观察到有一些由远离目标中心的位置所产生的低质量的检测。

​ 我们提出了一个简单而有效的策略来抑制这些低质量的检测。具体来说,我们添加了一个单层分支,与回归分支并行(如图2所示)来预测一个位置2(2.这与我们的会议版本在分类分支上定位中心度不同,但已经表明,将其定位在回归分支上可以获得更好的性能。)的“中心度center-ness”。中心度center-ness描述了从该位置负责的位置到目标中心的归一化距离,如图4所示。鉴于一个位置的回归目标l、t、r和b,中心度center-ness目标定义为:
在这里插入图片描述
在这里插入图片描述

图4:中心度。红色、蓝色和其他颜色分别表示1、0和它们之间的值。中心度是使用等式(3)计算的,并且当位置偏离目标中心时从1到0衰减。在测试过程中,网络预测的中心度与NMS的分类分数相乘,从而能够降低远离目标中心位置预测的低质量边界框。

我们在这里使用sqrt来减缓中心度的衰减。中心度的范围从0到1,因此用二分类交叉熵(BCE)损失进行训练。该损失被添加到损失函数(2)中。测试时,最终得分sx,y(用于对NMS中对检测进行排序)是预测的中心度ox,y与相应的分类得分px,y乘积的平方根。形式如下,
在这里插入图片描述

其中,sqrt用于校准最终分数的数量级,并且对平均精度(AP)没有影响。

​ 因此,中心度可以降低远离目标中心的边界框的分数。因此,这些低质量的边界框很有可能被最终的非极大抑制(NMS)过程过滤掉,显著提高了检测性能。

3.实验

​ 我们的实验是在大规模检测基准COCO[8]上进行的。按照惯例[4],[7],[9],我们使用COCO train2017 split(115K图像)进行训练,并使用val2017 split(5K图像)作为我们的消融研究的验证集。我们通过将检测结果上传到评估服务器,报告在test-dev split(20K图像)上的主要结果。

训练细节。除非特别说明,否则我们使用以下实现细节。使用ResNet-50[47]作为我们的主干网络,并使用与RetinaNet[7]相同的超参数。具体来说,我们网络的**训练,采用随机梯度下降(SGD)90k次迭代,初始学习率为0.01,mini-batch为16张图像。在迭代60k和80k次时,学习率分别降低了10倍。权值衰减和动量分别设置为0.0001和0.9。我们用在ImageNet[48]上预先训练的权值来初始化我们的主干网络。对于新添加的一些层,我们在[7]中初始化它们。**除非特别说明,输入图像的大小被调整为其短边为800,长边小于或等于1333。

推理细节。首先将输入图像输入到网络中,得到预测到的类别分数和预测到的边界框。FCOS的下一个后处理与RetinaNet[7]的后处理完全一致。除了我们使用NMS阈值是0.6而不是RetinaNet的0.5,后处理的超参数也是相同的。实验将被用来证明NMS阈值的影响。此外,我们使用与训练中相同大小的输入图像。

3.1FCOS的分析

3.1.1FCOS的BPR

​ 我们首先解决了FCOS可能不能提供良好的最佳可能召回率(BPR,检测器最多能召回的GT数除以所有GT的比率)(即,召回率的上限)的问题。在本节中,在COCO val2017 split上,我们通过比较FCOS的BPR和基于锚点的对应部分的RetinaNet的BPR来表明这是不必要的。以下分析是基于AdelaiDet中的FCOS实现。在形式上,BPR被定义为检测器最多能召回的GT框的数量与所有GT框的数量的比率。**如果GT框被分配给至少一个训练样本(即FCOS的一个位置或锚基检测器的锚点框),则认为这个GT框被召回,并且一个训练样本最多可以与一个GT框相关联。**如表1所示,使用FPN后,FCOS和RetinaNet均获得了相似的BPR(98.95vs99.32)3(有人可能会认为,如果使用了所有低质量的匹配项,RetinaNet的BPR应该是1。然而,在某些情况下,这是不正确的,因为每个锚点只能与具有最高IOU的GT框相关联。例如,如果两个框A和B,它们都很小,并且包含在同一位置的所有锚点框的共同点中。显然,对于所有这些锚点框,具有较大区域的框有更高的IOU分数,因此所有的锚点框都将与之相关联。另一个将会丢失。)。由于当前检测器的最佳召回率远低于90%,所以FCOS和基于锚点的RetinaNet之间的小BPR间隙(小于0.5%)实际上不会影响检测器的性能。表3也证实了这一点,在相同的训练和测试设置下,FCOS比RetinaNet获得了更好或相似的AR。更令人惊讶的是,只有在特征级别P4且步幅为16(即没有FPN)时,FCOS才能获得96.34%的良好的BPR。远高于官方实现的Detectron[46]中的RetinaNet(其中只使用了IOU≥0.4的低质量匹配)的91.94%的BPR。
在这里插入图片描述

表3:FCOS vs. RetinaNet 在val2017 split上,以ResNet-50-FPN为骨干网络。所有的实验都使用相同的训练设置。提出的无锚点FCOS比基于锚点的RetinaNet具有更好的性能。#A:每个位置的锚点的数量。RetinaNet(#A=9):来自Detectron2[49]的原始RetinaNet。RetinaNet w/ imprv:使用了FCOS改进的普遍原则的RetinaNet,包括组归一化(GN)[50]、GIoU loss[42]和回归标量,使用P5代替C5和NMS阈值0.6而不是0.5。我们已尽力使所有的细节保持一致。如表所示,即使没有中心度分支,更简单的FCOS在AP中已经比”RetinaNet (#A=9) w/ imprv”好了0.4%。通过中心度分支,AP的性能进一步提高到38.9%。

3.1.2FCOS中的模糊样本

​ 关于FCN-based的检测器的另一个担忧是,由于GT框的重叠,可能会产生大量的模糊样本,如图1(右)所示。在表2中,我们显示了在val2017 split上,模糊样本与所有正样本的比例。如果一个位置应该与多个GT框相关联,而不使用选择具有最小面积的框的规则,则该位置将被定义为一个“模糊样本”。如表中所示,如果不使用FPN(即只使用P4),确实存在大量的模糊样本(23.40%)。然而,使用FPN,由于大多数重叠的对象被分配到不同的特征级别,该比例可以显著降低到仅7.42%。此外,如果使用中心采样,则可以显著减少模糊样本。如表2所示,即使没有FPN,这个比率也只有3.48%。通过进一步应用FPN,该比例降低到2.66%。请注意,这并不意味着有2.66%的位置是FCOS出错的。如前所述,这些位置与与同一位置相关联的GT框中最小的一个位置相关联。因此,这些位置只冒着丢失一些较大物体的风险。换句话说,它可能会损害对FCOS的召回。然而,如表1所示,FCOS和RetinaNet之间的召回差距可以忽略不计,这说明缺失的对象比例极低。
在这里插入图片描述

表2:FCOS中模糊样本与所有正样本的比例。1、2和≥3表示一个位置应该关联的GT框的数量。如果该数字大于1,则在本工作中将该位置定义为一个“模糊样本”。如表所示,在中心采样和FPN条件下,模糊样本的比例较低(即<3%)。

3.1.3中心度的有效性

​ 如前所述,我们提出“中心度”来抑制由远离物体中心的位置产生的低质量检测边界框。如表4所示,中心度分支可以将AP从38.0%提高到38.9%。与我们的会议版本[43]相比,这个差距相对较小,因为我们默认使用了中心抽样,而且它已经消除了大量的假正例。然而,改进仍然令人印象深刻,因为中心度分支只增加了可以忽略不计的计算时间。此外,我们稍后将展示,中心度可以在拥挤的场景中带来很大的改进。可以注意到的是,中心度也可以和预测的回归向量一起计算,而不引入额外的中心度分支。但是,如表4所示,从回归向量计算出的中心度并不能提高性能,因此分离开的中心度是必不可少的。
在这里插入图片描述

表4:在 val2017 split上进行的关于提出的中心度分支的消融研究。ctr.-ness+:在测试时使用从预测的回归向量计算出的中心度(即,用等式(3)中的预测值替换GT值).“ctr.-ness”是利用从提出的中心度分支预测的中心度。中心度分支提高了检测性能。相反,使用“ctr.-ness”甚至会降低性能,这表明独立的中心度分支是必要的。w/ ctr.-ness(L1):使用L1代替BCE作为损失来优化中心度。

​ 我们可视化了在图5中应用中心度的效果。如图所示,将中心度得分应用于分类得分后,IoU得分低但置信度高的框基本被剔除(即图5中y=x线下的点),这是潜在的假正例。
在这里插入图片描述

图5:将中心度得分应用于分类得分的定量结果。图中的一个点表示一个边界框。虚线是线y=x。如右图所示,应用中心度得分后,IoU得分低但置信度高的框(即在y=x线下)的方框大幅减少。

3.1.4其他可选择的设计

​ 其他的设计选择也被调查了一下。如表5所示,在分类头和回归头中去除组归一化(GN)[50],性能降低1%AP。用[19]中的原始IoU损失代替GIoU[45],性能下降了0.3%。使用c5代替P5也会降低性能。此外,使用P5还可以减少网络参数的数量。我们还对正样本区域的半径r进行了实验。如表6所示,r=1.5在COCOval split上的性能最好。我们还尝试将采样区域从方形子框改为与GT框相同高宽比的矩形子框,这导致了相似的性能。这表明,采样区域的形状可能对最终的性能不敏感。
在这里插入图片描述

表5:在FCOS中进行设计选择的消融研究。w/o GN:对头部的卷积层不使用GN。w/ IoU:使用[19]中的IoU损失代替GIoU。w/ C5:使用C5代替P5。
在这里插入图片描述

表6:正样本区域半径r的消融研究(定义见第2.1节)。

​ 我们还用将对象分配到FPN级别的不同策略进行了实验。首先,当FPN[9]将object proposals(即ROIs)分配给FPN级别时,我们实验使用了分配策略。它分配对象根据公式image-20220325203233379,其中k∈{3,4,5,6,7}是目标FPN级别,w和h是GT框的宽度和高度,k0是目标大小为224应该映射到目标级别的。我们使用k0=5。如表7所示,该策略导致性能下降(37.7%AP)。我们推测,这可能是因为该策略不能确保完整的对象在目标FPN水平的感受野内。
在这里插入图片描述

表7:将物体分配到FPN级别的不同策略的消融研究。FPN:将objects proposals(即ROIs)分配给原始FPN中的FPN级别的策略,在文中描述。h和w分别为GT框的高度和宽度。l、t、r和b是从一个位置到GT框的四个边界的距离。“max(l,t,r,b)”(由FCOS使用)的性能最好。

​ 类似地,
和max(h,w)/2也会恶化性能。最终,max(l,t,r,b)达到了最佳的性能,因为该策略确保了完整的目标对象始终是在FPN级别的有效感受野内。此外,这意味着每个FPN级别的超参数范围(即mi)主要与网络结构(它决定了感受野)有关。这是一个理想的特性,因为当FCOS应用于不同的数据集时,它消除了超参数调优。

3.2FCOS vs 基于Anchor的相应部分

​ 在这里,我们将FCOS与基于锚点的RetinaNet在具有挑战性的基准COCO上进行了比较,证明了简单得多的无锚点FCOS是优越的。

​ 为了进行公平的比较,我们在RetinaNet中添加了FCOS的通用改进。在表3中,改进后的RetinaNet被表示为“RetinaNet w/ imprv”。如表所示,即使没有中心度分支,FCOS的AP也比“RetinaNet(#A=9)”好0.4%。(38.0%vs37.6%)。借助提出的中心度分支,FCOS的性能可以进一步提高到38.9%。此外,值得注意的是,FCOS比每个位置只有一个anchor的“RetinaNet(#A=1) w/ imprv."取得了更好的性能。(38.0%vs35.2%),这表明FCOS并不等同于single-anchor RetinaNet。主要的区别是FCOS没有使用锚点框和GT框之间的IoU分数来确定训练标签。

​ 考虑到无锚点检测器的优越性能和优点(例如,更简单和更少的超参数),我们鼓励学界重新考虑锚点框在目标检测中的必要性。

3.3在COCO数据集上与最先进的检测器的比较

​ 我们在MS-COCO基准test-dev split上,比较了FCOS与其他最先进的目标检测器。在这些实验中,根据之前的工作[5],[7],我们使用了多尺度训练。具体来说,在训练过程中,输入图像的短边从[640,800]中采样,步长为32。此外,我们将迭代次数增加一倍,达到180K(随着学习率变化按比例缩放)。其他设置与3中val2017上AP为38.9%的模型完全相同。

​ 如表8所示,使用ResNet-101-FPN之后,FCOS比具有相同主干的原始RetinaNet好4.1%(43.2%vs39.1%)。与SSD[5]和DSSD[54]等其他单级检测器相比,我们也取得了更好的性能。此外,FCOS也大大超过了经典的两阶段锚基检测器Faster R-CNN(43.2%vs.36.2%)。据我们所知,这是第一次anchor-free的检测器在没有任何花哨功能的情况下,其性能大大优于基于锚点的检测器。此外,FCOS的性能也优于之前的无锚检测器CornerNet[32]和CenterNet[55],因为它们需要用嵌入向量对角进行分组,这需要对检测器进行特殊的设计。因此,我们认为FCOS更有可能作为当前主流的锚基检测器的一个强大和简单的替代品。定量结果如图6所示。FCOS似乎可以很好地处理各种具有挑战性的案例。

​ 我们还介绍了一些对FCOS的补充技术。首先,在主干的第3阶段和第4阶段使用可变形卷积,并替换分类和回归塔中的最后一个卷积层(即图2所示的4×convolutions)。如表8所示,通过对基于ResNeXt-32x8d-101-FPN的FCOS应用可变形卷积[56],[58],性能从44.1%提高到46.6%,如表8所示。此外,我们还尝试用BiFPN[57]取代FCOS中的FPN。我们在[57]的D3模型中使用了BiFPN。具体来说,将BiFPN的single cell重复6次,并将其输出通道数设置为160个。注意,与原始的BiFPN不同,我们在其中不使用深度可分离卷积。因此,BiFPN通常改进了所有FCOS模型大约2%AP,并且最好的模型的性能达到了47.9%。

​ 我们还报告了测试时使用数据增强的结果。具体地说,在推理过程中,输入图像通过step 100分别被调整为[400,1200]像素。在每个尺度上,对原始图像及其水平翻转进行评估。这些增强图像的结果被NMS合并。如表8所示,测试时的增强将最佳性能提高到了50.4%的AP。
在这里插入图片描述

表8:FCOS与其他最先进的两级或一级检测器(single-model results)。FCOS的性能远远优于最近一些基于锚点和无锚点的检测器。

3.4实时的FCOS

​ 我们还设计了一个实时版本的FCOS:FCOS-RT。在实时设置中,我们将输入图像的短边从800减少到512,最大长尺寸从1333减少到736,这将每幅图像的推理时间减少了大约50%。随着输入尺寸越小,越高的特征级别P6和P7就变得不那么重要了。因此,遵循BlendMask-RT[24],我们删除了P6和P7,进一步减少了推理时间。此外,为了提高实时版本的性能,我们采用了一种更积极的训练策略。具体来说,在训练过程中,使用多尺度数据增强,较短的输入图像从256到608中采样,间隔为32。使用了SyncBN。我们还将训练迭代增加到360K(即4×)。在300K和340K迭代时,学习率降低10倍。

​ 所得到的实时模型如表9所示。使用ResNet-50,FCOS-RT可以在一个1080Ti的GPU卡上以38 FPS的速度实现40.2%的AP。我们进一步用主干DLA-34[59]取代了ResNet-50,这导致了更好的速度/精度权衡(46FPS时的40.3%AP)。为了与CenterNet[34]进行比较,我们共享了两个塔(即分类分支和回归分支之间的4×conv。速度从46FPS提高到52FPS,但性能下降了1.2%AP。然而,如表9所示,在相同的速度下,该模型仍然比CenterNet[34]高出1.7%。对于实时模型,我们还用BiFPN替换了FPN,如第3.3节所述,结果以相似的速度提高了1.8%的AP(从40.3%提高到42.1%)。FCOS与一些最近的检测方法之间的速度/精度比较如图3所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pC73HxNu-1648611669149)(images/image-20220325181731625.png)]

表9:实时FCOS(FCOS-RT)模型。在COCO val split上的AP。"shtw.:分类和回归分支之间的共享塔(即图二中的4×conv)。推理时间是用一个1080Ti或Titan XP的GPU来测量的(这两个GPU的速度很接近)。所有FCOS模型的FPS都是在1080Ti的GPU上测量的。我们使用[6]发布的代码在1080Ti上测量YOLOv3的FPS。对于FCOS和YOLOv3,我们在这里测量端到端推理时间(即,从预处理到最终的输出框)。

在这里插入图片描述

图3:FCOS和最近的几个方法之间的速度/准确性权衡:CenterNet[34],YOLOv3[6]和RetinaNet[7]。速度是在一个NVIDIA 1080 Ti的GPU上测量的。为了进行公平的比较,我们只测量所有检测器的网络延迟。RetinaNet的结果来自Detectron2。与基于锚点的方法相比,FCOS取得了具有竞争力的性能。

3.5CrowdHuman数据集上的FCOS

4.总结

​ 在这项工作中,我们提出了一个无锚点和无proposal的单阶段检测器FCOS。我们的实验表明,FCOS优于广泛使用的基于锚点的单阶段检测器,包括RetinaNet、YOLO和SSD,并且设计的复杂性要小得多。FCOS完全避免了与锚点框相关的所有计算和超参数,并以逐像素预测的方式解决了目标检测问题,类似于语义分割等其他密集的预测任务。FCOS还实现了 state-of-the-art的性能。我们还提出了一些检测器的实时模型,它们具有state-of-the-art的性能和推理速度。鉴于它的有效性和效率,我们希望FCOS可以作为当前主流的基于锚点的检测器的一个强大而简单的替代方案。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值