论文阅读:《FCOS:Fully Convolutional One-Stage Object Detection》

在这里插入图片描述
CVPR 2019
论文链接:https://arxiv.org/pdf/1904.01355.pdf.

1 Background and Motivation

目标检测是一个基本的但是具有挑战性的计算机视觉任务,它要求算法使用 category label 对图像上感兴趣的实例预测一个bounding box 。

当前的主要的检测器都是基于预定义的 anchor box ,比如Faster R-CNN、SSD、andYOLOv2,v3,很长一段时间anchor box的使用已经被认为是检测器成功的关键。尽管基于 anchor box的方法取得了很大的成就,但是仍然存在一写缺点:
(1)目标检测性能对size、 aspect ratios 和 number of anchor boxes很敏感
(2)即使进行了很精心的设计,但是由于anchor box比例和长宽仍然是固定的,因此检测人员难以对付形状变化较大的对象,特别是对于小对象。而且anchor box也会影响检测器的泛化性能,因为不同任务下的目标尺寸和长宽不一样,这使得anchor box重新设计。
(3)为了实现高的召回率,输入图像上会放很多anchor box,这些anchor box一般会被定义为负样本,这会导致正负样本的不均衡问题。
(4)计算IOU时,anchor box也会占有复杂的计算和大量的内存资源。

一些文献中,试图来利用FCN框架来进行object detection,比如DenseBox。具体来说,这些基于FCN的框架可直接预测4D向量以及特征图水平上每个空间位置的类别。如下图
在这里插入图片描述
4D向量描述了从边界框的四个侧面到该像素位置的相对偏移。但是,还要处理具有不同大小的边界框,DenseBox 会将训练图像裁剪并调整为固定大小。这些方法与语义分割的全卷积相类似,但每个位置需要回归一个连续的4D向量。 因此,DenseBox必须在图像金字塔上执行检测,这与FCN一次计算所有卷积的原理相反。 此外,更重要的是,这些方法主要用于特殊领域的异物检测,例如场景文本检测或面部检测,作者认为这些方法在应用于高度重叠的边界框进行检测时效果不佳。高度重叠的边界框导致难以理解的模糊性,即不清楚对于重叠区域中的像素,对应那个边界框来进行回归,如下图。
在这里插入图片描述

作者提出一个全卷积网络一阶段目标检测器,类似于语义分割,对每个像素进行预测。本文证明利用FPN结构可以消除上边提到的模糊。同时,作者发现在远离目标中心的像素会预测出一些低质量的的边界框,为了抑制这些边界框,作者提出了一个新的 “center-ness” 分支,用于预测一个像素与对应边框中心的偏差。所得的分数用于down-weight 低质量的检测框,最后通过NMS将检测结果进行融合。本文的FCOS是anchor free ,proposal free的目标检测器,预定义的anchors进行移除,进而减少了大量的计算以及内存占用,同时,anchor中的超参对于最终的结果也有较大的影响,而本文完美的将其避开,只有一个NMS后处理。

2 Related Work

  • Anchor-based Detectors:优点:Anchor box可以被看作pre-defined sliding windows or proposals,使用一个extra offsets regression 来精细 bounding box 位置的预测结果。利用feature maps of CNNs 来避免重复特征计算,明显加速检测过程。 缺点:产生许多hyper-parameters,这些hyper-parameters会shown a great impact on the final accuracy, 因此需要小心的 heuristic tuning eg:FasterR-CNN、SSD、YOLOv2
  • Anchor-free Detectors:优点:hyper-parameters少 缺点: eg:YOLOv1产生low recall ;CornerNet要求more complicated postprocessing;基于DenseBox系列针对overlapping bounding boxes 的情况很难处理,并且recall being relatively low

本文的FCOS,完美的避开了超参数问题,并利用a ground truth bounding box 中的所有点去预测bounding box ,使用“center-ness”分支对低质量 bounding boxes 进行抑制,产生和anchor-based detectors 相同的召回率,同时使用FPN解决了overlapping bounding boxes 的问题。

3 Advantages/Contributions

  • 将目标检测与语义分割等基于全卷积的任务进行结合,更加简单
  • 检测器是proposal free 和anchor free,明显的减少了design parameters的数量计算量和内存
  • 有很好的泛化性能,甚至在two-stage detectors 中作RPN也能获得很好的性能
  • 通过对模型小幅度的修改可以用到其它计算机视觉任务中,比如实例分割和关键点检测
  • 与FPN结合得到更好的效果

4 Method

在这里插入图片描述
FCOS的网络结构包含三个模块:

  • 特征提取的主干网络:提取 input image的特征,C3、C4、C5特征图的分辨率依次是input image分辨率的1/8、1/16、1/12
  • 特征金字塔:对主干网络提取的特征进行特征融合,并利用多尺度检测来解决overlapping bounding boxes 问题
  • 目标检测模块:包含classification, box regression 分支,还包括一个 center-ness的新分支来对低质量 bounding boxes 进行抑制

4.1.Fully Convolutional One-Stage Object Detector

F i ∈ R H × W × C F_{i}\in R^{H\times W\times C} FiRH×W×C表示backbone第 i i i层的 feature maps ;input image 的ground-truth bounding boxes 定义为 { B i } \left \{ B_{i} \right \} {Bi}, where B i = ( x 0 ( i ) , y 0 ( i ) , x 1 ( i ) , y 1 ( i ) , c ( i ) ) ∈ R 4 × { 1 , 2.... C } B_{i} =\left ( x_{0}^{(i)}, y_{0}^{(i)},x_{1}^{(i)},y_{1}^{(i)},c^{\left ( i \right )}\right )\in R^{4}\times \left \{ 1,2....C \right \} Bi=(x0(i),y0(i),x1(i),y1(i),c(i))R4×{1,2....C},其中 ( 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))分别表示bounding box的 left-top and和 right-bottom 的坐标, c ( i ) c^{\left ( i \right )} c(i)代表bounding boxes所属类别, C C C表示类别总数,MS-COCO dataset是80。

对于特征图 F i F_{i} Fi的位置坐标 ( x , y ) (x,y) xy映射到input image上为 ( ⌊ s 2 ⌋ + x s , ⌊ s 2 ⌋ + y s ) \left ( \left \lfloor \frac{s}{2} \right \rfloor+xs, \left \lfloor \frac{s}{2} \right \rfloor+ys\right ) (2s+xs,2s+ys),大致为与 ( x , y ) (x,y) xy感受野中心的附近。FCOS将每个像素看作训练样本,而不是只将anchor boxes看作样本,这点与语义分割的全卷积相似。

如果某点 ( x , y ) (x,y) xy 落入到任意ground-truth box 中,并且该点的类别label c ∗ c^{*} c正好是这个ground-truth box类别label ,这个点就可以叫做 positive sample,否则就叫做negative sample ,并且 c ∗ = 0 c^{*}=0 c=0,即属于background class。除了分类label,作者用4D向量在这里插入图片描述
来表示点 ( x , y ) (x,y) xy的回归目标, l ∗ l ^{*} l, ι ∗ \iota ^{*} ι, r ∗ r^{*} r b ∗ b^{*} b are the distances from the location to the four sides of the bounding box。如下图:
在这里插入图片描述
结合点 ( x , y ) (x,y) xy B i B_{i} Bi,可以得到the training regression targets for the location:
在这里插入图片描述
FCOS在训练的回归时尽可能利用foreground样本,这也是性能优于基于anchor-based方法的可能原因。

  • Network Outputs:网络输出一个类别标签80D向量及4D的向量,本文的类别训练并不是基于多任务训练,而是训练C个binary 分类器。本文在backbone的feature map后和分类分支及回归分支前分别增加了4层卷积层。作者应用 e x p ( x ) exp(x) exp(x)在回归分支的顶部将任意实数映射到 ( 0 , ∞ ) (0,\infty ) (0,)。FCOS相比基于anchor-based的方法减少了9倍的网络输出变量。
  • Loss Function
    在这里插入图片描述
    • p x , y p_{x,y} px,y是classification scores,如果 p x , y > 0.05 p_{x,y}>0.05 px,y>0.05就是positive samples
    • ι ( x , y ) \iota_{(x,y)} ι(x,y)是 regression prediction ,即( l ∗ l ^{*} l, ι ∗ \iota ^{*} ι, r ∗ r^{*} r b ∗ b^{*} b
    • c ∗ c^{*} c为点 ( x , y ) (x,y) xy的类别标签
    • L c l s L_{cls} Lcls是分类分支损失,为 focal loss
    • L r e g L_{reg} Lreg是回归分支损失,为IOU loss
    • N p o s N_{pos} Npos是positive samples的数量
    • λ = 1 \lambda=1 λ=1 L r e g L_{reg} Lregbalance weight
      在这里插入图片描述
      为指示函数,如果 c ∗ > 0 c^{*}>0 c>0为1,其它为0。
  • Inference:input images放进 network 得到 classification scores p x , y p_{x,y} px,y和回归预测 ι ( x , y ) \iota_{(x,y)} ι(x,y),如果 p x , y > 0.05 p_{x,y}>0.05 px,y>0.05就是正样本,然后根据training regression targets公式得到预测bounding boxes。

4.2.Multi-level Prediction with FPN for FCOS

FCOS可能会出现两个问题及解决方案:
1. low best possible recall (low BPR):anchor based 的检测器是由于 large stride 导致的低BPR,但是它可以通过降低 IOU scores 来进行改善;FCOS即使在 large stride的情况下,仍可以产生好的BPR,而且在multi-level FPN 的预测下,BPR可以达到和anchor based 的BPR一样的效果。
2.overlapping bounding box:Overlaps in ground-truth boxes can cause intractable ambiguity ,这种模棱两可的结果会影响FCN-based detectors的性能,作者通过使用 multi-level prediction可以解决这个问题,并且有时性能比anchor based 还要好。

根据FPN来检测物体不同size的feature maps,five levels分别被定义为 { P 3 , P 4 , P 5 , P 6 , P 7 } \left \{ P_{3}, P_{4},P_{5},P_{6},P_{7}\right \} {P3,P4,P5,P6,P7}, P 3 , P 4 , P 5 P_{3}, P_{4},P_{5} P3,P4,P5是由 top-down connections 和backbone CNNs’ feature maps C 3 , C 4 , C 5 C_{3}, C_{4},C_{5} C3,C4,C5经过1×1卷积产生的, P 6 , P 7 P_{6},P_{7} P6,P7是通过在 P 5 , P 6 P_{5},P_{6} P5,P6上分别应用一个跨度为2的卷积层来生成的。 feature levels 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的 strides 分别为8、16、32、64、128
在这里插入图片描述
不同于 anchor-based 对不同的feature levels分配不同的anchor boxes的回归方式,FCOS 对each level的的bounding box的回归限定了一个范围,即对首先计算出所有层上每个位置对应的回归目标,l*,t*,r*,b*,若一个位置满足下列两个条件则将其认定为负样本,也没有进行回归的意义: m a x ( l ∗ , t ∗ , r ∗ , b ∗ ) > m i max(l*,t*,r*,b*)>m_{i} max(l,t,r,b)>mi或者 x ( l ∗ , t ∗ , r ∗ , b ∗ ) < m i − 1 x(l*,t*,r*,b*)<m_{i-1} x(l,t,r,b)<mi1 m i m_{i} mi是feature level i i i需要回归的最大距离(本文中 m 2 , m 3 , m 4 , m 5 , m 6 , m 7 m_{2},m_{3},m_{4},m_{5},m_{6},m_{7} m2m3m4m5m6m7分别为0,64,128,256,512, ∞ \infty ),由于不同的目标放置在不同的feature level中,而且,大部分重叠发生在相似大小的目标之间,因此通过多层次预测可以有效移除模糊样本,进而提高基于FCN检测器的性能。作者将不同层的feature levels进行共享,不仅使参数有效,而且提高了检测性能。然而,不同层的feature level需要回归指定大小的回归框。如P3的范围为[0,63],P4的为[64,128].因此,对于不同的feature level使用相同的head这是不合理的。因此,本文并不使用标准的 e x p ( x ) exp(x) exp(x),而是增加了一个训练参数 s i si si,基于 e x p ( s i x ) exp(si x) exp(six)根据 P i Pi Pi进行自动调整。

4.3.Center-ness for FCOS

FCOS 经过multi-level prediction 之后,发现仍然存在一个影响性能问题,即远离目标中心点的位置会产生一些 low-quality 的bounding boxes。作者在没有引入任何超参数的情况下,提出了一个抑制低质量bounding boxes的策略。即在平行于 classification 分支的情况下增加了一个“center-ness“ 分支,用于预测该位置到目标中心点的标准化距离。
在这里插入图片描述
给定一个回归目标,t*,l*,r*,b*,center-ness的回归定义如下所示:
在这里插入图片描述
这里采用 sqrt 来降低 center-ness的衰减, center-ness的范围是0-1,因此用BCE loss来进行训练。测试时,通过将预测的center-ness乘以相应的分类分数来计算最终分数。因此,center-ness可以用来降低距离对象中心很远的边界框分数的权重,它可以被看做是一个软阈值,可以在网络训练的过程中学习得到,不需要进行调节。除此之外,由于NMS的存在可以在一定程度上过滤点这些低质量的BB。

5 Experiments

在这里插入图片描述
表1证明了FPN确实能够提升BPR!
在这里插入图片描述
表2证明了FPN确实能够减少模糊样本!

在这里插入图片描述
表3证明了FCOS性能优于RetinaNet,还以更低的设计复杂度胜过了CornerNet。

在这里插入图片描述
在具有相同主干的AP中,FCOS优于RetinaNet 2.4%。

在这里插入图片描述

在这里插入图片描述
表4和图7同时证明了center-ness的效果比较好,同时也说明了center-ness的使用方式是和Head分支预测的分类得分进行相乘。
在这里插入图片描述
看起来还不错,bbox的准确率挺高的,不过结果展示的有些少!

6 Conclusion

总体来讲,FCOS算法精度提高了不少,但是却让单阶段检测算法的速度变慢了。基于anchor-free的检测算法应该是目标检测算法的一个新趋势,one-stage目标检测算法的优势也会慢慢得到提高,FCOS是基于anchor-free框架的一个起步,效果其实已经还可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值