【目标检测】FCOS: Fully Convolutional One-Stage Object Detection
原始题目:FCOS: Fully Convolutional One-Stage Object Detection
中文翻译:FCOS: 全卷积 One-Stage 目标检测
发表时间:2019年4月2日
平台:arXiv
来源: 澳大利亚 阿德莱德大学
文章链接:https://arxiv.org/abs/1904.01355
开源代码:https://github.com/tianzhi0549/FCOS (官方实现)
https://github.com/open-mmlab/mmdetection
摘要
我们提出了一个 全卷积的一阶段目标检测器(FCOS),以 逐像素(per-pixel)预测的方式 解决目标检测问题,类似于语义分割。
几乎所有先进的目标检测器,如RetinaNet、SSD、YOLOv3 和 Faster R-CNN,都依赖于预定义的 anchor 框。相比之下,我们提出的检测器 FCOS
是 anchor box free ,也是 proposal free 。
FCOS 通过去掉预定义的 anchor boxes 集合,完全避免了训练过程中与 anchor boxes 相关的复杂计算,如 在训练中计算 overlapping 。更重要的是,我们还避免了所有与 anchor boxes 相关的超参数,对于最终检测性能来说,这些超参数往往非常敏感。在仅使用 非极大值抑制(NMS) 作为后处理方法的情况下,使用 ResNeXt-64x4d-101 作为 backbone 的 FCOS 在单模型、单尺度测试下 AP 中达到 44.7% ,优于以往的 一阶段检测器 的同时也简单得多。我们论证了一个更简单灵活的检测框架,用以提高检测的精度。我们希望所提出的 FCOS框架 可以作为其他实例级任务的简单而强效的替代方案。
1. 引言
目标检测是计算机视觉中一项基础而又具有挑战性的任务,它要求算法对图像中每个感兴趣的实例预测出一个带有类别标签的边界框。
目前主流的所有检测器,如Faster R-CNN, SSD和YOLOv2, v3,都依赖于一组预定义的 anchor boxes ,这长期以来被人们认为是检测器成功的关键。尽管取得了巨大的成功,但值得注意的是,基于 anchor box 的检测器也存在一些缺陷:
1)检测性能对 anchor boxes 的大小、长宽比和数量非常敏感。例如,在RetinaNet中,改变这些超参数对 COCO benchmark 上的性能AP影响高达 4%。因此,这些超参数需要在 anchor-based 的检测器中仔细调整。
2)即使经过精心设计,由于 anchor boxes 的尺度和长宽比保持不变,检测器在处理形状变化较大的候选物体,特别是对于小物体时,会遇到困难。 预先定义的 anchor boxes 还阻碍了检测器的泛化能力,因为它们需要在新的检测任务中重新设计不同的物体大小或长宽比。
3)为了达到高召回率,基于 anchor-based 的检测器需要在输入图像上密集放置 anchor boxes (例如在特征金字塔网络(feature pyramid networks FPN)中,对于短边为 800 的图像,anchor boxes 数量超过180K)。在训练过程中,大多数 anchor boxes 都被标记为负样本。过多的负样本会加剧训练过程中正负样本间的不平衡。
4)anchor boxes 还涉及到复杂的计算,如计算与 ground-truth bounding boxes 的IOU值。
近年来,全卷积网络在语义分割、深度估计、关键点检测和计数等密集预测任务中取得了巨大成功。目标检测作为高级视觉任务之一,由于 anchor boxes 的使用,可能是唯一偏离整洁的全卷积逐像素预测的任务框架。自然会问一个问题:我们能不能用精确的逐像素预测方式来解决目标检测问题,使之类似于语义分割问题的 FCN 网络?从而使得这些基本视觉任务可以统一成单一的框架。答案是肯定的。此外,我们还首次证明,更简单的基于 FCN 的检测器会比基于s anchor-based 的获得更优的性能。
在文献中,一些工作试图利用基于 FCNs 的框架进行对象检测,如 DenseBox。特别是这些基于 FCN 的框架直接预测了特征图中每个空间位置的 4 维向量和类别标签。如图1(左)所示,4 维向量描述了边界框的四个边到像素位置的相对偏移量。这些框架除了每个位置需要回归一个4维 的连续向量外,类似于用于语义分割的 FCNs 。然而,为了处理不同大小的 bounding boxes,DenseBox 要将训练图像裁剪和调整为固定尺度。因此 DenseBox 必须对图像金字塔的图片进行检测,这违背了 FCN 的一次计算所有卷积的理念。此外更重要的是,这些方法主要用于特殊领域的目标检测,如文本或人脸的检测场景,因为这些方法被认为在用于对 bounding boxes 高度重叠的通用目标进行检测时的效果不佳。如图1(右)所示,高度重叠的边界框导致一个棘手的歧义:对于重叠区域中的像素,不清楚要回归于哪个边界框。
图1 -如左图所示,FCOS通过预测一个4D向量\((l, t, r, b)\)来编码每个前景像素的边界框的位置(在训练过程中由 ground-truth 边界框信息监督)。右边的图表明,当一个位置位于多个边界框中时,在该位置应该 回归哪个边界框方面可能存在歧义 。
后续中我们仔细研究了这个问题,并表明在 FPN 中这种歧义性很大程度上被消除。该方法已经取得了与传统 anchor based 的检测器相同的检测精度。此外,我们观察到我们的方法可能在远离目标对象中心的位置产生大量的低质量预测边界框。为了抑制这些低质量的检测,我们引入一个新的 “center-ness” 分支来预测像素与其对应的边界框中心的偏差。该得分用于减少低质量检测边界框的比重和用于在 NMS 中对检测结果进行合并。简单而有效的“center-ness” 分支使得基于 FCN 的检测器在完全相同的训练和测试设置下优于 anchor-based 的检测器。
这种新的检测框架具有以下优点:
- 现在检测可以与许多 FCN 可解决的任务(如语义分割)统一起来,使得对这些任务中的想法重用变得更容易。
- 检测变成了 proposal free 和 anchor free, 这大大减少了设计参数的数量。设计参数时为了获得良好的性能通常需要启发式调优并使用许多技巧。因此,新的检测框架使得检测器,尤其是它的训练过程,变得相当简单。
- 通过去除 anchor boxes 的使用,新检测器完全避免了与 anchor boxes 相关的复杂计算,如 IOU计算 和训练过程中 anchor boxes 与 ground-truth boxes 之间的匹配,与 anchor-based 的同类网络相比,它的训练和测试速度更快,训练时内存占用更少。
- 不吹不黑,我们在一阶段检测器中实现了最优结果。同时提出的 FCOS 可以作为区域提议网络(Region Proposal Networks --RPN)在两阶段检测器中使用,并明显优于 anchor-based 同类 RPN 网络。考虑到更简单的 anchor-free 检测器具有更好的性能,我们鼓励大家重新考虑目标检测中 anchor boxes 的必要性,目前它被认为是检测的标准。
- 该检测器只需要极小的修改就可以快速扩展到解决其他视觉任务,包括实例分割和关键点检测。相信这种新方法可以成为许多实例范围预测的问题的新 baseline 。
2. 相关工作
Anchor-based 检测器. Anchor-based 检测器继承了 传统 sliding-window 和 proposal based 检测器的思想,如 Fast R-CNN。
在 Anchor-based 检测器中,anchor boxes 可以被视为预定义的 sliding windows 或proposals ,并将其分类为正负类别,通过额外的 offsets regression 来修正对 边界框位置的预测。因此,这些检测器中的 anchor boxe 可以看作是训练样本
。与之前的检测器(如 Fast RCNN )不同,Fast RCNN 对每个 sliding window/proposal 进行图像特征的重复计算,而 anchor boxe 直接利用了 CNNs 的特征图,避免了重复的特征计算,大大加快了检测过程。anchor boxe 的设计通过 Faster R-CNN 的 RPNs 阶段, 在 SSD 和 YOLOv2 得到推广,并已成为现代检测器的约定俗成的技巧。
然而,如上所述,anchor boxes 导致过多的超参数,为了获得良好的性能,这些参数通常需要仔细地调优。除了以上描述 anchor 形状的超参数外,Anchor-based 检测器还需要其他超参数来将每个 anchor box 标记为 正、忽略或负样本。在之前的工作中,经常通过 anchor box 和 ground-truth 框之间进行 iou 计算来确定 anchor box 的类别(例如,如果其IOU位于[0.5,1],则为正样本)。这些超参数对最终精度有很大的影响,并需要启发式(heuristic)调优。同时,这些超参数是针对检测任务的,使得检测任务偏离了语义分割等其他密集预测任务使用的整洁的全卷积网络架构。
Anchor-free 检测器 最流行的 Anchor-free 检测器可能是 YOLOv1
。YOLOv1 没有使用 anchor boxes ,而是预测 靠近目标中心的点上的 bounding boxes 。只有靠近中心的像素点会被使用,因为它们被认为能够产生更高质量的检测结果。但是,由于只使用靠近中心的点来预测检测框,YOLOv1 的召回率如 v2 中所述很低。因此,YOLOv2
也使用了 anchor boxes 。与 YOLOv1 相比,FCOS
利用 a ground truth bounding box 中的所有点来预测 bounding boxes,同时提出的 “center-ness” 分支 对检测到的低质量检测框进行抑制。因此,FCOS能够提供与 anchor-based 检测器堪比的召回率。
CornerNet
是最近提出的一种一阶段 Anchor-free 检测器,它检测 a bounding box 的一对 corners ,并将它们分组形成最终检测到的边界框。CornerNet 需要更加复杂的后处理来对属于同一实例的 corners对 进行分组。为了分组的目的,还需要学习额外的距离度量。
另一类 Anchor-free 检测器是基于 DenseBox
的。由于该类检测器难以处理重叠的边界盒,且召回率相对较低,因此被认为不适用于一般的目标检测。在这项工作中,我们证明了 多层次的FPN(multi-level FPN) 预测可以在很大程度上缓解这两个问题。此外,提出的 center-ness 分支也表明,简单得多的检测器可以实现比 Anchor-based 同类检测器更好的检测性能。
3. 我们的方法
在本节中,
首先用逐像素预测的方式重构了目标检测器。
接下来,展示了如何利用 multi-level 预测来提高召回率、解决边界框重叠导致的歧义性。
最后,提出了 “centerness” 分支,它有助于抑制低质量检测框,并大大提高了整体性能。
3.1. 全卷积单阶段目标检测器
-
设 \(F_i ∈ R^{H×W×C}\) 为 backbone CNN 的第 i 层特征图,\(s\) 为直到该层的总 stride 。
-
一张输入图像的 ground-truth 边界框定义为 \(\{B_i\}\) ,其中 \(B_i = (x^{(i)}_0, y^{(i)}_0, x^{(i)}_1, y^{(i)}_1, c^{(i)})∈R^4 ×\{1, 2 ... C\}\) 。这里 \((x^{(i)}_0, y^{(i)}_0)\) 和 \((x^{(i)}_1, y^{(i)}_1)\) 表示边界框的左上角和右下角的坐标。 c^{(i) 是检测框中的目标所属的类。C为类别数量,如 MS-COCO 数据集的类数为80。
对于特征图 \(F_i\) 上的每一个位置 \((x,y)\),我们可以将该位置映射到输入图像的\((\left \lfloor \frac{s}{2} \right \rfloor + xs, \left \lfloor \frac{s}{2} \right \rfloor + ys)\) 位置,该位置在 \((x,y)\) 的感受野的中心附近。
假设输入图像是 100100, s = 10, 特征图大小就是 1010, 对于特征图上 (5,5) 位置的点,映射到原图中就是 10/2 + 510 = 55, 特征图上的一个点对应原图 1010 的区域, 映射的到原图上的位置就是 这块区域附近的 (55, 55)。显然这里如果不加 s/2 ,那就是区域的左上角点。
可参考:
https://blog.csdn.net/lt1103725556/article/details/117306030
anchor-based 检测器将输入图像上的位置作为(多个) anchor boxes 的中心,并以这些 anchor boxes 作为参考对目标检测盒进行回归。与之不同的是,我们直接在该位置回归目标检测盒。换句话说,检测器直接将位置视为训练样本,而不是采用 anchor-based 检测器中的 anchor boxes 。
具体来说(Specifically),如果 位置 (x, y) 落入任何 ground-truth 框内,且 该位置的类标签 \(c*\) 是标ground-truth 的类标签,则将其视为正样本。否则为负样本,且 \(c* = 0\) (背景类)。除了分类的标签,我们还有一个 4D 实向量 \(t^*=(l^*,t^*,r^*,b^*)\) 作为该位置的回归目标。其中 l、t、r、b 为该位置到边界框四边的距离,如图1(左)所示。如果一个位置落入多个边界框,认为是歧义样本。我们简单地选择面积最小的边界框作为其回归目标。在下一节中,将展示使用 multi-level 预测,可以显著减少歧义样本的数量,因此它们几乎不会影响检测性能。公式化,如果 位置 (x, y)与一个边界框 \(B_i\) 相关联,则该位置训练的回归目标可以表示为:
值得注意的是,FCOS 可以利用尽可能多的前景样本来训练回归器。它与 anchor-based 的检测器不同,后者只将与ground-truth boxes 具有IOU 值足够高的 anchor boxes 作为正样本进行考虑。我们认为,这可能是 FCOS 优于 anchor-based 的网络的原因之一。
网络输出 为了与训练目标相对应,网络的最后一层预测了一个分类标签 p 的 80维向量,和表示边界框坐标的4维向量\(t = (l, t, r, b)\)。与[15]类似, 我们不再训练 multi-class 分类器,取而代之训练 C个 二分类器。 我们在主干网络的特征映射后分别添加了 4个卷积层,用于分类和回归分支。此外,由于回归目标总是正的,我们在回归分支上使用 exp(x) 将任何实数映射到到 (0, ∞)之间。值得注意的是,相比于主流的 anchor-based 检测器在每个位置上生成 9 个 anchor boxes ,FCOS的网络输出变量 少 9 倍。
损失函数 我们定义训练损失函数如下:
其中 \(L_{cls}\) 是[15]中的 focal loss ;\(L_{reg}\) 是 UnitBox 的 IOU loss。 \(N_{pos}\) 表示正样本数,文中 λ 为1,是 \(L_{reg}\) 的平衡权重。求和的计算是在特征图 \(F_i\) 的所有位置, \(1_{\{c^*_i>0\}}\) 是 标志函数,如果 \(c^*_i>0\) 为 1 , 否则为 0。
推理 FCOS的推理很直接。给定一幅输入图像,通过网络 forward 该图像,对特征图 \(F_i\) 上每个点获得其对应的分类分数 \(p_{x,y}\) 和回归预测 \(t_{x,y}\) 。跟随[15],选取 \(p_{x,y}>0.05\) 的位置作为正样本,转换 公式1 后得出预测的边界框。
3.2 基于FPN的 FCOS Multi-level 预测
在这里,我们展示了提出的 FCOS 的两个问题是如何通过FPN多级预测来解决的。
1)在 CNN 中最终特征图的大 stride(如 16x) 可能导致相对较低的最佳可能召回率 (best possible recall (BPR)1) 。对于 anchor based 检测器,由于大 stride 而导致的低召回率可以通过降低 positive anchor boxes 所需的 IOU scores 在某种程度上进行补偿。而对于 FCOS ,乍一看可能会认为其 BPR 比 anchor-based 检测器低得多,因为它不可能召回一个由于大的 stride 而在最终特征图上没有对应位置的目标。但实验表明,即使是大 stride ,FCN-based 的 FCOS 仍有着良好的 BPR ,它甚至可以比Detectron 官方实现的 anchor-based 检测器 RetinaNet 的BPR更好(参考表1)。因此,FCOS 的 BPR 实际上不是大问题。此外,由于采用了 FPN multi-level 预测,BPR 进一步得到改进,达到 anchor-based 的RetinaNet 所能实现的最佳 BPR。
1 检测器所能达到的召回率的上限。
2)标注框的重叠可能会导致歧义问题,例如,重叠框中的位置应该回归到哪个边界框?这种歧义 导致 FCN-based 检测器性能的下降。在这项工作中,我们证明了通过 multi-level 预测可以极大地解决歧义问题,并且与 anchor-based 检测器相比,FCN-based 的检测器可以获得同等甚至更好的性能。
跟随 FPN,我们在不同 levels 的特征图上检测不同大小的物体。具体来说,我们利用了定义为 \(\{P_3, P_4, P_5, P_6, P_7\}\) 的五个 levels 的特征图。如 图2 所示,P3、P4、P5 由 backbone CNNs 的特征图 C3、C4、C5 组成,后面 自上而下 连接了 1 * 1 的卷积层。P6 和 P7 分别是在 P5 和 P6 上使用一个步长为2的卷积层生成的。结果表明,特征 levels :P3、P4、P5、P6和 P7 的 strides 分别为 8、16、32、64和128 。
图2 - FCOS的网络架构,其中 C3、C4和C5 表示 backbone 网的特征图,P3到 P7 是用于最终预测的特征 levels 。H × W 为特征图的高度和宽度。 '/s ' (s = 8,16,…, 128)为该层特征图与输入图像的下采样比。例如,所有的数字都是用 800 × 1024 的输入计算的。
不同于 anchor-based 检测器将不同大小的 anchor boxes 分配到不同的特征层,FCOS 直接限制每个 level 的 边界框的回归范围。具体来说,
- 首先计算所有特征层上每个位置的回归目标 \(l^*\)、\(t^*\)、\(r^*\)和\(b^*\) 。
- 接下来,如果某个位置满足 \(max(l^∗, t^∗, r^∗, b^∗) > m_i\) 或者 \(max(l^∗, t^∗, r^∗, b^∗) < m_{i-1}\) ,该位置将被设置为负样本,不再需要回归边界框。这里 \(m_i\) 是特征层 \(i\) 回归所需的最大距离。在本文中,\(m_2\)、\(m_3\)、\(m_4\)、\(m_5\)、\(m_6\)、\(m_7\) 分别设为0、64、128、256、512 和 ∞ 。因为不同大小的对象被分配到不同的特征层,且大多数重叠发生在大小不同的对象之间。那么如果一个位置即使使用 multi-level 预测,仍然被分配到多个标注框,则只需选择最小面积的标注框作为目标即可。实验表明, multi-level 预测可以很大程度上缓解上述的歧义性,并将 FCN-based 的检测器提高到与 anchor-based 检测器相同的水平。
最后和 [14][15]一样,在不同的特征层之间共享 heads ,不仅使检测器的参数高效,而且提高了检测性能。但是我们观察到不同的特征层需要回归不同的 size 范围(例如 P3 的 size 范围是[0,64],P4 的 size 范围是[64,128]),因此不同特征层使用同一个 heads 是不合理的。因此,不使用标准的 exp(x),而是使用带着一个可训练的标量 \(s_i\) 的 \(exp(s_ix)\) 来自动适应 特征层Pi 的指数函数的基数,这稍微提高了些检测性能。
3.3 FCOS 的 center-ness
在 FCOS 中采用 multi-level 预测后,FCOS 与 anchor-based 检测器的性能仍然存在差距。这是由于许多远离目标中心的位置产生的大量低质量的预测边界框造成的。
我们提出了一种简单有效的策略来抑制这些低质量的检测边界框,不用引入任何超参数。具体来说,我们添加了一个 单层分支 用以预测 当前位置 的 “center-ness” ,它与分类分支平行(如 图2 所示)2。center-ness 描述了从当前位置到该位置对应的目标中心 的 normalized 距离,如 图7 所示。给定一个位置的回归目标 \(l^∗, t^∗, r^∗, b^∗\),定义 center-ness 的目标为:
2 后面的研究表明,如果 center-ness 与回归分支并行,而不是与分类分支并行,则可改善 MSCOCO 上的 AP 。然而,除非指定,否则我们仍然使用 图2 中的配置。
我们使用根号减缓 center-ness 的衰减。center-ness 的取值范围为 0 到 1 ,因此采用 binary cross entropy (BCE) loss 进行训练。该损失添加到 公式2的 损失函数中。测试时,将预测的 center-ness 与对应的 classification score 相乘,计算出 最终得分(用于对检测到的边界框进行排序)。因此,center-ness 能够降低远离目标中心的边界框得分的权重。因此,这些低质量的边界框很有可能被最终的非极大值抑制(NMS)过程过滤掉,从而显著提高检测性能。
另一种替代 center-ness 方法是 只使用标注框的中心部分作为正样本,带来 额外增加一个超参数的代价。这两种方法的组合可以获得更好的性能。实验结果见表3。
4 实验
在大规模的检测基础数据集 COCO 上进行实验。遵循惯例,使用 COCO trainval35k 划分出来 (115K images) 用于训练, minival 划分出来 (5K images) 用于验证 来进行消融研究。我们将检测结果上传到评估服务器上,得出对 test_dev (20K images) 的主要结果。
训练细节 :
- backbone networks: resnet-50
- 超参数: 与 RetinaNet 相同 [15]
- 优化算法:SGD;
- initial learning rate: 0.01
- 学习率衰减: iteration 60K and 80K 减少 10x
- minibatch:16
- Weight decay: 0.0001
- momentum: 0.9
- backbone networks 初始化: ImageNet上预训练
- 新加的层的初始化:与 RetinaNet 相同 [15]
- 输入图像的大小: 短边为800,长边小于或等于1333
推理细节 :
- 首先通过网络对输入图像进行处理,得到带预测类别的预测边界框
- 之后的后处理与 RetinaNet 完全相同,直接使用 RetinaNet 相同的后处理超参数。
- 输入图像的大小:与训练中相同
假设如果仔细调整超参数,检测器的性能可能进一步提高。
4.1 消融研究
4.1.1 带 FPN 的 Multi-level 预测
如前所述,FCN-based 的检测器的主要问题是 低召回率 和 标注框重叠导致的歧义 样本 。在本节中,我们验证了通过 multi-level 预测可以在很大程度上解决这两个问题。
最佳召回率: FCN-based 的检测器首先要考虑的是可能无法获得良好的最佳召回率(BPR)。本节中,将说明该点无需考虑。BPR 定义为 检测器能 召回的标注框数量 除以所有标注框数量 的比值。训练时,如果标注框被分配给至少一个样本(即 在 FCOS 中的一个位置或者 在 anchor-based 检测器中的 一个 anchor box),则认为该标注框被召回。表1显示,仅使用步长为 16 的特征层P4 (无 FPN )时,FCOS 的 BPR 已经达到 95.55%。当 仅使用 IOU>=0.4 的低质量匹配时,BPR 远高于 Detectron 官方实现中 anchor-based 检测器 RetinaNet 的90.92% 的 BPR 。有了 FPN ,FCOS可以达到 98.40% 的BPR,非常接近 anchor-based 检测器在使用所有低质量匹配时所能达到的最佳 BPR。由于目前检测器的最佳召回率远低于 90% ,FCOS 与 anchor-based 检测器之间微小的 BPR 差距(小于1%)实际上不会影响检测器的性能。表3 也证实了这一点,在相同的训练和测试设置下,FCOS 比anchor-based 同类网络有更好的 AR 效果。因此,低 BPR 的问题并不重要。
歧义样本: FCN-based 检测器的另一问题是如图1(右)所示由于标注框重叠可能产生大量歧义样本。表2 显示了在 minival split 数据集中 歧义样本与所有正样本的比例。可以看出,如果不使用 FPN 只使用特征层 P4,确实存在大量歧义样本(23.16%)。然而当使用 FPN 时,由于大多数重叠对象被分配到不同的特征层,这个比例可以显著降低到 7.14%。此外,我们认为由于同类物体之间的重叠而产生的歧义样本并不重要。例如,如果同类对象A和B重叠,无论重叠部分的点预测哪个目标,预测结果都是正确的,因为它总归是与同类相匹配的。而遗漏物体可以通过其它只属于它的位置进行预测。因此,我们只计算不同类别的边界框间存在重叠的歧义样本。如表2所示,multi-level 预测将歧义样本的比例从 17.84% 降低到 3.75% 。为了进一步证明对于 FCN-based 的 FCOS 来说标注框的重叠不是问题,我们计算了推断时有多少检测边界框来自于歧义位置。发现只有 2.3% 检测边界框是由歧义位置产生的。进一步只考虑不同类别之间的重叠,比率降低到 1.5%。注意这并不意味着 FCOS 中有 1.5% 的点无用。如前所述这些位置会与最小面积的标注框相关联。因此,这些位置可能只会遗漏较大物体。从下面实验可以看出,FCOS并不比 anchor-based 检测器差。
4.1.2 有无 Center-ness
如前所述,提出 Center-ness 来抑制远离目标中心的位置产生的低质量检测边界框。如表4所示,Center-ness 分支可以将 AP 从 33.5% 提高到 37.1%,使得 anchor-free FCOS 优于 anchor-based RetinaNet(35.9%)。需要注意的是,anchor-based RetinaNet使用两个 IoU 阈值 将 anchor boxes 标记为正负样本,这有助于抑制低质量框的预测。而提出的 Center-ness 可以省略两个超参数。然而,同时使用 Center-ness 和阈值可以获得更好的性能,如表3中 “+ ctr. sampling” 行所示。Center-ness 也可以用预测的回归向量来计算,而不需引入额外的 center-ness 分支。但如 表4 所示,由回归向量计算出的 center-ness 并不能提高性能,因此需要单独的 center-ness 分支。
4.1.3 FCOS vs anchor-based 检测器
前面提到的 FCOS 与标准 RetinaNet 有两个细微的区别:
-
除最后预测层外,我们在新增加的卷积层中进行了Group Normalization(GN) ,使训练过程更加稳定。
-
使用 P5 层代替 RetinaNet 中的 C5 来生产 P6 和 P7 。我们观察到,使用P5可以略微提高性能。
为了证明FCOS可以作为 anchor-based 检测器简单高效的替代,出于公平比较原则,我们删除了 GN (梯度被剪切以防止梯度爆炸),并在检测器中也使用 C5。如 表3 所示,在完全相同的设置下,FCOS 仍然优于 anchor-based 检测器(36.3% vs 35.9%)。此外值得注意的是,我们直接使用了 RetinaNet 的所有超参数(如学习率、NMS阈值等),这些超参数已经针对 anchor-based 检测器进行了优化。通过对超参数进行优化,可以进一步提高 FCOS
的性能。
值得注意的是,如 表3 所示通过一些 cost-free 的改进,anchor-free 检测器的性能可以大幅提高。考虑到anchor-free 检测器的优越性能和优点(例如,比 anchor-based 检测器更简单和使用更少的超参数),我们鼓励大家重新考虑目标检测中 anchor boxes 的必要性。
4.2 与最先进检测器的比较
在 MS-COCO benchmark 的 test − dev split 集上对FCOS 与其他先进的目标检测器进行比较。实验的训练过程中随机缩放图像的较短边,范围为 640 ~ 800,并将迭代数量翻倍至 180K (学习率变化点按比例进行缩放)。其他设置与 表3 中 AP 为 37.1% 的模型完全相同。如 表5 所示,在使用 ResNet-101-FPN backbone 网络时,FCOS比使用相同情况下的 RetinaNet 的性能AP高出2.4%。据我们所知,这是首次 anchor-free 检测器的性能大大优于 anchor-based 检测器。FCOS的性能也大大优于其他经典的 anchor-based 的两阶段检测器如 Faster R-CNN 的性能。当使用 ResNeXt-64x4d-101-FPN 作为backbone 时,FCOS 的 AP 达到了 43.2%。性能大大超过了当下的 anchor-free 检测器CornerNet,且更加简单。因为 CornerNet 检测器需要使用 嵌入的向量进行对角分组, 这些向量需要专门设计。因此,FCOS更有可能成为当前主流的 anchor-based 检测器的简单高效的替代品。此外在单模型单尺度测试条件下,FCOS 经过 表3 中改进后,AP 达到44.7%,大大超过了以往的检测器性能。
5. Region Proposal Networks 的扩展
到目前为止,我们已经证明,单阶段检测器中 FCOS 可以达到比 anchor-based 同类检测器更好的性能。直观地说FCOS 还应该能够 替代 在两阶段检测器 Faster R-CNN 中的 带有 FPN 的 Region Proposal Networks
(RPNs) 中的 anchor boxes。在这里通过实验证实这一点。
相比于 带FPN的RPNs,用 FCOS 中的方法去替换 anchor boxes 。此外在 FPN heads 的卷积层中加入 GN 操作,使训练更加稳定。其他所有设置与官方代码中 带FPN的RPNs 完全相同。如 表6 所示,即使不使用 center-ness 分支 FCOS 也已经显著改善了 \(AR^{100}\) 和 \(AR^{1k}\) 指标。而通过提出的 center-ness 分支,FCOS 将 \(AR^{100}\) 和 \(AR^{1k}\) 分别提高到52.8%和60.3%,相对于 使用FPN的RPNs 来说,\(AR^{100}\) 相对提高了18%,而 \(AR^{1k}\) 绝对提高了3.4%。
附录
7. Class-agnostic Precision-recall 曲线
8. 可视化的 Center-ness
9. 定性结果
10. 更多的讨论
Center-ness vs. IoUNet:
BPR in Section 4.1 and ambiguity analysis:
Additional ablation study:
RetinaNet with Center-ness:
Positive samples overlap with RetinaNet:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现