(论文阅读)目标检测之FCOS
作者:互联网
FCOS
一、FCOS简介
paper地址:http://xxx.itp.ac.cn/pdf/1904.01355.pdf
code地址:https://github.com/tianzhi0549/FCOS
1.1、论文基本信息
翻译为:FCOS:全卷积一级目标检测
发表于ICCV2019
1.2、内容概要
这篇论文主要提出了一种全卷积one-stage目标检测算法(FCOS),以逐像素预测的方式解决目标检测问题,类似于语义分割。这篇提出的目标检测算法FCOS不需要锚框。通过消除预定义的锚框,FCOS避免了与锚框相关的复杂计算,同时还避免了设定与锚框相关的所有超参数,FCOS后面唯一接了一个NMS。
二、详细解读
2.1、摘要
本文提出了一个完全卷积的一级目标检测器(FCOS),以逐像素预测的方式解决目标检测,类似于语义分割。几乎所有最先进的物体探测器,如RetinaNet、SSD、YOLOv3和Faster R-CNN都依赖于预定义的锚盒。相比之下,本文提出的检测器FCOS是无锚箱的,也是无建议的。FCOS通过消除预定义的锚盒集合,完全避免了训练过程中与锚盒相关的计算重叠等复杂计算。更重要的是,该模型还避免了所有与锚盒相关的超参数,这些超参数往往对最终检测性能非常敏感。使用ResNeXt-64x4d-101作为唯一的后处理非最大抑制(NMS),在单模型单尺度测试下,FCOS在AP中达到44.7%,比以往的单级检测器简单得多。或者第一次,本文展示了一个更简单和灵活的检测框架,实现了提高检测精度。本文希望所提议的FCOS框架可以作为许多其他实例级任务的简单而强大的替代方案。
简单来说就是采用无锚框并且精度还挺高的,这也是它成为许多实例分割重要部分的原因。
2.2、问题提出
FCOS不是最早提出一阶段无锚框目标检测,比如说之前的yolov1是采用无锚框的方法,但是精度不高,所以yolov2采用有锚框的方法。但是有锚框的方法存在一定的问题:
①、检测性能对锚块的大小、长宽比和数量非常敏感。有很多超参数,这些超参数需要在基于锚的检测器中仔细调整,十分费时。
②、即使经过精心设计,由于锚盒的尺度和宽高比保持不变,探测器在处理形状变化较大的候选物体时也会遇到困难,特别是对于小物体。先定义的锚盒也阻碍了探测器的泛化能力,因为它们需要在新的探测任务中重新设计不同的物体大小或宽高比。
③、为了达到高查全率,需要基于锚点的检测器在输入图像上密集放置锚点盒,需要的锚点非常多,还得进行筛选 。在训练过程中,大多数锚盒都被标记为负样本。过多的负样本会加剧训练中正样本与负样本的不平衡。
④、锚盒还涉及到复杂的计算。
因此,需要找到一个办法消除锚框,同时还要达到较高的精确度。
2.3、改进方法
对于基于anchors的目标检测算法而言,会将输入的图片送入backbone网络之后,会获得最终的特征图,然后我们会在该特征图上的每一位置上使用预先定义好的anchors。而FCOS的改动点就在这里,直接对特征图上的每一点进行回归操作。具体操作如下:
1、将f特征图中的每一个点(x,y)映射回原始的输入图片中
2、接着判断这个映射回原始输入的点是否在相应的GT的BB范围之内,如果是,而且类别标签对应,就将其作为训练的正样本块,否则将其作为正样本块
3、接着就是进行回归,回归的目标是得到(l,t,r,b),即中心点做BB的left、top、right和bottom之间的距离
4、会存在一个位置在多个BB的内部的情况,对于这种情况,直接选择面积最小的边界框作为回归目标。由于网络中FPN的存在,这样的模糊样本的数量大大减少。
5、如果某位置(x,y)和一个BB关联的话,该位置处的训练回归目标可制定为(x1,y1)和(x2,y2),分别表示BB的左上角和右下角坐标值。
6、最后进行NMS非极大值抑制得到最终结果。
2.4、网络结构
FCOS的网络结构,其中C3、C4和C5表示骨干网的特征图,P3到P7是用于最终预测的特征级别。H × W为特征图的高度和宽度。’ /s ’
(s = 8,16,…,128)为该层特征映射到输入图像的下采样比。
FCOS的网络结构包含了如下3个部分,
(1)backbone网络
(2)feature pyramid结构
(3)输出部分(classification/Regression/Center-ness)
1、多尺度策略:
FCOS算法那使用了{P3, P4, P5, P6, P7}五个尺度的特征映射。其中P3、P4、P5由主干CNNs网络的特征层 C3、C4、C5经过一个1*1的卷积得到的,而,P6、P7则是接着P5进行了步长为2的卷积操作得到的(相当于降采样,看注解)。最终对这五个尺度都做逐像素回归。
当然,本文为了能够更好的利用这种多尺度特征,在每一个尺度的特征层都限定了边界框回归的范围,不让其野蛮生长。(基于anchor的检测网络也有类似策略,比如YOLOv3中将不同大小的anchor分配到不同特征层级中作回归)更具体地说,作者首先计算所有特征层上每个位置的回归目标
第一:计算当前层级中的回归目标:l、t、r、b。
第二:判断max(l, t, r, b) > mi 或者 max(l, t, r, b) < mi -1是否满足。
第三:若满足,则不对此边界框进行回归预测。
第四:mi是作为当前尺度特征层的最大回归距离。
而且这种约束带来的额外的效果在于,由于不同尺寸的物体被分配到不同的特征层进行回归,又由于大部分重叠发生在尺寸相差较大的物体之间,因此多尺度预测可以在很大程度上缓解目标框重叠情况下的预测性能。
2、逐像素回归预测
为了提升召回率,FCOS对目标物体框中的所有点都进行边界框预测。但这种逐像素的边界框预测肯定会导致最终预测得到的边界框质量不高,不过作者有效解决了。
FCOS算法在对目标物体框中所有的点进行目标框回归时,是用的距离各个边的长度的。之所以使用这种策略,而不使用主流目标检测算法的策略,其主要原因是为了后续使用center-ness做准备的。
由于FCOS算法是基于目标物体框中的点进行逐像素回归的,因此执行回归的目标都是正样本,所以作者使用了exp()函数将回归目标进行拉伸。
最后,逐像素回归预测除了能够带来更多的框以外,更重要的是利用了尽可能多的前景样本来训练回归器,而传统的基于anchor的检测器,只考虑具有足够高的IOU的anchor box作为正样本。作者认为,这可能是FCOS优于基于anchor的同类检测器的原因之一。
3、center-ness输出分支
center-ness,可以译成中心点打分,它表征了当前像素点是否处于ground truth target的中心区域,以下面的热力图为例,红色部分表示center-ness值为1,蓝色部分表示center-ness值为0,其他部分的值介于0和1之间。
2.5、优点
I.可以将目标检测与语义分割,等基于全卷积的任务进行结合,更加简单。
II.目标检测与anchor/proposal无关,大量减少了参数量,计算量及内存。
III.FCOS也可以与RPN结合取得更好的结果。
IV.通过对模型进行小幅度改造就可以应用到其他视觉任务,比如关键点检测。
2.6、论文结果
可以看出效果还是比较好的。
标签:FCOS,特征,检测,回归,论文,目标,样本 来源: https://blog.csdn.net/sjjsbsbbs/article/details/120916504