摘要

一阶全卷积目标检测(FCOS)是一种基于像素级预测、类似于语义分割、解决目标检测问题的网络。FCOS的特点是不依赖预先定义的锚框或者提议区域,避免了关于锚框的复杂运算,例如训练过程中计算重叠度,而且节省了训练过程中的内存占用。FCOS避免了和锚框有关且对最终检测结果非常敏感的所有超参数。由于后处理只采用非极大值抑制(NMS),所以FCOS比以往基于锚框的一阶检测器具有更加简单的优点。
论文地址:FCOS: Fully Convolutional One-Stage Object Detection

Anchor

锚框首先在Faster R-CNN这篇文章中提出,后续再很多知名的目标检测模型中得到应用。这里不再展开
anchor-based的检测器存在以下缺点:

  1. 网络性能受anchor的数量和尺寸影响很大,因此anchor相关参数需要仔细调整。
  2. 即使anchor的尺寸预先经过定义,但是当处理变化较大的物体,尤其是小目标时会面临困难,比如要根据新的检测任务重新设计anchor的尺寸。
  3. 为了提高召回率,需要在图像上放置密集的anchor。而这些anchor大多数属于负样本,这样造成了正负样本之间的不均衡。
  4. 大量的anchor增加了在计算交并比时计算量和内存占用。

FCOS优势

本文的FCOS是anchor free ,proposal free类型的检测器。将预定义的anchors进行移除,进而减少了大量的计算以及内存占用,同时,anchor中的超参对于最终的结果也有较大的影响,而本文完美的将其避开。FCOS后面接着一个NMS处理。
优点:

  1. 可以将目标检测与语义分割,等基于全卷积的任务进行结合,更加简单。
  2. 目标检测与anchor/proposal无关,大量减少了参数量,计算量及内存。
  3. FCOS也可以与RPN结合取得更好的结果
  4. 通过对模型进行小幅度改造就可以应用到其他视觉任务,比如关键点检测。

方法

基于全卷积的单阶段检测

FCOS首先使用Backone CNN(用于提取特征的主干架构CNN)。

anchor-based算法将输入图像上的位置作为锚框的中心店,并且对这些锚框进行回归。
FCOS直接对feature map中每个位置对应原图的边框都进行回归,即FCOS直接把每个位置都作为训练样本,这一点和FCN用于语义分割相同。

FCOS算法feature map中位置与原图对应的关系,如果feature map中位置为面向目标检测的损失函数 目标检测 fcos_召回率 ,映射到输入图像的位置是 面向目标检测的损失函数 目标检测 fcos_面向目标检测的损失函数_02

在训练过程中,anchor-based算法对样本的标记方法是,如果anchor对应的边框与真实边框(ground truth)交并比大于一定阈值,就设为正样本,并且把交并比最大的类别作为这个位置的类别。
在FCOS中,如果位置面向目标检测的损失函数 目标检测 fcos_召回率

以往算法都是训练一个多元分类器
FCOS训练 C个二元分类器(C是类别的数目)

与anchor-based算法的相似之处是FCOS算法训练的目标同样包括两个部分:位置和类别。

FCOS算法的损失函数为:

面向目标检测的损失函数 目标检测 fcos_召回率_04


面向目标检测的损失函数 目标检测 fcos_目标检测_05是类别损失, 面向目标检测的损失函数 目标检测 fcos_召回率_06是交并比的损失。

用FPN对FCOS进行多级预测

anchor-based的检测器将不同尺寸的锚框分配到不同级别的特征层。
FCOS通过直接限定不同特征级别的边界框的回归范围来进行分配。

Center-ness

通过多级预测之后发现FCOS和anchor-based的检测器之间仍然存在着一定的距离,主要原因是距离目标中心较远的位置产生很多低质量的预测边框。

在FCOS中提出了一种简单而有效的策略来抑制这些低质量的预测边界框,而且不引入任何超参数。具体来说,FCOS添加单层分支,与分类分支并行,以预测"Center-ness"位置。

面向目标检测的损失函数 目标检测 fcos_sed_07

center-ness(可以理解为一种具有度量作用的概念,在这里称之为"中心度"),中心度取值为0,1之间,使用交叉熵损失进行训练。并把损失加入前面提到的损失函数中。测试时,将预测的中心度与相应的分类分数相乘,计算最终得分(用于对检测到的边界框进行排序)。因此,中心度可以降低远离对象中心的边界框的权重。因此,这些低质量边界框很可能被最终的非最大抑制(NMS)过程滤除,从而显着提高了检测性能。

具体结构

如图1。

面向目标检测的损失函数 目标检测 fcos_召回率_08

图1 FCOS的网络结构,其中C3、C4和C5表示骨干网的特征映射,P3到P7是用于最终预测的特征级别。H×W是特征图的高度和宽度。’/s’(s=8,16,…,128)是该级别的特征映射与输入图像的下采样率。例如,所有的数字都是用800×1024的输入来计算的。

实验

召回率

如图2,FCOS在召回率方便表现接近目前最先进的anchor-based的检测器。

面向目标检测的损失函数 目标检测 fcos_目标检测_09

图2 在多种匹配规则下基于锚网的RetinaNet的BPR和基于FCN的FCOS的BPR。基于fcn的FCOS与基于最佳锚的FCOS具有非常相似的召回率,召回率远远高于Detectron中的官方实现[7],后者只考虑IOU≥0.4的低质量匹配。

有无Center-ness的结果对比

如图3,“None”表示没有使用中心。“中心度”表示使用预测回归向量计算得到的中心度。“中心度”是指利用提出的中心度分支预测的中心度。中心度分支提高了所有指标下的检测性能。

面向目标检测的损失函数 目标检测 fcos_面向目标检测的损失函数_10

图3

与先进的一阶、二阶检测器效果对比

如图4,与目前最主流的一些一阶、二阶检测器对比,在检测效率方面FCOS优于Faster R-CNN、YOLO、SSD这些经典算法。

面向目标检测的损失函数 目标检测 fcos_召回率_11

图4