目标检测anchor free:FCOS

Posted 超级无敌陈大佬的跟班

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测anchor free:FCOS相关的知识,希望对你有一定的参考价值。

前言

FCOS: Fully Convolutional One-Stage Object Detection(2019年)

FCOS(FCOS: Fully Convolutional One-Stage Object Detection),该算法是一种基于FCN的逐像素目标检测算法,实现了无锚点(anchor-free)、无提议(proposal free)的解决方案,并且提出了中心度(Center—ness)的思想,同时在召回率等方面表现接近甚至超过目前很多先进主流的基于锚框目标检测算法。
FCOS是anchor box free,而且也是proposal free,就是不依赖预先定义的锚框或者提议区域。通过去除预先定义的锚框,FCOS完全的 1)避免了关于锚框的复杂运算,例如训练过程中计算重叠度,而且节省了训练过程中的内存占用。更重要的是, 2)FCOS避免了和锚框有关且对最终检测结果非常敏感的所有超参数。由于后处理只采用非极大值抑制(NMS),所以本文提出的FCOS比以往基于锚框的一阶检测器具有更加简单的优点

锚框缺点

  1. 超参数敏感:检测表现效果对于锚框的尺寸、长宽比、数目非常敏感,因此锚框相关的超参数需要仔细的调节。
  2. anchor尺寸泛化能力较弱:锚框的尺寸和长宽比是固定的,因此,检测器在处理形变较大的候选对象时比较困难,尤其是对于小目标。预先定义的锚框还限制了检测器的泛化能力,因为,它们需要针对不同对象大小或长宽比进行设计。
  3. 正负样本不均衡:为了提高召回率,需要在图像上放置密集的锚框。而这些锚框大多数属于负样本,这样造成了正负样本之间的不均衡。
  4. 计算量大:大量的锚框增加了在计算交并比时计算量和内存占用。

FCOS优势

  1. FCOS与许多基于FCN(全卷积)的思想是统一的,因此可以更轻松的重复使用这些任务的思路。
  2. 检测器实现了proposal free和anchor free,显著的减少了设计参数的数目。设计参数通常需要启发式调整,并且设计许多技巧。另外,通过消除锚框,新探测器完全避免了复杂的IOU计算以及训练期间锚框和真实边框之间的匹配,并将总训练内存占用空间减少了2倍左右。
  3. FCOS可以作为二阶检测器的区域建议网络(RPN),其性能明显优于基于锚点的RPN算法。
  4. FCOS可以经过最小的修改便可扩展到其他的视觉任务,包括实例分割、关键点检测。

FCOS网络结构

FCOS结构:FPN + anchor free + 解耦检测头

center-ness输出分支

        起初的anchor free和基于锚框的检测器之间仍然存在着一定的距离,主要原因是距离目标中心较远的位置产生很多低质量的预测边框。针对该问题,FCOS中提出了一种简单而有效的策略来抑制这些低质量的预测边界框,而且不引入任何超参数。FCOS添加center-ness单层分支,与分类分支并行,以预测"Center-ness"位置。

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

中心位置红色部分center-ness值为1,外围蓝色部分值为0,两者之间的区域值在(0,1)之间

        图中红色、蓝色和其他颜色分别表示1、0和(0,1)之间的值。中心度由公式(3)计算,并随着位置偏离对象中心而从1衰减到0。测试时,网络预测的中心度与分类分数相乘,从而可以降低由远离对象中心的位置预测的低质量边界框的权重。

center-ness的计算公式:

        1) 其中分别是特征图上当前元素(cell)到ground truth框四条边界的距离,用来衡量当前cell与中心点的距离。

        2)通过公式(3)表示当前cell与ground truth框中心点的距离,cell与中心点距离越近,center-ness值越趋近于1;反之,cell与中心点越远,center-ness越小。(PS:当cell位于gt框中心点上时,l,r,t,b的值均为0.5,根据公式3计算得到center-ness的值为1)。

        

网络损失函数

分类损失 采用focal loss,回归损失采用IoU loss,是正样本数量,系数是回归损失的权重,计算特征图上所有位置loss的总和,是符号函数,当前位置在gt框内时为1,否则值为0。

回归策略

  • 1)边界框回归l,r,t,b值       

        只要当前位置(x,y)在ground truth框内,则被视为正样本位置,类别标签是ground truth框的类别标签。否则,位置(x,y)负样本,c∗ = 0(背景类)。除了用于分类的标签外,还有一个4维向量 是该位置的回归目标。是从该位置到gt边界框四边的距离,如果某个位置落入多个边界框,则该位置将被视为不明确的示例。我们只需选择面积最小的边界框作为其回归目标。通过多尺度预测,模糊样本的数量可以显著减少,因此它们几乎不会影响检测性能。
        FCO可以利用尽可能多的前景样本来训练回归者。它不同于基于锚的探测器,它只考虑与gt框具有足够高的IOU的锚框作为正样本。作者认为,这可能是FCO优于anchor-base方法原因之一。

  • 2)网络输出结果

        对应于训练目标,网络的最后一层预测分类标签的80维向量p和边界框坐标的4维向量t=(l,t,r,b)。不训练多类分类器,而是训练C二进制分类器。与[15]类似,我们在主干网络的特征映射之后分别添加了四个卷积层,用于分类和回归分支。此外,由于回归目标始终为正,使用exp(x)将任何实数映射到(0,∞) 在回归分支的顶部。值得注意的是,FCO的网络数量减少了9倍,输出变量比流行的基于锚的检测器多,每个位置有9个anchor。

参考:https://zhuanlan.zhihu.com/p/63868458

以上是关于目标检测anchor free:FCOS的主要内容,如果未能解决你的问题,请参考以下文章

Fcos目标检测算法简读

Fcos目标检测算法简读

Fcos目标检测算法简读

计算机视觉算法——基于Anchor Free的目标检测网络总结

计算机视觉算法——基于Anchor Free的目标检测网络总结

目标检测Anchor-free分支:基于关键点的目标检测