本文转载自:AI深度学习视线
FCOS DeformConv2 ResNeXt101 BiFPN 在COCO上能刷到50.4 AP!
作者团队:阿德莱德大学(沈春华等) 文章链接: https://arxiv.org/pdf/2006.09214.pdf 代码地址: https://github.com/aim-uofa/AdelaiDet
1
摘要
在计算机视觉中,目标检测是最重要的任务之一,它支持一些实例级识别任务和许多下游应用。近来,由于简单设计和竞争优势,一阶段法引起了人们的广泛关注。
本文提出了一种全卷积一阶段目标检测器(FCOS),以按像素预测的方式解决目标检测,类似于其他密集预测问题,例如语义分割。
FCOS最大的特点是:
- 几乎所有最新的目标检测器(例如RetinaNet,SSD,YOLOv3和Faster R-CNN)都依赖于预定义的anchor。相反,我们提出的探测器FCOS不含anchor,也不含proposal。
实现路径:
- 通过消除预先定义的锚定框集,FCOS完全避免了与锚定框相关的复杂计算,例如在训练过程中计算联合交叉点(IoU)分数。
- 更重要的是,还避免了与锚框相关的所有超参数,这些超参数通常对最终检测性能敏感。
- 通过唯一的后处理非最极大值制(NMS),我们演示了一种更简单,更灵活的检测框架,可提高检测精度。
我们希望所提出的FCOS框架可以作为许多其他实例级任务的简单而强大的替代方案。
2
主要思路
Anchor_based方法的缺点:
- 算法精度对图像size、anchor的长宽比和数量等较为敏感,从Faster-RCNN和Retinanet就能看出来,调整这些超参就能让RetinaNet在COCO的AP长4个点。
- 由于anchor_based的anchor超参是固定好了的,所以在面对形变比较大的目标时候检测效果会受影响。
- 为了获得较高的召回率,需要在特征图上密集的部署anchor,而其中大部分是负样本,加剧正负样本的不平衡。
- anchor_based方法还需要复杂的计算,例如需要和真值不停的计算IOUs。
本文是借鉴FCN在图像分割的成功经验,类似的思想应用到目标检测里。 这样的好处还可以把视觉多任务整合到一起来实现。我们的方法已经可以获得与传统的基于锚的检测器相似甚至更好的检测精度。
本文方法会在远离目标对象中心的位置产生许多低质量的预测边界盒。可见,靠近目标边框中心的位置可以做出更可靠的预测。因此,这里引入了一种新的“Center-ness”评分来描述位置到中心的偏差,用于降低检测到的低质量边界盒的权重,从而有助于抑制NMS中这些低质量检测。中心值由与边界盒回归分支平行的一个分支(只有一层)预测,该中心支路简单有效,在计算时间上有显著提高。
这种新的检测框架具有以下优点:
- 可以更容易的将检测和其他任务统一起来一起处理,例如分割。
- 实现了proposal-free和anchor-free,减少了设计复杂度和超参,大大简化训练过程。
- 通过取消anchor,大大减少计算量,比如训练过程中候选目标和真值IOUs的计算。
- 本文的成果也对检测领域提出了新的问题,目前主流的anchor机制需要重新审视其在检测中的必要性。
- FCOS由于其简单的设计,FCOS可以很容易地解决其他实例级识别任务,只需最小的修改,例如实例分割,关键点检测,文本定位,跟踪。
- 取得了很高的性能指标,COCO数据集达到50.4mAP,算是anchor-free榜里的前列了。
3
具体实现
首先,以逐像素预测的方式重新设计目标检测。 然后,展示了如何利用多层预测来改善重调用和解决由于重叠框造成的歧义。 最后,提出了“center-ness”分支,它有助于抑制低质量的检测盒,并大幅提高整体性能。
3.1 Fully Convolutional One-Stage Object Detector
与基于anchor的检测器不同,基于anchor的检测器以输入图像上的位置为(多个)anchor box的中心,以这些anchor box作为参考对目标边界盒进行回归,我们直接对所在位置的目标边界盒进行回归。
换句话说,我们的检测器直接将位置视为训练样本,而不是基于anchor的检测器中的锚盒,这与FCNs用于语义分割的思想相同。
具体来说:
如果位置(x,y)落在任何ground-truth的中心区域,则视为正样本。以(cx,cy)为中心的box的中心区域定义为子box (cx−rs,cy−rs,cx rs,cy rs),其中s为当前feature maps的总strid,r为COCO上超参数为1.5。子box被裁剪,使其不超出原始框。(注意,这与我们上一版本FCOS不同(上一版本中,我们认为位置是正的,只要它们位于ground-truth框中)。
这个位置的类标签c的∗是ground-truth框的类标签。否则,它是一个负样本,c∗= 0(背景类)。
除了用于分类的标签,我们还有一个4D实向量t∗= (l∗,t∗,r∗,b∗)作为位置的回归目标。这里,l∗,t∗,r∗和b∗是该位置到包围框四面的距离,如图1(左)所示。
如果一个位置落在多个边界盒的中心区域,则认为是一个模糊样本。我们简单地选择面积最小的边界盒作为回归目标。在下一节中,我们将展示通过多级预测可以显著减少模糊样本的数量,从而几乎不会影响检测性能。
重点: 结合这些设计,FCOS可以以无锚的方式检测物体,网络无需任何预定义的锚盒就可以学习所有的东西。这与基于锚的检测器不同,关键的区别是我们定义正样本和负样本的方式,在FCOS中,我们消除了预定义的锚盒作为先验的需要,并且在真值盒中通过它们的包含来标记位置。
- Network output
网络的最后一层预测一个80维向量p用于分类,以及一个4维向量t*= (l,t,r,b)来编码box坐标。在focal loss之后,我们训练的不是多类分类器,而是二进制分类器。与focal loss类似,我们添加了两个分支,分别在FPNs生成的用于分类和排序任务的特征图之后添加了四个卷积层(不包括最终的预测层)。此外,由于回归目标总是正的,我们使用(x)将任何实数映射到回归分支顶部的(0,∞)。
值得注意的是,FCOS的网络输出变量比流行的基于anchor的检测器少9倍,每个位置9个锚盒,这在应用于关键点或实例分割时非常重要。
- Loss Function
其中,Lcls是focal loss,Lreg是GIOU loss。
- Inference
FCOS的推断很简单。给定一幅输入图像,通过网络传输,得到特征图Fi上每个位置的分类分数Px,y和回归预测Tx,y。在focal loss之后,选择Px,y>0.05为正样本的位置,解算Eq.(1)得到预测的边界盒。
3.2 Multi-level Prediction with FPN for FCOS
这部分内容展示了如何用FPN的多层预测来解决FCOS两个可能的问题:
首先,CNN中最终feature map的大stride(如16倍)会导致较低的best possible recall (BPR)。 对于基于锚点的检测器,通过降低正锚盒的IOU分数要求,可以在一定程度上补偿由于大跨度导致的召回率低。对于FCOS,乍一看,人们可能认为BPR可以比基于锚的探测器低得多,因为它不可能在一个大stride的时候,回找出一个位置没有在特征图编码的对象。 在这里,实验表明,即使是大stride,FCOS仍然能够产生良好的BPR,甚至可以超过官方实施Detectron[12]中基于锚的检测器RetinaNet[22]的BPR(见表1)。因此,BPR实际上不是FCOS的问题。此外,通过多层FPN预测[21],可以进一步改进BPR以达到的最佳BPR。
其次,如图1(右)所示,回归模糊问题,重叠的目标中心应该如何回归边框? 在此工作中,我们证明了多层预测可以很好地解决模糊问题,并且与基于锚点的预测相比,FCOS可以获得同等甚至更好的性能。
具体来说,在FPN之后,我们在不同的feature map级别上检测不同大小的对象。使用定义为{P3,P4,P5,P6,P7}的五级特征图。如图2所示,P3、P4和P5是由backbone的C3、C4和C5的特征图产生的。在P5和P6上分别应用一个步长为2的3×3的卷积层产生P6和p7。注意,这与最初的RetinaNet不同,后者从主干特征图C5中获得P6和P7。我们发现两种方案的性能相似,但我们使用的一种参数较少。此外,P3、P4、P5、P6和P7的stride分别是8、16、32、64和128。
基于锚的检测器将不同尺度的锚盒分配到不同的特征级别。由于锚盒和GT盒是通过它们的IoU分数相关联的,这使得不同的FPN特征级别能够处理不同比例的对象。但是,这将锚框的大小和每个FPN级别的目标对象的大小结合在一起,这是有问题的。
锚框的大小应该是特定于数据的,可能会从一个数据集更改到另一个数据集。每个FPN级别的目标对象大小取决于FPN级别的感受野,感受野取决于网络架构。FCOS消除了耦合,因为我们只需要关注每个FPN级别的目标对象大小,而不需要设计一个anchor盒大小。
与基于锚点的检测器不同,在FCOS中,我们直接限制了每一层的边界盒回归的范围。更具体地说,我们首先计算回归目标l∗,t∗,r∗和b∗对于所有特征层的每个位置。如果一个特征图上的位置满足下面的关系:
max(l∗,t∗,r∗,b∗)≤mi-1 或者 max(l∗,t∗,r∗,b∗)≥mi,它被设置为负样本,因此不再需要返回一个边界框。这里mi是feature level需要返回的最大距离。在本文中,m2,m3,m4,m5,m6,m7的取值分别为0,,64,,128,256,512,∞。
我们认为,限定最大距离是确定各特征层目标对象范围的较好方法,因为这样可以确保完整对象始终处于各特征层的接受域内。
此外,由于不同大小的对象被分配到不同的特征级别,且重叠多发生在大小差别较大的对象之间,因此可以在很大程度上缓解上述模糊性。如果一个位置,即使使用多层预测,仍然分配到多个地真盒,我们只需选择面积最小的GT盒作为目标。实验表明,在多层预测的情况下,无锚探测器和基于锚的探测器都能达到相同的性能水平。
最后,在focal loss之后,我们在不同的特征级别之间共享头,不仅提高了检测器的参数效率,而且提高了检测器的检测性能。但是,我们观察到,不同的特征级别需要返回不同的尺寸范围(例如P3的尺寸范围为[0,64],P4的尺寸范围为[64,128]),因此对于不同的特征级别使用相同的头部可能不是最佳设计。在我们的初始版本中,通过将一个可学习的标量乘以卷积层的输出来解决这个问题。在这个版本中,由于回归目标是按FPN特征级别的stride来缩小的,如Eq.(1)所示,因此标量的重要性降低了。但是,为了兼容性,我们仍然保留它们。
3.3 Center-ness for FCOS
经过多级预测,FCOS已经可以取得比基于锚点的对等视网更好的性能。
此外,我们还观察到,远离物体中心的位置会产生许多低质量的检测结果。我们提出了一个简单而有效的策略来抑制这些低质量的检测。具体来说,我们添加了一个单层分支,与回归分支并行(如图2所示),以预测位置的中心度“Center-ness”。Center-ness描述了该位置到该位置所负责对象中心的归一化距离,如图4所示。给定回归目标l∗,t∗,r∗和b∗对于一个位置,中心目标被定义为,
这里我们用平方根来减缓中心度的衰减。中心度的范围为0到1,因此使用二元交叉熵(BCE)损失进行训练。将损失加到损失函数式(2)中,检验时,最终得分Sx,y(用于对NMS中检测进行排序)为预测的中心度Ox,y与对应的分类分数Px,y的乘积的平方根。在形式上,
因此,中心度可以降低远离物体中心的边界框的分数。因此,在最终的非最大抑制(non-maximum suppression, NMS)过程中,这些低质量的边界盒很有可能被滤掉,显著提高了检测性能。
4
实验结果
4.1 Analysis of FCOS
- Best Possible Recall :
可以看出FCOS与anchor_based的RetinaNet的BPR已经很接近了。
- Ambiguous Samples in FCOS:
- the Effect of Center-ness:
- Other Design Choices:
4.2 FCOS vs. Anchor-based Counterparts
FCOS的mAP已经超过了RetinaNet:
4.3 Comparison with SOTA Detectors on COCO
4.4 Real-time FCOS