PDF: https://arxiv.org/pdf/1904.01355.pdf.
CODE: https://github.com/tianzhi0549/FCOS/.
https://blog.csdn.net/shanglianlm/article/details/89007219.
https://zhuanlan.zhihu.com/p/63868458.
https://zhuanlan.zhihu.com/p/156112318.
https://blog.csdn.net/WZZ18191171661/article/details/89258086.
1.思路来源
segmentation方法应用在object detection上。model:FCN。
FCN使用在语义分割、关键点检测等领域使用的很好,能否迁移到检测任务上。
2.anchor box
介绍:
使用在one-stage和two-stage中,用于bbox框的检测。
缺点:
1、检测效果受到anchor的size、ratios、number的限制。需要精调。
2、由于anchor的size、ratios等固定,当gt bbox时大时小的时候,泛化能力差。
3、为了提高召回率,需要设置大量anchor。其中绝大多数属于负样本。正负样本不平衡。
4、大量anchor,加大了求IOU的计算量。
anchor free方法:避免anchor base的复杂计算和过多的参数。
3.FCOS
center-ness:远离中心位置处有很多低质量的预测边界框,使用center-ness预测像素到对应边框的偏差。
FCOS优势
1.FCOS与许多基于FCN的思想是统一的,因此可以更轻松的重复使用这些任务的思路。
2.检测器实现了proposal free和anchor free,显著的减少了设计参数的数目。设计参数通常需要启发式调整,并且设计许多技巧。另外,通过消除锚框,新探测器完全避免了复杂的IOU计算以及训练期间锚框和真实边框之间的匹配,并将总训练内存占用空间减少了2倍左右。
3.FCOS可以作为二阶检测器的区域建议网络(RPN),其性能明显优于基于锚点的RPN算法。
4.FCOS可以经过最小的修改便可扩展到其他的视觉任务,包括实例分割、关键点检测。
方法对比:
YOLO1 利用中心附近点进行检测。
FCOS利用gt bbox所有点进行预测,并使用center-ness抑制底质量边界。
CornerNet:无法处理重叠边界框。
网络结构
backbone+FPN+head
3.1 FCOS计算方式
1.对bbox的预测
(1)anchor-based算法将输入图像上的位置作为锚框的中心店,并且对这些锚框进行回归。
(2)FCOS直接对feature map中每个位置对应原图的边框都进行回归,换句话说FCOS直接把每个位置都作为训练样本,这一点和FCN用于语义分割相同。
2.正负样本判断
(1)anchor-base用IOU阈值判断正负样本
(2)FCOS:在FCOS中,如果位置 (x,y)落入任何真实边框,就认为它是一个正样本,它的类别标记为这个真实边框的类别。
问题:
这样会带来一个问题,如果标注的真实边框重叠,位置(x,y)映射到原图中落到多个真实边框,这个位置被认为是模糊样本,后面会讲到用多级预测的方式解决的方式解决模糊样本的问题。
3.cls预测
以往算法都是训练一个多元分类器
FCOS训练 C 个二元分类器(C是类别的数目)
3.2 FPN的多级预测
首先明确两个问题:
1.基于锚框的检测器由于大的步伐导致低召回率,需要通过降低正的锚框所需的交并比分数来进行补偿:在FCOS算法中表明,及时是大的步伐(stride),也可以获取较好的召回率,甚至效果可以优于基于锚框的检测器。
2.真实边框中的重叠可能会在训练过程中造成难以处理的歧义,这种模糊性导致基于fcn的检测器性能下降:在FCOSzhong ,采用多级预测方法可以有效地解决模糊问题,与基于锚框的模糊检测器相比,基于模糊控制器的模糊检测器具有更好的性能。
前面提到,为了解决真实边框重叠带来的模糊性和低召回率,FCOS采用类似FPN中的多级检测,就是在不同级别的特征层检测不同尺寸的目标。
3.3 Center-ness
通过多级预测之后发现FCOS和基于锚框的检测器之间仍然存在着一定的距离,主要原因是距离目标中心较远的位置产生很多低质量的预测边框。
在FCOS中提出了一种简单而有效的策略来抑制这些低质量的预测边界框,而且不引入任何超参数。具体来说,FCOS添加单层分支,与分类分支并行,以预测"Center-ness"位置。
3.4 loss