当前位置: 首页 > news >正文

FCOS: Fully Convolutional One-Stage Object Detection——全卷积一阶段目标检测

FCOS(Fully Convolutional One-Stage Object Detector)是一种全卷积的单阶段目标检测器,旨在通过消除锚点(anchor)的使用,简化目标检测的流程。以下是FCOS的主要特点和组成部分:

1. 无锚点设计

FCOS通过直接在特征图的每个位置上预测目标的边界框,而不是依赖于预定义的锚点。这种设计减少了超参数的数量,并避免了锚点匹配的问题。

2. 网络架构

FCOS的网络架构包括一个骨干网络(如ResNet-50)和多个特征级别(P3到P7)。每个特征级别用于最终的预测,特征图的下采样比例从8到128不等。

3. 中心度(Center-ness)

为了提高检测质量,FCOS引入了中心度分支。中心度衡量预测位置与目标中心之间的距离,并用于调整分类分数,从而降低远离目标中心的低质量边界框的权重。

4. 多尺度特征

通过使用FPN(Feature Pyramid Network),FCOS能够处理不同尺度的目标。每个特征级别负责检测特定尺度的目标,从而提高检测的准确性。

5. 训练与测试

在训练过程中,FCOS通过预测4D向量(l, t, r, b)来编码每个前景像素的边界框位置,并使用真实边界框信息进行监督。在测试时,网络预测的中心度与分类分数相乘,以过滤低质量的边界框。

6. 性能

FCOS在多个基准测试中表现优异,尤其是在COCO数据集上,其性能超过了许多基于锚点的检测器,如RetinaNet。通过一些改进,如组归一化(GN)、中心度分支的优化和IoU损失的改进,FCOS的性能得到了进一步提升。

FCOS通过无锚点设计和中心度分支,简化了目标检测的流程,并在多个基准测试中展示了优异的性能。其设计理念和性能使其成为目标检测领域的一个重要进展。这里因为最近开发需要整体又读了一下FCOS的论文,记录下阅读记录,感兴趣的话可以参考一下,如果想要阅读原文可以来这里,如下所示:

摘要——我们提出了一种全卷积一阶段目标检测器(FCOS),以逐像素预测的方式解决目标检测问题,类似于语义分割。几乎所有最先进的目标检测器,如RetinaNet、SSD、YOLOv3和Faster R-CNN,都依赖于预定义的锚框。相比之下,我们提出的检测器FCOS是无锚框的,也是无提议的。通过消除预定义的锚框集,FCOS完全避免了与锚框相关的复杂计算,如训练期间的交并比(IoU)计算。更重要的是,我们还避免了与锚框相关的所有超参数,这些超参数通常对最终检测性能非常敏感。仅使用后处理非最大抑制(NMS),配备ResNeXt-64x4d-101的FCOS在单模型和单尺度测试下达到了44.7%的AP,超越了之前的一阶段检测器,并且更加简单。我们首次展示了一个更简单和灵活的检测框架,实现了更高的检测精度。我们希望所提出的FCOS框架可以作为许多其他实例级任务的简单而强大的替代方案。代码可在以下网址获取:tinyurl.com/FCOSv1。

1. 引言

目标检测是计算机视觉中一项基础且具有挑战性的任务,要求算法预测图像中每个感兴趣实例的边界框和类别标签。所有当前主流检测器,如Faster R-CNN、SSD和YOLOv2、v3,都依赖于一组预定义的锚框,长期以来人们一直认为锚框的使用是检测器成功的关键。尽管取得了巨大成功,但值得注意的是,基于锚框的检测器存在一些缺点:1)如[15, 24]所示,检测性能对锚框的大小、宽高比和数量敏感。例如,在RetinaNet中,调整这些超参数会影响COCO基准上的AP性能高达4%。因此,这些超参数需要在基于锚框的检测器中仔细调整。2)即使经过精心设计,由于锚框的尺度和宽高比保持固定,检测器在处理具有大形状变化的对象候选时会遇到困难,特别是对于小对象。预定义的锚框还阻碍了检测器的泛化能力,因为它们需要在具有不同对象大小或宽高比的新检测任务中重新设计。3)为了实现高召回率,基于锚框的检测器需要在输入图像上密集放置锚框(例如,在特征金字塔网络(FPN)中,对于短边为800的图像,需要超过18万个锚框)。大多数这些锚框在训练期间被标记为负样本。过多的负样本加剧了训练中正负样本之间的不平衡。4)锚框还涉及复杂的计算,如计算与真实边界框的交并比(IoU)分数。

图1 - 如图左图所示,FCOS通过预测一个4D向量(l, t, r, b)来编码每个前景像素的边界框位置(在训练过程中由真实边界框信息进行监督)。右图显示,当一个位置位于多个边界框内时,该位置在回归哪个边界框方面可能存在歧义。

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

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

接下来,我们更仔细地研究这个问题,并表明通过FPN可以很大程度上消除这种模糊性。因此,我们的方法已经可以获得与传统基于锚框的检测器相当的检测精度。此外,我们观察到,我们的方法可能会在远离目标对象中心的区域产生许多低质量的预测边界框。为了抑制这些低质量检测,我们引入了一种新颖的“中心度”分支(仅一层)来预测像素到其相应边界框中心的偏差,如公式(3)中所定义。然后使用该分数来降低低质量检测边界框的权重,并在NMS中合并检测结果。简单而有效的中心度分支使得基于FCN的检测器在完全相同的训练和测试设置下优于基于锚框的检测器。

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

  • 检测现在与其他许多FCN可解决的任务(如语义分割)统一起来,使得更容易从这些任务中借鉴思路。

  • 检测变得无提议和无锚框,显著减少了设计参数的数量。设计参数通常需要启发式调整,并且为了获得良好的性能,许多技巧是必要的。因此,我们的新检测框架使检测器,特别是其训练,变得更加简单。

  • 通过消除锚框,我们的新检测器完全避免了与锚框相关的复杂计算,如训练期间的IoU计算和锚框与真实框的匹配,从而实现了更快的训练和测试,以及更少的训练内存占用。

  • 在没有花哨技巧的情况下,我们在一阶段检测器中取得了最先进的结果。我们还展示了所提出的FCOS可以用作两阶段检测器中的区域提议网络(RPNs),并且可以显著优于其基于锚框的RPN对应物。鉴于性能更好的更简单的无锚框检测器,我们鼓励社区重新思考目标检测中锚框的必要性,锚框目前被认为是检测的实际标准。

  • 所提出的检测器可以立即扩展以解决其他视觉任务,包括实例分割和关键点检测,只需进行最小的修改。我们相信这种新方法可以成为许多实例级预测问题的新基线。

2. 相关工作

基于锚框的检测器。 基于锚框的检测器继承了传统滑动窗口和基于提议的检测器的思想,如Fast R-CNN。在基于锚框的检测器中,锚框可以被视为预定义的滑动窗口或提议,这些滑动窗口或提议被分类为正样本或负样本,并进行额外的偏移回归以细化边界框位置的预测。因此,这些检测器中的锚框可以被视为训练样本。与之前的检测器(如Fast RCNN)不同,Fast RCNN为每个滑动窗口/提议重复计算图像特征,锚框利用CNN的特征图并避免重复特征计算,从而显著加速检测过程。锚框的设计在Faster R-CNN的RPNs、SSD和YOLOv2中得到了普及,并成为现代检测器的常规做法。

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

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

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

另一类无锚框检测器,如[32],基于DenseBox[12]。由于难以处理重叠边界框和召回率相对较低,这类检测器被认为不适合通用目标检测。在这项工作中,我们表明,通过多级FPN预测,这两个问题都可以得到很大程度的缓解。此外,我们还表明,结合我们提出的中心度分支,更简单的检测器可以实现甚至比基于锚框的检测器更好的检测性能。

3. 我们的方法

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

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

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

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

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

3.2 使用FPN进行多级预测

在这里,我们展示了如何使用FPN进行多级预测来解决所提出的FCOS的两个可能问题:1)CNN中最终特征图的大步幅(例如,16倍)可能导致相对较低的最佳可能召回率(BPR)。对于基于锚框的检测器,由于大步幅导致的低召回率可以通过降低正锚框所需的IOU分数来在一定程度上得到补偿。对于FCOS,乍一看,人们可能会认为BPR可能远低于基于锚框的检测器,因为由于大步幅,最终特征图上没有编码位置的对象无法被召回。在这里,我们经验性地表明,即使是大步幅,基于FCN的FCOS仍然能够产生良好的BPR,甚至可以比官方实现中的基于锚框的检测器RetinaNet的BPR更好(参见表1)。因此,BPR实际上不是FCOS的问题。此外,通过多级FPN预测,FCOS可以进一步提高BPR,以匹配基于锚框的检测器可以实现的最佳BPR。2)重叠的地面真值框可能导致难以处理的模糊性,即重叠区域中的像素应该回归哪个边界框?这种模糊性导致基于FCN的检测器的性能下降。在这项工作中,我们表明,这种模糊性可以通过多级预测得到很大程度的解决,并且基于FCN的检测器可以获得与基于锚框的检测器相当的性能。

遵循FPN[14],我们在不同级别的特征图上检测不同大小的对象。具体来说,我们使用定义为P3、P4​、P5​、P6、P7​的五个级别的特征图。P3、P4和P5由骨干CNN的特征图C3、C4和C5产生,并遵循[14]中的自上而下连接,如图2所示。P6和P7是通过分别在P5P5​和P6​上应用一个步幅为2的卷积层产生的。因此,特征级别P3​、P4​、P5​、P6​和P7的步幅分别为8、16、32、64和128。

最后,遵循[14, 15],我们在不同特征级别之间共享头部,不仅使检测器参数高效,而且提高了检测性能。然而,我们观察到不同的特征级别需要回归不同的大小范围(例如,P3的大小范围是[0,64],P4​的大小范围是[64,128]),因此对不同特征级别使用相同的头部是不合理的。因此,我们不是使用标准的exp⁡(x),而是使用带有可训练标量来自动调整特征级别Pi​的指数函数的基数,这稍微提高了检测性能。

图2 - FCOS的网络架构,其中C3、C4和C5表示骨干网络的特征图,P3到P7是用于最终预测的特征级别。H × W表示特征图的高度和宽度。‘/s’(s = 8, 16, ..., 128)表示该级别特征图相对于输入图像的下采样比例。例如,所有数字都是基于800 × 1024的输入计算的。

3.3 用于FCOS的中心度

在使用FPN进行多级预测后,FCOS与基于锚框的检测器之间仍然存在性能差距。我们观察到,这是由于许多低质量的预测边界框由远离对象中心的区域产生。

图3 - 中心度。红色、蓝色和其他颜色分别表示1、0和它们之间的值。中心度通过公式(3)计算,并随着位置偏离物体的中心而从1衰减到0。在测试时,网络预测的中心度与分类分数相乘,从而可以降低由远离物体中心位置预测的低质量边界框的权重。

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

我们在这里使用sqrt来减缓中心度的衰减。中心度的范围从0到1,因此使用二元交叉熵(BCE)损失进行训练。损失被添加到损失函数公式(2)中。在测试时,最终得分(用于对检测到的边界框进行排序)通过将预测的中心度与相应的分类分数相乘来计算。因此,中心度可以降低远离对象中心的位置的分数权重。结果,通过最终的非最大抑制(NMS)过程,这些低质量的边界框很可能被过滤掉,从而显著提高了检测性能。

中心度的另一种替代方法是仅使用地面真值边界框的中心部分作为正样本,代价是引入一个额外的超参数。在我们提交后,已经表明,结合这两种方法可以获得更好的性能,如表3中的“+ ctr. sampling”行所示。在表3中可以找到实验结果。

4. 实验

我们的实验在大型检测基准COCO[16]上进行。遵循常见的做法[15, 14, 24],我们使用COCO trainval35k分割(115K图像)进行训练,并使用minival分割(5K图像)作为验证进行消融研究。我们通过将检测结果上传到评估服务器来报告我们在test-dev分割(20K图像)上的主要结果。

训练细节。 除非指定,否则我们使用ResNet-50[8]作为我们的骨干网络,并使用与RetinaNet[15]相同的超参数。具体来说,我们的COCO网络使用随机梯度下降(SGD)进行90K次迭代训练,初始学习率为0.01,每批16张图像。学习率在60K和80K次迭代时分别降低10倍。权重衰减和动量分别设置为0.0001和0.9。我们使用在ImageNet[4]上预训练的权重初始化我们的骨干网络。对于新添加的层,我们按照[15]中的方式初始化它们。除非指定,否则输入图像被调整为使其短边为800,长边小于或等于1333。

推理细节。 我们首先通过网络前向传播输入图像,并获得预测的边界框及其类别。除非指定,否则以下后处理与RetinaNet[15]完全相同,我们直接使用RetinaNet的后处理超参数。我们使用与训练中相同的尺寸输入图像。我们假设如果仔细调整超参数,我们的检测器的性能可能会进一步提高。

4.1 消融研究
4.1.1 使用FPN进行多级预测

如前所述,基于FCN的检测器的主要关注点是低召回率和由于地面真值边界框中的重叠导致的模糊样本。在本节中,我们展示了这两个问题可以通过多级预测得到很大程度的解决。

表1 - 基于锚点的RetinaNet在各种匹配规则下的最佳可能召回率(BPR)以及基于FCN的FCOS的BPR。基于FCN的FCOS的召回率与最佳的基于锚点的方法非常相似,并且比Detectron [7]中的官方实现有更高的召回率,其中仅考虑了IOU ≥ 0.4的低质量匹配。

表2 - Amb. samples表示模糊样本占所有正样本的比例。Amb. samples (diff.)与之类似,但不包括那些在重叠区域但属于同一类别的模糊样本,因为这种模糊性在推理时无关紧要。我们可以看到,通过FPN,模糊样本的比例很小(3.75%)。

最佳可能召回率。 关于基于FCN的检测器的第一个关注点是它可能无法提供良好的最佳可能召回率(BPR)。在本节中,我们展示了这种关注是不必要的。这里的BPR定义为检测器最多可以召回的地面真值框数量与所有地面真值框数量的比率。如果一个地面真值框在训练期间被分配给至少一个样本(即基于FCN的检测器中的位置或基于锚框的检测器中的锚框),则认为该框被召回。如表1所示,仅使用特征级别P4且步幅为16(即无FPN),FCOS已经可以获得95.55%的BPR。该BPR远高于官方实现中基于锚框的检测器RetinaNet的BPR(90.92%),其中仅使用IOU≥0.4的低质量匹配。通过FPN的帮助,FCOS可以实现98.40%的BPR,这与基于锚框的检测器可以通过使用所有低质量匹配实现的最佳BPR非常接近。由于当前检测器的最佳召回率远低于90%,FCOS与基于锚框的检测器之间的BPR差距(小于1%)实际上不会影响检测器的性能。它也在表3中得到确认,其中FCOS在相同的训练和测试设置下甚至比其基于锚框的对应物实现了更好的AR。因此,关于低BPR的关注可能是不必要的。

模糊样本。 关于基于FCN的检测器的另一个关注点是它可能由于地面真值边界框中的重叠而产生大量的模糊样本,如图1(右)所示。在表2中,我们展示了minival分割上模糊样本与所有正样本的比率。如表所示,如果不使用FPN且仅使用特征级别P4​,确实存在大量的模糊样本(23.16%)。然而,通过FPN,该比率可以显著减少到仅7.14%,因为大多数重叠的对象被分配到不同的特征级别。此外,我们认为由于重叠区域中属于同一类别的对象导致的模糊样本并不重要。例如,如果对象A和B具有相同的类别且有重叠,无论重叠区域中的位置预测哪个对象,预测都是正确的,因为它总是与相同的类别匹配。被遗漏的对象可以由仅属于它的位置预测。因此,我们只计算不同类别边界框之间的重叠中的模糊样本。如表2所示,多级预测将不同类别边界框之间的重叠中的模糊样本比率从17.84%减少到3.75%。为了进一步证明地面真值框中的重叠不是FCOS的问题,我们计算了在推理时有多少检测到的边界框来自模糊位置。我们发现只有2.3%的检测到的边界框由模糊位置产生。通过进一步仅考虑不同类别之间的重叠,该比率减少到1.5%。请注意,这并不意味着FCOS在1.5%的位置上无法工作。如前所述,这些位置与具有最小面积的地面真值框相关联。因此,这些位置只承担遗漏一些较大对象的风险。如以下实验所示,它们实际上并没有使FCOS不如基于锚框的检测器。

表3 - 使用ResNet-50-FPN作为骨干网络,在minival数据集上FCOS与RetinaNet的比较。直接采用RetinaNet的训练和测试设置,我们的无锚点FCOS在AP和AR方面都比基于锚点的RetinaNet表现更好。在头部使用组归一化(GN)和NMS阈值为0.6的情况下,FCOS可以达到37.1的AP。在我们提交之后,FCOS进行了一些几乎零成本的改进,性能有了显著提升,如“Improvements”行以下所示。“ctr. on reg.”:将中心度分支移到回归分支。“ctr. sampling”:仅将真实边界框的中心部分作为正样本进行采样。“GIoU”:在IoU损失中惩罚包围矩形面积上的联合面积。“Normalization”:使用FPN级别的步幅对公式(1)中的回归目标进行归一化。详情请参阅我们的代码。

表4 - 在minival数据集上对提出的中心度分支进行消融研究。“None”表示不使用中心度。“centerness†”表示使用从预测的回归向量计算的中心度。“center-ness”表示使用从提出的中心度分支预测的中心度。中心度分支在所有指标下都提高了检测性能。

4.1.2 有或无中心度

如前所述,我们提出“中心度”来抑制由远离对象中心的区域产生的低质量检测的边界框。如表4所示,中心度分支可以将AP从33.5%提升到37.1%,使无锚框的FCOS优于基于锚框的RetinaNet(35.9%)。请注意,基于锚框的RetinaNet使用两个IOU阈值来标记锚框为正/负样本,这也可以帮助抑制低质量预测。所提出的中心度可以消除这两个超参数。然而,在我们提交后,已经表明,结合中心度和阈值可以获得更好的性能,如表3中的“+ ctr. sampling”行所示。人们可能会注意到,中心度也可以通过不引入额外中心度分支的预测回归向量来计算。然而,如表4所示,通过预测回归向量计算的中心度不能提高性能,因此需要单独的中心度。

4.1.3 FCOS vs. 基于锚框的检测器

上述FCOS与标准RetinaNet有两个小差异。1)我们在新添加的卷积层中使用组归一化(GN)[29],这使得我们的训练更加稳定。2)我们使用P5而不是C5来生成P6​和P7​。我们观察到使用P5可以稍微提高性能。

为了显示我们的FCOS可以作为基于锚框的检测器的简单而强大的替代方案,并且为了公平比较,我们去除了GN(梯度被裁剪以防止它们爆炸)并使用C5在我们的检测器中。如表3所示,在完全相同的设置下,我们的FCOS仍然优于基于锚框的检测器(36.3% vs 35.9%)。此外,值得注意的是,我们直接使用RetinaNet的所有超参数(例如,学习率、NMS阈值等),这些超参数已经为基于锚框的检测器进行了优化。我们主张,如果为FCOS调整超参数,其性能可以进一步提高。

值得注意的是,通过一些几乎无成本的改进,如表3所示,我们的无锚框检测器的性能可以大幅提高。鉴于优越的性能和无锚框检测器的优点(例如,比基于锚框的检测器更简单和更少的超参数),我们鼓励社区重新思考目标检测中锚框的必要性。

4.2 与其他最先进检测器的比较

我们在MS-COCO基准的test-dev分割上将FCOS与其他最先进的目标检测器进行了比较。对于这些实验,我们在训练期间随机缩放图像的短边在640到800之间,并将迭代次数加倍到180K(学习率变化点按比例缩放)。其他设置与表3中AP 37.1%的模型完全相同。如表5所示,使用ResNet-101-FPN,我们的FCOS在AP中比具有相同骨干网络ResNet-101-FPN的RetinaNet高出2.4%。据我们所知,这是首次无锚框检测器在大规模上大幅优于基于锚框的检测器。FCOS还大幅优于其他经典的两阶段基于锚框的检测器,如Faster R-CNN。使用ResNeXt-64x4d-101-FPN[30]作为骨干网络,FCOS在AP中达到43.2%。它大幅优于最近的最先进无锚框检测器CornerNet,同时检测器的设计更为简单。请注意,CornerNet需要使用嵌入向量对角点进行分组,这需要检测器的特殊设计。因此,我们认为FCOS更有可能作为当前主流基于锚框检测器的强大而简单的替代方案。此外,表3中的改进使FCOS在单模型和单尺度测试下达到44.7%的AP,大幅超越之前的检测器。

表5 - FCOS与其他最先进的单阶段或双阶段检测器的比较(单模型和单尺度结果)。在相同的骨干网络下,FCOS在AP上比基于锚点的RetinaNet高出2.4%。FCOS还以更少的设计复杂性优于最近的基于无锚点的单阶段检测器CornerNet。有关“improvements”的详细信息,请参阅表3。

表6 - 作为区域提议网络(RPN)的FCOS与带有FPN的RPN的比较。使用ResNet-50作为骨干网络。FCOS分别将AR100和AR1k提高了8.1%和3.4%。GN:组归一化

5. 区域提议网络的扩展

到目前为止,我们已经展示了在一阶段检测器中,我们的FCOS可以实现甚至比基于锚框的对应物更好的性能。直观地说,FCOS也应该能够在两阶段检测器Faster R-CNN中用FPN[14]替换锚框。在这里,我们通过实验确认这一点。

与FPN[14]的RPNs相比,我们用FCOS中的方法替换锚框。此外,我们在FPN头部的层中添加GN,这可以使我们的训练更加稳定。所有其他设置与FPN的RPNs在官方代码[7]中完全相同。如表6所示,即使没有提出的中心度分支,我们的FCOS已经显著提高了AR100和AR1k。使用提出的中心度分支,FCOS进一步将AR100和AR1k分别提升到52.8%和60.3%,相对于FPN的RPNs,AR100的相对改进为18%,AR1k的绝对改进为3.4%。

6. 结论

我们提出了一种无锚框和无提议的一阶段检测器FCOS。如实验所示,FCOS优于流行的基于锚框的一阶段检测器,包括RetinaNet、YOLO和SSD,但设计复杂度要低得多。FCOS完全避免了与锚框相关的所有计算和超参数,并以逐像素预测的方式解决了目标检测问题,类似于其他密集预测任务,如语义分割。FCOS还在一阶段检测器中取得了最先进的性能。我们还展示了FCOS可以用作两阶段检测器Faster R-CNN中的RPNs,并且大幅优于其RPNs。鉴于其有效性和效率,我们希望FCOS可以作为当前主流基于锚框检测器的强大而简单的替代方案。我们还相信,FCOS可以扩展以解决许多其他实例级识别任务。

相关文章:

FCOS: Fully Convolutional One-Stage Object Detection——全卷积一阶段目标检测

FCOS(Fully Convolutional One-Stage Object Detector)是一种全卷积的单阶段目标检测器,旨在通过消除锚点(anchor)的使用,简化目标检测的流程。以下是FCOS的主要特点和组成部分: 1. 无锚点设计…...

《Java核心技术I》映射条目的原子更新

映射条目的原子更新 ConcurrentHashMap只有部分原子更新。 JavaAPI提供了一些新方法,例如:compute方法可以提供一个键和一个计算新值的函数。 map.compute(word,(k,v)->v null ? 1 : v1) 注释:ConcurrentHashMap中不允许有null值。很…...

微信小程序介绍-以及写项目流程(重要)

前言:本篇文章介绍微信小程序以及项目介绍: 文章介绍:介绍了微信小程序常用的指令、组件、api。tips:最好按照官方文档来进行学习,大致可以我的目录来学习,对于写项目是没有问题的 微信小程序官方文档https…...

241207-通过Docker部署Wiki.JS并设置ElasticSearch进行中文搜索

A. 最终效果 B. 配置文件 version: "3" services:wiki:image: ghcr.io/requarks/wiki:2container_name: wikijsports:- "3000:3000"volumes:- /home/lgk/Projects/WikiJS/config:/configenvironment:- DB_TYPEpostgres- DB_HOSTdatabase- DB_PORT5432- DB…...

yum 离线软件安装

适用范围 支持YUM软件管理的操作系统: 银河麒麟 服务器操作系统V10统信服务器操作系统V20CentOS 系列 准备 准备一台可以连接互联网并且与离线安装的操作系统相同版本的操作系统,包括指令集类型相同。 安装下载工具 查询是否已经安装下载工具 yum…...

【jvm】垃圾回收的优点和原理

目录 1. 说明2. 优点3. 原理3.1 发现无用对象3.2 回收无用对象所占用的内存 4. 回收算法4.1 标记-清除算法4.2 复制算法4.3 标记-整理算法4.4 分代收集算法 1. 说明 1.JVM(Java虚拟机)垃圾回收是Java语言的一大特性,它自动管理内存&#xff…...

LeetCode322. 零钱兑换(2024冬季每日一题 28)

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...

LearnOpenGL学习(高级OpenGL --> 帧缓冲,立方体贴图,高级数据)

完整代码见:zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 帧缓冲 帧缓冲(FrameBuffer)是所有屏幕缓冲(包括颜色缓冲,深度缓冲,模板缓冲)的集合。它被存储在GPU内存中,我们可以定义…...

mysql笔记——索引

索引 InnoDB采用了B树索引结构。 相比于二叉树,层级更少,搜索效率高。 B树中叶子节点和非叶节点都会存储数据,导致段页式存储中一页存储的键值减少,指针也会减少,要同样保存大量数据,只能增加树的高度&a…...

React第十五节useReducer使用详解差异

useReducer() 的用法注意事项 1、 概述: useReducer() 常用于管理复杂的状态更新逻辑,特别是在状态更新依赖于多个条件或动作时,useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...

高效备考 Oracle 19c OCM 的建议

满足报考条件 考生需要先获得 19c OCP(Oracle Certified Professional)认证,并完成 Oracle 官方认可的 OCP 培训课程 制定学习计划 规划学习时间:根据考试时间和自己的日常安排,制定详细的学习计划,合理分配…...

01-Chromedriver下载与配置(mac)

下载地址: 这里我用的最后一个,根据自己chrome浏览器选择相应的版本号即可 ChromeDriver官网下载地址:https://sites.google.com/chromium.org/driver/downloads ChromeDriver官网最新版下载地址:https://googlechromelabs.git…...

网站流量和用户行为深度分析

关于网站流量数据集的探索 import pandas as pd import plotly.express as px import plotly.graph_objects as go import plotly.subplots as sp import matplotlib.pyplot as plt import seaborn as sns file_path /home/mw/input/webs4651/website_wata.csv data pd.rea…...

centOS7如何配置阿里云或者腾讯云yum源

众所周知,CentOS很多版本目前已经不再维护了,原本的在线yum源已经无法使用,所以需要我们配置其他的yum源。目前腾讯云或者阿里云的yum源都可以正常使用,所以本文教大家如何配置阿里云/腾讯云在线yum源。 阿里云yum源配置&#xf…...

洗鞋小程序(源码+文档+部署+讲解)

本文将深入解析“洗鞋小程序”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 为洗鞋提供服务,包含小程序和管理端。 本项目名称为洗鞋小程序,是一个基于小程序的在线洗鞋平台。该系统提供下单、订单管…...

MySQL|通过JSON_UNQUOTE实现MySQL中JSON数据的干净提取

文章目录 语法使用示例注意事项 JSON_UNQUOTE() 是 MySQL 中用于处理 JSON 数据类型的一个函数。它的主要作用是从 JSON 字符串中移除最外层的引号,这对于从 JSON 对象或数组中提取字符串值特别有用。 语法 JSON_UNQUOTE(json_string)json_string: 这是你想要去掉引…...

动态规划part01

文章参考来源代码随想录 理论基础 适用范围: 如果某一问题有很多重叠子问题,使用动态规划是最有效的。 与贪心算法的区别: 动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推…...

生活大爆炸版石头剪刀布(洛谷P1328)

生活大爆炸版石头剪刀布(洛谷P1328) [NOIP2014 提高组] 前言: 由于洛谷发布题解有限制,所以在CSDN上发布洛谷题解。 所有题解均是Java语言, 但是思路是相同的 每篇都是刷题日常,尽量讲清楚算法逻辑。 希望有问题还请大佬们指导! …...

【GOOD】DeGEM

ICLR2025 under review 看到不错的想法,学习一下 Decoupled Graph Energy-based Model for Node Out-of-Distribution Detection on Heterophilic Graphs 🐱🐶图上的OOD检测的工作是比较少的,相比于图像数据,图结构数…...

jenkins邮件的配置详解

Jenkins邮件的配置涉及多个步骤和细节,以下是详细的配置指南: 一、前期准备 确定邮件服务:明确Jenkins将要使用的邮件服务,如QQ邮箱、163邮箱、公司邮箱(基于Microsoft 365或Exchange Server)等。获取SMTP配置信息:根据邮件服务类型,获取相应的SMTP服务器地址、端口号…...

flask-socketio相关总结

flask-socketio是一个为flask应用程序添加的实时双向通信功能的扩展库,有了这个库,就可以在flask应用中应用websocket协议,帮助flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官方库,都能与服务器建立长连接…...

每日一题 LCR 097. 不同的子序列

LCR 097. 不同的子序列 使用动态规划就可以解决&#xff0c;重点是知道 动态规划的状态是如何转移的 class Solution { public:int numDistinct(string s, string t) {int ns s.size();int nt t.size();vector<vector<long>> dp(ns1,vector<long>(nt1,0)…...

合并区间C和C++的区别、布尔、整型、浮点、指针类型和0做比较、malloc、calloc、realloc的区别

56. 合并区间 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {//先按照每个区间的左元素排序&#xff0c;这样每个区间的左边界就固定了&#xff0c;所以之后考虑相邻的//区间是否是相交的就行 类似与栈的…...

设计模式-外观模式

背景 有一个家庭影院&#xff0c;有DVD播放器&#xff0c;投影仪&#xff0c;屏幕&#xff0c;音响&#xff0c;爆米花机&#xff0c;每一个设备都有一个遥控器。 传统思路&#xff1a; 创建一个客户端类&#xff0c;在这个类中创建所有设备的相关对象&#xff08;遥控器&am…...

嵌入式驱动开发详解14(SPI驱动架构实现)

文章目录 前言SPI简介SPI介绍SPI工作模式SPI特点 驱动开发驱动架构SPI控制器驱动SPI设备驱动SPI 设备和驱动匹配过程SPI其他相关API函数 参考文献 前言 SPI 是很常用的串行通信协议&#xff0c;可以通过 SPI 来连接众多的传感器&#xff0c;相比 I2C 接 口&#xff0c;SPI 接口…...

【保姆级系列:思科模拟器安装下载汉化教程大全】

文章目录 概述Packet Tracer下载Packet Tracer安装Packet Tracer使用EVE-NG下载&#xff1a;EVE-NG安装&#xff1a;EVE-NG使用&#xff1a; 概述 思科在网络界的地位是众所周知的。如果说在中美科技战中&#xff0c;华为代表CHN&#xff0c;那么思科就代表US&#xff0c;依然…...

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组)

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题&#xff08;中职组&#xff09; 1.基础设置和安全强化&#xff08;xxx 分&#xff09;1.3. 任务内容: 2.安全监测和预警&#xff08;xxx 分&#xff09;2.1. 任务一&#xff1a;建立目录安…...

QT 中基于 TCP 的网络通信

基础 基于 TCP 的套接字通信需要用到两个类&#xff1a; 1&#xff09;QTcpServer&#xff1a;服务器类&#xff0c;用于监听客户端连接以及和客户端建立连接。 2&#xff09;QTcpSocket&#xff1a;通信的套接字类&#xff0c;客户端、服务器端都需要使用。 这两个套接字通信类…...

React Native 速度提升 550%

React Native 爱好者们!🌟 您准备好听一些激动人心的消息了吗?React Native 刚刚发布了其最大的更新之一:一种全新的架构,彻底改变了我们构建移动应用程序的方式。如果您想知道这对您的项目和开发体验意味着什么,请继续关注!我们正在深入探讨这个改变游戏规则的事物;您…...

火语言RPA流程组件介绍--键盘按键

&#x1f6a9;【组件功能】&#xff1a;模拟键盘按键 配置预览 配置说明 按键 点击后,在弹出的软键盘上选择需要的按键 执行后等待时间(ms) 默认值300,执行该组件后等待300毫秒后执行下一个组件. 输入输出 输入类型 万能对象类型(System.Object)输出类型 万能对象类型…...

数值分析—数值积分

研究背景 积分的数学解法为牛顿莱布尼兹公式&#xff0c;数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫ab​f(x)dxF(b)−F(a)&#xff0c;但应用该方法有如下困难&#xff1a; 1&#xff0c; f ( x ) f(x) f(x)的原函数有时不能用初等函…...

Next.js优化教程:优化字体加载

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 更多有关Next.js教程&#xff0c;请查阅&#xff1a; 前言 1. 字体加载的常见问题 1.1 什么是 FOIT 和 FOUT&#xff1f; 1.2 字体优化的核心目标 2. Next.js 字体优…...

功能篇:springboot中全局异常

在Java应用程序中实现全局异常处理是确保应用健壮性和用户体验良好性的重要一步。通过全局异常处理&#xff0c;你可以集中管理所有未捕获的异常&#xff0c;并以统一的方式响应它们。对于Web应用程序&#xff08;如使用Spring框架的应用&#xff09;&#xff0c;通常会创建一个…...

【go 】 select case 的用法

文章目录 1. 基本使用&#xff1a;监听多个通道&#xff0c;会阻塞2.带默认分支&#xff1a;非阻塞操作3. 永远监听多个通道4. 超时机制5. 关闭通道的处理6. context的关闭判断 相关文章&#xff1a; 【go】select 语句case的随机性 【go】 select case 超时机制(time.After)示…...

出海服务器可以用国内云防护吗

随着企业国际化进程的加速&#xff0c;越来越多的企业选择将业务部署到海外服务器上&#xff0c;以便更贴近国际市场。然而&#xff0c;海外服务器也面临着来自全球各地的安全威胁和网络攻击。当出海服务器遭受攻击时&#xff0c;是否可以借助国内的云服务器来进行有效的防护呢…...

前端权限控制

前端权限控制 一、路由权限&#xff08;控制页面访问&#xff09; vue // router.js const routes [{path: /dashboard,name: Dashboard,component: () > import(/views/Dashboard.vue),meta: { requiresAuth: true, roles: [admin, manager] }},{path: /user,name: Use…...

计算机组成原理(二):指令跳转

指令跳转&#xff08;Instruction Jump&#xff09;是计算机程序控制流的重要组成部分&#xff0c;通过改变程序的执行顺序实现循环、条件分支和函数调用等功能。 基本概念 跳转指令主要用来修改**程序计数器&#xff08;Program Counter, PC&#xff09;**的值&#xff0c;使…...

LoViT: 用于手术阶段识别的长视频Transformer|文献速递-生成式模型与transformer在医学影像中的应用

Title 题目 LoViT: Long Video Transformer for surgical phase recognition LoViT: 用于手术阶段识别的长视频Transformer 01 文献速递介绍 快速发展的手术数据科学&#xff08;SDS&#xff09;领域旨在通过先进利用手术室&#xff08;OR&#xff09;内医疗设备采集的数据…...

【传感器技术】第4章 力敏传感器,弹性敏感元件的基本特性,应变式压力传感器,电阻应变片的温度补偿,压阻式压力传感器,压电式压力传感器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...

linux之vim

一、模式转换命令 vim主要有三种模式&#xff1a;命令模式&#xff08;Normal Mode&#xff09;、输入模式&#xff08;Insert Mode&#xff09;和底线命令模式&#xff08;Command-Line Mode&#xff09;。 从命令模式切换到输入模式&#xff1a;i&#xff1a;在当前光标所在…...

【LeetCode】每日一题 2024_12_9 判断国际象棋棋盘中一个格子的颜色(找规律)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 题目&#xff1a;判断国际象棋棋盘中一个格子的颜色 最近力扣一直在出棋盘类的题目&#xff0c;这个月已经出了 9 天了&#xff0c;我倒要看看他是不是真能出一个月 代码与解题思路 先读题&#xff1a;题…...

HCL虚拟环境搭建并且支持ssh远程访问

1.连接设备 新建设备和host主机&#xff0c;连线&#xff0c;host主机选择本地网卡&#xff08;不选host-only网卡&#xff09; 2.启动设备&#xff0c;打开终端&#xff0c;按ctrlc 3.执行命令 <H3C>system-view [H3C]int g0/0 [H3C-GigabitEthernet0/0]ip address …...

批量验证指定漏洞思路和流程

免责申明 本文仅是用于学习研究POC的地址收集与漏洞验证原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》【学法时习之丨网络安全在身边一图了解网络安…...

首次打开韦东山提供的Ubuntu-18.04镜像后,该做哪些事?

目录 01-测试有无网络02-配置最基本的嵌入式开发环境(安装tftp-nfs等)03-缩短关机强制结束进行时间04-关闭软件的自动更新05-未完待续... 01-测试有无网络 ping www.baidu.com 02-配置最基本的嵌入式开发环境(安装tftp-nfs等) 需要安装 tftp&#xff0c;nfs&#xff0c;vim …...

怎么才能让图片不能转发截图保存

发私密图片给好友又担心被截图保存甚至转发给第三人&#xff1f;有没有办法让发出去的图片不能转发、截图、保存&#xff1f;当然有&#xff01;今天教你一招&#xff0c;并且对方打开不需要下载任何软件&#xff0c;发出去对方点开就能看。 操作步骤 如何发送这样限制截图的图…...

设计模式-装饰器模式(结构型)与责任链模式(行为型)对比,以及链式设计

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1.装饰器模式1.1概念1.2作用1.3应用场景1.4特点1.5类与对象关系1.6实现 2责任链模式2.1概念2.2作用2.3应用场景2.4特点2.5类与对象关系2.6实现 3.对比总结 前言…...

outlook软件配置邮箱提示“到邮件服务器的加密连接不可用”

outlook软件配置邮箱提示“到邮件服务器的加密连接不可用” 问题描述&#xff1a; outlook软件里邮箱提示“已断开”或配置邮箱时提示“到邮件服务器的加密连接不可用”。 解决方案&#xff1a; 一、更改注册表&#xff08;可先导出备份&#xff09; winr&#xff0c;输入re…...

通过QT实现进度条随着读取文件增加

mythread循环给主线程发送信号实现主线程循环的功能 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QFile> #include <QFileDialog> #include <QTextStream> #include <QByteArray> #include "mythread.h"…...

构建高效可靠的分布式推理系统:深入解析控制器与模型服务的协同工作

在现代互联网应用中,随着用户需求的增长和技术的进步,单一服务器已经难以满足大规模并发请求的需求。为了提升系统的性能和可靠性,开发者们越来越多地采用分布式架构。本文将结合具体的代码示例,深入浅出地探讨如何构建一个高效的分布式推理系统,并详细解析其中的关键组件…...

洛谷B2082

数字统计 - 洛谷 数字统计 题目描述 请统计某个给定范围 [L,R] 的所有整数中&#xff0c;数字 2 出现的次数。 比如给定范围 [2,22]&#xff0c;数字2 在数 2 中出现了 1 次&#xff0c;在数 12 中出现 1 次&#xff0c;在数 20中出现 1次&#xff0c;在数 21 中出现 1 次&…...