引入:本次学习内容基本来自于Zhi Tian,Chunhua Shen编写的的《FCOS: Fully Convolutional One-Stage Object Detection》,以及部分讲解视频,本学习记录仅为个人学习收获,部分内容存在纰漏烦请各位大佬批评指正。
(一)摘要:传统的物体检测方法通常分为两个阶段:锚框生成和目标分类与定位。然而,这些方法需要在不同尺度上生成大量的候选框,导致复杂和耗时的计算过程。相比之下,FCOS通过将检测任务转化为特征图上的像素分类问题,实现了真正的全卷积端到端检测。
(二)发表时间:2019
(三)关键词:目标检测,全卷积神经网络,单阶段检测,无锚框训练
(四)学习记录:
目前许多目标检测网络,例如SSD,YOLO,FasterRCNN等都是依赖于预先设置好的目标框(“anchor boxes”)。但是,作者提出的FCOS检测器是无锚框(anchor box free)和无提议(proposal free)的。这种设计避免了与锚框相关的复杂计算,并且超过了以往的单阶段检测器,并具有更简单的优势。
尽管预先设置边界框在许多目标检测网络上已经成功运用,但是仍然存在一些问题。
1)在RetinaNet中所示,检测性能对于锚框的大小、长宽比和数量非常敏感。例如,在COCO基准测试上,调整这些超参数会对性能产生高达4%的影响。因此,在基于锚框的检测器中需要仔细调整这些超参数;
2)即使经过精心设计,由于锚框的尺度和长宽比保持固定,检测器在处理具有形状变化较大的目标候选对象时会遇到困难,特别是对于小目标而言。预定义的锚框也限制了检测器的泛化能力,因为它们需要根据不同的目标大小或长宽比重新设计;
3)为了达到较高的召回率,基于锚框的检测器需要在输入图像上密集地放置锚框(例如,对于较短边为800的图像,在特征金字塔网络(FPN)中需要超过180K个锚框)。其中大部分锚框在训练过程中被标记为负样本。过多的负样本加剧了训练中正负样本不平衡的问题;
4)锚框还涉及复杂的计算,如计算与真实边界框之间的交并比(IoU)得分。
FCOS的基本网络结构如下图所示。
其实可以简单的看出,FCOS也是呈现FPN结构,也使用了横向连接,并且也最终分为两个支路,一个处理类别概率,一个处理边界框的回归。FCOS一共使用了5个特征图层,{P3, P4, P5, P6, P7}。其中,P3、P4和P5是由主干CNN的特征图C3、C4和C5经过一个1×1的卷积层和[14]中的自顶向下连接生成的。P6和P7通过对P5和P6应用步长为2的卷积层生成。因此,特征层P3、P4、P5、P6和P7的步长分别为8、16、32、64和128。
因为FCOS不设置anchor boxes,而是将位置作为训练样本,如果一个位置落在了GT内,则是正样本,它的类别就是框的类别,反之是负样本,则为0。同时,他们直接限制了每个特征层的边界框回归范围,而不是为不同的特征层分配不同大小的锚点框。这点与基于锚点的检测器不同。作者设定了一些条件,如果回归目标(坐标点)满足,则被认为是负样本。同时,如果一个位置仍然被分配给多个真实边界框,我们只选择面积最小的真实边界框作为它的目标。
如果仔细观察,并且了解过RetinaNet之类的单目标检测网络结构你就会发现,FCOS的分类支路的终点多了条支路“Center-ness”。
之所以设置这样一层,是因为远离物体中心的位置产生了大量低质量的预测边界框。添加这条支路的目的就是预测位置的中心度。通过引入中心度分支,FCOS就可以通过学习判断每个位置对应的边界框是否接近物体中心。这样就可以抑制那些远离物体中心的低质量检测边界框,从而提高检测性能。公式如下。