摘要
本文提出了一个全卷积单阶段的目标检测模型(FCOS)。它类似于语义分割,通过按像素预测的方式来实现目标检测。它属于anchor-free模型,通过消除先验框,避免了大量的额外计算,同样也避免了先验框/候选框(anchor box)的各种超参数的设置(SSD,Yolo以及faster rcnn等目标检测模型,无一不需要手动设置先验框的尺寸和长宽比,网络最终的性能容易受到这些先验框超参数的影响)。FCOS使用ResNeXt-64x4d-101骨干网络,在单模型和单个尺度输入的测试过程中达到了44.7%的AP(Coco数据集),而且比之前的单阶段检测模型更简单。
引言
当前主流的目标检测模型都需要依赖于先验框(比如faster rcnn、yolo以及ssd),并且认为先验框是检测器成功的关键。尽管这些使用先验框的检测网络取得了很好的效果,但它们都存在如下的缺点:
- 网络的性能对于先验框的尺寸(size)、长宽比(ratio)以及数量(num)很敏感,先验框的参数较难调整。
- 即便通过精心挑选,设置好了先验框之后,由于先验框的尺寸固定,因此,当遇到形状变化较大的物体特别是小物体时,定义的先验框可能降低检测器的泛化能力,因此在不同的检测任务(具有不同物体长宽比和尺寸)中需要被重新设计。
- 为了达到较高的召回率,都采用密集检测的思路,比如短边为800大小的图片,RPN会生成超过180k的先验框,然而绝大多数的先验框并不包含物体,这会导致严重的正负样本失衡。
- 大量的先验框增加了网络的计算量(计算大量的iou或者nms)
本文提出的FCOS具有如下优点:
- 检测已经和许多其他FCN任务比如语义分割结合到一起,重用已有结构。
- 不需要先验框,显著减少了参数数目。
- 通过消除先验框,避免了大量的计算(iou, 先验框和真实框的匹配等等),减少了内存占用。
- 没有添加高级的结构或tricks的情况下,在单阶段的检测器中,达到了最好的效果(state-of-the-art)。另外,FCOS也可以作为二阶段方法中的RPN,相比RPN可以实现更好的性能。
- 该检测器可以在最小的修改下,扩展到其他的视觉任务,包括实例分割和关键点检测。
FCOS模型介绍
FCOS利用了多级预测提高了召回率,并解决了物体中心重叠所造成的歧义。最后提出了"centness"分支(单个卷积层),它能有效减少低质量的检测框,并很大程度上提高网络性能。
全卷积单阶段检测器
传统的Anchor-based模型,所有Anchor的中心都位于输入图片,然后使用以anchor作为参考来回归真实框。而FCOS直接回归真实框的位置,将真实框的位置作为训练样本,而不是Anchor-based模型中的先验框。
对于特征图中像素/位置$(x, y)$,只要在真实框内,就被认为是正样本,像素的类别为真实框的类别,否则,像素为负样本,类别为0。除了用于分类的标签,还有另一个4D实向量$t^*=(l^*, t^*, r^*, b^*)$,它是该位置的回归目标。如下图所示,$l^*, t^*, r^*, b^*$分别表示该位置距离真实框左边界、上边界、右边界以及下边界的距离。
如果一个位置同时处于多个真实框中,该位置被认为是歧义样本,则简单选择面积最小的真实框作为回归目标,如下图右所示,所示位置会认为是球拍,回归球拍对应的真实框。
如果位置$(x, y)$对应真实框$B_i$$(x^{(i)}_0, y^{(i)}_0, x^{(i)}_1, y^{(i)}_1)$,则训练回归目标的公式可以表示为:
\begin{equation}
\left.\begin{aligned}
l^* &= x-x^{(i)}_0, t^* = y-y^{(i)}_0\\
r^* &= x^{(i)}_1-x, b^* = y^{(i)}_1-y \end{aligned} \right\} \qquad \text{(1)} \end{equation}
相比与Anchor-based模型,FCOS会尽可能多的利用正样本来训练回归器。
网络输出
网络最后一层预测80个类别(Coco数据集)概率以及4个边界框坐标$(l, t, r, b)$。分类过程,并不是直接训练一个多类别分类器,而是训练C个二分类器。由于回归目标总是正的,在回归层之后,对预测坐标应用exp,
损失函数
损失函数如下:
$$ L(\{p_{x, y}\},\{t_{x, y}\})=\frac{1}{N_{pos}}\sum_{x, y}L_{cls}(p_{x,y},c_{x, y}^*)+ \\\\ \frac{\lambda}{N_{pos}}\sum_{x,y}||_{\{c_{x,y}^*>0\}}L_{reg}(\{t_{x, y}\},\{t_{x, y}^*\}) \tag{2} $$
$L_{cls}$表示focal loss。$L_{reg}$表示IOU loss。$N_{pos}$表示正样本的数目。$\lambda$为$L_{reg}$的权重参数,设置为1。$||_{\{c_{x,y}^*>0\}}$为指示函数,如果$c_i^*>0$,即为1,否则为0。
Inference
给定一个图片,传入FCOS网络,最终得到特征图$F_i$上每个位置对应的类别概率$p_{x,y}$和坐标预测$t_{x, y}$。选择$p_{x,y}>0.05$的位置作为正样本,根据公式1可以得到预测边界框。
FCOS中的FPN多尺度预测
FCOS的多尺度预测主要解决了以下几个问题:
- 通常来说,大stride的特征图会导致较低的召回率。对于Anchor-based模型,可以通过降低正样本的IOU阈值来进行一定的弥补。而FCOS由于采用了多尺度预测(P3-P7共5个尺度的预测),召回率可以达到RetinaNet的BPR(一个网络可以达到的最高召回率)。
- 不同与Anchor-based模型,FCOS直接限制每个尺度边界框回归的范围。首先计算所有尺度特征图的每个位置的回归目标$(l^*, t^*, r^*, b^*)$, 如果一个位置的预测满足$max(l^*, t^*, r^*, b^*)>m_i$或者$max(l^*, t^*, r^*, b^*)
i个特征尺度需要回归的最大距离。论文中$m_2,m_3,m_4,m_5,m_6,m_7$分别设置为0,64,128,256,512,$\infty$。不同尺寸的特征图负责检测不同尺寸的物体,而重叠大多发生在尺寸相差较大的物体之间(个人理解是对于自然图像),因此多尺度检测可以很大程度上解决物体重叠所带来的歧义问题。如果一个位置被多个尺度预测所使用,即它会与多个真实框相匹配,则简单选择面积最小的真实框作为它的回归目标。 - 网络中不同尺度的预测共享head模块,可以有效的共享参数,而且可以提高检测器的性能。然而对不同特征级别使用相同的head,并不合理。最后,使用了带有一个可训练的参数$s_i$的$exp(s_ix)$来自动调整特征级别$P_i$的指数函数的基数,而不是使用标准指数函数$exp(x)$,从而显著的提高了网络的检测性能。
FCOS中的Center-ness
在应用多尺度预测之后,FCOS相比于anchor-based模型,仍有性能差距。这主要是由于位置回归生成了大量偏离物体中心的低质量预测框。
作者在不增加参数数目的前提下,提出了一个简单有效的策略来抑制低质量检测框。在检测层的最后,增加了一个额外的分支(网络结构图中的Center-ness层)来预测一个位置的"center-ness",center-ness描述了当前位置到该位置负责的物体中心的规范化距离,如下图所示,左边表示没有center-ness的结果,右边表示经过center-ness处理之后的结果。
给定一个位置的回归目标$(l^*, t^*, r^*, b^*)$,center-ness的目标定义为:
$$centerness^*=\sqrt{\frac{min(l^*,r^*)}{max(l^*,r^*)}\times\frac{min(t^*,b^*)}{max(t^*,b^*)}} \tag{3}$$
这里开根号主要为了降低center-ness的衰减(Decay),center-ness范围是0-1,采用BCE loss训练,该误差会添加到公式2中。测试阶段,最后的分值(对预测框进行排序)是通过乘以预测的center-ness值和类别概率分值。center-ness可以降低那些远离物体中心的预测框的权重。最终,这些低质量的预测框很有可能被nms过滤掉,从而显著的提高网络性能。
FCOS与Retina Net对比:
总结
FCOS是最近的论文,发表在CPVR2019。
FCOS使用了典型的FPN网络结构,使用类似于语义风格,通过逐像素预测的方式实现目标检测,相比之前的单阶段模型,比如Yolo和SSD,结构更为简单,而且完全消除了先验框,避免了大量的无效计算。同时在精度上明显优于目前的SOTA模型。
FCOS将真实框的坐标作为训练样本,而不是作为边界框, 网络直接预测边界框坐标$(l^*, t^*, r^*, b^*)$。
训练阶段, 对于所有不同尺度的特征图, 网络只对处于真实框内的位置进行回归, 如果一个位置同时处于多个真实框内,则对面积最小的真实框进行回归。另外, 为每一个特征尺度设定了边界框回归的范围, 保证了不同大小的物体都会与不同尺度的特征图相匹配。
FCOS采用了多尺度预测, 最终会得到大量的偏离物体中心的低质量边界框, 作者提出了center-ness的策略, 对低质量的预测框进行抑制,最终通过nms得到最后的边界框。
本文只对论文做了简要的介绍,有关FCOS的具体实现以及训练细节,可以关注后续的博客。