目标检测论文阅读:FCOS算法笔记

标题:FCOS: Fully Convolutional One-Stage Object Detection
会议:ICCV2019
论文地址:https://ieeexplore.ieee.org/document/9010746/
这篇文章是anchor-free模型的代表作,网络结构很简单。相比于anchor-based算法,FCOS和语义分割任务一样,逐像素预测,并对以此带来的问题分别提出解决方案。尤其是其中对正负样本进行划分的策略,也是后来很多算法的设计基础。但是读完文章后感觉还是要结合代码来加深理解,很多细节还是一知半解。

Abstract

本文提出了一种全卷积单阶段目标检测器(FCOS),以逐像素预测的方式解决目标检测问题,类似于语义分割。几乎所有的SOTA目标检测器,如RetinaNet、SSD、YOLOv3和Faster R-CNN,都依赖于预定义的锚框。相比之下,我们提出的FCOS检测器是anchor-free和proposal-free的。通过消除预定义的锚框集合,FCOS完全避免了训练时和锚框有关的复杂的计算,比如计算overlapping。更重要的是,我们还避免了一切与锚框相关的超参数,这些超参数往往对最终的检测效果非常敏感。采用ResNeXt-64x4d-101的FCOS在仅有非极大值抑制(NMS)作为后处理的情况下,在单模型、单尺度测试中超越了此前的单阶段检测器,达到了44.7%AP,并具有更简洁的优势。我们首次展示了这样一个更简单灵活的检测框架可以实现更高的检测精度,希望所提出的FCOS框架可以作为一个简单而强大的替代方案用于很多其它实例级的任务。

1. Introduction

目标检测是计算机视觉中一项基本但具有挑战性的任务,它要求算法为图像中每个感兴趣的实例预测一个具有类别标签的边界框。目前主流的检测器,如Faster R-CNN、SSD和YOLOv2、YOLOv3等,都依赖于一组预先定义的锚框,这些锚框的使用一直被认为是检测器成功的关键。尽管它们取得了巨大的成功,但值得注意的是,基于锚框的检测器存在一些缺陷:①检测性能对锚框的大小、长宽比和数量十分敏感。例如,RetinaNet在COCO基准上改变这些超参数造成的性能影响高达4%AP。因此,anchor-based检测器需要把这些超参数仔细微调。②即使在精心设计的情况下,由于锚框的尺寸和纵横比保持不变,检测器在处理形状变化较大的候选目标时也会遇到困难,尤其是小目标。预定义的锚框也阻碍了检测器的泛化能力,因为它们需要在那些目标大小或长宽比不同的新检测任务上重新设计。③为了达到较高的召回率,anchor-based检测器需要在输入图像上密集地设置锚框(例如,对于较短边为800的图像,特征金字塔网络(FPN)中有超过180K个锚框)。这些锚框在训练时大多被标记为负样本。负样本数量过多加剧了训练时正负样本的不平衡。④锚框还牵扯到复杂的计算,如计算锚框与真值框的IoU。
最近,全卷积网络(FCNs)在语义分割、深度估计、关键点检测和计数等稠密预测任务中取得了巨大的成功。作为高级视觉任务之一,目标检测可能是唯一一个偏离了纯全卷积逐像素预测框架的任务,这主要是因为锚框的使用。自然而然会提出这样一个问题:我们是否可以以纯像素预测方式来解决目标检测问题,就像FCN用于语义分割一样?这样一来,这些基本的视觉任务可以统一在(几乎)单一的框架中。我们要说,答案是肯定的。此外,我们首次证明了,这种更简单的、基于FCN的检测器,比基于锚框的检测器具有更好的性能。
许多工作尝试利用FCNs-based框架进行目标检测,如DenseBox。具体来说,这些FCN-based框架直接在特征图级别的每个空间位置直接预测一个4D向量和一个类别。如图1左所示,这个4D向量表示bbox四个边和位置的相对偏移。这些框架与用于语义分割的FCNs相似,只不过每个位置都需要回归一个4D的连续值向量。然而,为了处理不同大小的边界框,DenseBox对训练图像进行裁剪,将其调整到固定的尺寸。因此DenseBox需要对图像金字塔进行检测,这违背了FCN一次计算所有卷积的初衷。此外,更重要的是,这些方法主要用于特殊领域的目标检测,如场景文本检测和人脸检测,因为人们认为这些方法在用于具有高度重叠边界框的通用目标检测时效果不佳。如图1右所示,高度重叠的边界框会导致一种棘手的歧义:对于重叠区域中的像素,不清楚要回归哪个边界框。
在这里插入图片描述
在后文,我们进一步研究了这个问题,并证明使用FPN可以在很大程度上消除这种歧义。因此,我们的方法已经可以获得与传统的anchor-based检测器相当的检测精度。此外,我们观察到我们的方法可能会在远离目标物体中心的位置产生一些低质量的预测边界框。为了抑制这些低质量的检测,我们引入了一个新的“center-ness”分支(只有一层)来预测像素与其相应边界框中心的偏移,如公式3所示。然后使用该值对低质量检测边界框进行降权,并将检测结果整合到NMS中。简单而有效的center-ness分支使得FCN-based检测器在完全相同的训练和测试设置下优于anchor-based检测器。
这种新的检测框架具有以下优点。

  • 目标检测现在和用许多其它用FCN解决的任务(如语义分割)统一了,使得重用这些任务中的idea变得更加容易。
  • 目标检测变得proposal-free和anchor-free,大大减少了设计参数的数量。设计参数通常需要启发式调优,并且涉及许多实现良好的性能的技巧。因此,我们的新检测框架使检测器变得非常简单,尤其是在它的训练过程。
  • 通过消除锚框,我们的新检测器在训练时完全避免了与锚框相关的复杂计算,如计算锚框与真值框之间IoU和匹配,从而比anchor-based检测器具有更快的训练和测试速度以及更少的训练内存占用。
  • 不加修饰下,我们在单阶段检测器中取得了SOTA结果。我们还表明FCOS可以用作两阶段检测器中的区域建议网络(RPN),并且能获得显著优于anchor-based RPN的性能。鉴于更简单的anchor-free检测器性能更好,我们鼓励community重新思考锚框在目标检测中的必要性,而这些锚框目前被认为是目标检测的de facto。
  • 本文提出的检测器可以快速扩展,以最小的改动来解决其他视觉任务,包括实例分割和关键点检测。我们相信这种新方法可以成为许多实例级预测问题的新baseline。

2. Related Work

Anchor-based检测器。 介绍了一些sliding window/proposal的方法,以及随之诞生的anchor-based方法,指出了他们的缺陷。
Anchor-free检测器。 说明了YOLOv1、CornerNet等工作的缺陷,并指出FCOS可以缓解这些问题,取得比anchor-based方法更好的性能。

3. Our Approach

在本节,我们首先以逐像素预测的方式重新建模目标检测。接下来,我们展示了如何利用多层预测来提高召回率和解决重叠边界框导致的歧义。最后,我们提出“centerness”分支,它有助于抑制低质量检测边界框,并可以极大地提高整体性能。

3.1. Fully Convolutional One-Stage Object Detector

F i F_{i} Fi表示主干CNN的第i层特征图,s是到这一层的总步长。一幅输入图像的真值框可以定义为 B i {B_{i}} Bi,其中 B i = ( x 0 ( i ) , y 0 ( i ) , x 1 ( i ) , y 1 ( i ) , c ( i ) ) B_{i}=(x_{0}^{(i)},y_{0}^{(i)},x_{1}^{(i)},y_{1}^{(i)},c^{(i)}) Bi=(x0(i),y0(i),x1(i),y1(i),c(i))。这里, ( 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是类别数,COCO数据集中该值为80。
对于特征图 F i F_{i} Fi上的每一个位置 ( x , y ) (x,y) (x,y),我们可以用 ( ⌊ s 2 ⌋ + x s , ⌊ s 2 ⌋ + y s ) (\left \lfloor \frac{s}{2}\right \rfloor+xs,\left \lfloor \frac{s}{2}\right \rfloor+ys) (2s+xs,2s+ys)来将其映射回输入图像,其靠近位置 ( x , y ) (x,y) (x,y)的感受野中心。不同于anchor-based检测器,他们把输入图像上的位置当做(多个)锚框的中心,并把与以这些锚框为参考回归目标边界框,我们直接对该位置的目标边界框进行回归。换句话说,我们的检测器直接把每个位置当做训练样本,而不是anchor-based检测器中的锚框,这和用于语义分割的FCN类似。
具体来说,如果某个位置 ( x , y ) (x,y) (x,y)落在任一真值框里,那么就将其视为正样本,并且该真值框的类别即为该位置的类别 C ∗ C^{*} C。否则,将其视为负样本,并且 C ∗ = 0 C^{*}=0 C=0(背景类)。除了用于分类的标签,我们还有一个4D实数向量 t ∗ = ( l ∗ , t ∗ , r ∗ , b ∗ ) \boldsymbol{t}^{*}=(l^*,t^*,r^*,b^*) t=(l,t,r,b)作为该位置的回归目标。这里的四个值分别是该位置到边界框四条边的距离,如图1左所示。如果某个位置落入多个边界框中,则认为它是一个模糊样本。我们简单地选择面积最小的边界框作为其回归目标。下一节我们将证明,通过多层预测,模糊样本的数量将显著减少,从而使其几乎不影响检测性能。如果某个位置 ( x , y ) (x,y) (x,y)与某个边界框 B i {B_{i}} Bi相关,那么该位置的训练回归目标可以表示为:
在这里插入图片描述
值得注意的是,FCOS可以利用尽可能多的前景样本来训练回归器。与anchor-based检测器不同,它们只考虑与真值框IoU足够高的锚框作为正样本。我们认为这可能是FCOS优于anchor-based方法的原因之一。
**网络输出。**对于训练目标,网络的最后一层会预测一个80D的分类标签向量 p \boldsymbol{p} p和一个4D的边界框坐标向量 t = ( l , t , r , b ) \boldsymbol{t}=(l,t,r,b) t=(l,t,r,b)。我们会训练 C C C个二分类器。我们在主干网络的特征图之后增加了四个卷积层,分别用于分类和回归分支。此外,由于回归目标始终是正数,我们在top回归分支使用 e x p ( x ) exp(x) exp(x)来把所有实数映射到 ( 0 , ∞ ) (0,\infty) (0,)。值得注意的是,FCOS比主流的、每个位置有9个锚框的anchor-based检测器的网络输出变量要少9倍。
损失函数。 我们用下式定义训练时的损失函数:
在这里插入图片描述
推理阶段。 FCOS的推理阶段很简单。给定输入图像,直接经过网络,对特征图 F i F_{i} Fi的每个位置得到其分类分数 p x , y \boldsymbol{p}_{x,y} px,y和回归预测 t x , y \boldsymbol{t}_{x,y} tx,y。我们选择 p x , y > 0.05 {p}_{x,y}>0.05 px,y>0.05的位置作为正样本,然后通过求解式1得到预测的边界框。

3.2. Multi-level Prediction with FPN for FCOS

下面我们展示如何通过FPN的多层预测来解决FCOS的两个潜在问题。①CNN最后一层特征图的大步长(如16×)会导致相对较低的最佳可能召回率(BPR,检测器所能达到的召回率的上界)。对于anchor-based检测器,这个问题可以通过降低正锚框所需的IoU分数来弥补。对于FCOS,人们乍一看可能会觉得其BPR会比anchor-based检测器低得多,因为它不可能对一个,由于大步长导致在最终特征图上没有位置编码的对象进行回归。这里我们通过实验表明,即使是较大的步长,FCN-based的FCOS仍然能够产生良好的BPR,甚至优于官方实现的anchor-based检测器RetinaNet的BPR。因此,BPR对FCOS来说不是问题。此外,通过多层FPN预测,可以进一步提高BPR,达到anchor-based的RetinaNet所能达到的最佳BPR。②真值框的重叠会导致难以避免的歧义,即处于重叠部分的位置应该回归哪一个边界框?这种模糊性会导致FCN-based检测器性能下降。在本文,我们表明这种模糊性可以通过多层预测得到极大的解决,并且FCN-based检测器可以获得与anchor-based检测器相同甚至更好的性能。
根据FPN,我们用不同层的特征图检测不同尺寸的物体。具体来说,我们用5层特征图,定义为 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_3 P3 P 4 P_4 P4 P 5 P_5 P5是由主干CNN的 C 3 C_3 C3 C 4 C_4 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_3 P3 P 4 P_4 P4 P 5 P_5 P5 P 6 P_6 P6 P 7 P_7 P7步长分别是8,16,32,64和128。
在这里插入图片描述
不同于anchor-based检测器,它们将不同尺寸大小的锚框分配到不同层特征上,我们直接限制每一层边界框回归的范围。具体来说,首先我们计算每个位置在所有特征层上的回归目标 l ∗ l^* l t ∗ t^* t r ∗ r^* r b ∗ b^* b。接着,如果某个位置满足 m a x ( l ∗ , t ∗ , r ∗ , b ∗ ) > m i max(l^*,t^*,r^*,b^*)>m_i max(l,t,r,b)>mi或者 m a x ( l ∗ , t ∗ , r ∗ , b ∗ ) < m i − 1 max(l^*,t^*,r^*,b^*)<m_{i-1} max(l,t,r,b)<mi1,那么就将其设为负样本,不再需要对边界框进行回归。其中 m i m_i mi是第i层特征需要回归的最大距离。在本文中, m 2 m_2 m2 m 3 m_3 m3 m 4 m_4 m4 m 5 m_5 m5 m 6 m_6 m6 m 7 m_7 m7 分别设置为 0 0 0 64 64 64 128 128 128 256 256 256 512 512 512 ∞ \infty 。这样,不同大小的物体被分配到不同的特征层,并且大多数重叠发生在不同大小的物体之间。如果某个位置,即使使用了多层预测,仍然被分配给多个真值框,那么我们简单地选择面积最小的真值框作为它的目标。实验表明,多层预测可以在很大程度上缓解上述模糊性问题,并将FCN-based检测器提高到与anchor-based检测器相同的水平。
最后,我们在不同特征层之间共享头部,不仅使检测器参数高效,而且提高了检测性能。然而,不同特征层需要回归不同的尺寸范围(比如, P 3 P_3 P3的尺寸范围是 [ 0 , 64 ] [0,64] [0,64] P 4 P_4 P4的尺寸范围是 [ 64 , 128 ] [64,128] [64,128]),因此对不同的特征层使用相同的头是不合理的。因此,我们不再使用标准的 e x p ( x ) exp(x) exp(x),而是使用带有可训练标量 s i s_i si e x p ( s i x ) exp(s_ix) exp(six)来自动调整 P i P_i Pi层指数函数的底数,使得检测性能略有提升。

3.3. Center-ness for FCOS

在FCOS使用多层预测后,其和anchor-based之间仍然存在性能差距。这是由于距离物体中心较远的位置产生了大量低质量的预测边界框。
在这里插入图片描述
我们在不引入任何超参数的情况下提出了一种简单高效的方式来抑制这些低质量检测边界框。具体来说,我们增加了一个单层分支,与分类分支并行(如图2所示),来预测一个位置的“中心性”(实际上与回归分支并行能取得更好的效果,不过除非特殊说明,本文仍使用图2的方式)。中心度描述了某个位置到该位置所负责对象的中心的归一化距离,如图3所示。给定该位置的回归目标 l ∗ l^* l t ∗ t^* t r ∗ r^* r b ∗ b^* b,其定义如下:
在这里插入图片描述
我们在这里使用二次根式来缓解中心性的衰减。中心度范围是0到1,因此使用二进制交叉熵(BCE)损失进行训练,加入到式2的损失函数中。在测试时,最终得分(用于对检测到的边界框进行排序)是通过将预测的中心度与对应的分类得分相乘得到。因此,中心度可以降低距离物体中心较远的边界框的得分。因此,这些低质量边界框很可能会被最后的非极大值抑制(NMS)过程筛选掉,从而显著提高检测性能。中心性的一种替代方法是仅使用真值框中心附近的部分作为正样本,这样做的代价是会额外增加一个超参数。事实上,将这两种方式结合可以获得更好的性能,如表3所示。

4. Experiments

实验细节可参考原文。

4.1. Ablation Study

在这里插入图片描述
采用FPN多层预测可以极大地避免BPR低和模糊样本的问题,具体的实验结论可以参照原文。
在这里插入图片描述
与anchor-based方法的对比,具体的实验结论可以参照原文。
在这里插入图片描述
中心度带来的性能提升,具体的实验结论可以参照原文。

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

在这里插入图片描述
和SOTA的对比,具体的实验结论可以参照原文。

5. Extensions on Region Proposal Networks

在这里插入图片描述
作为RPN的替代效果同样出色,具体的实验结论可以参照原文。

6. Conclusion

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Frankenstein@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值