论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection

论文笔记(二) FCOS:Fully Convolutional One-Stage Object Detection

这也是一篇目标检测的2019年的论文,和上篇的FSAF一样属于对无锚框检测器的研究。但和上篇不同的是,上篇的FSAF只是在基于锚框的检测器(比如Retinanet)上增加设计了一个基于无锚框的模块来解决尺度选择的问题。而这篇论文是和图像分割一样完全基于全卷积的检测器,没有用到在目标检测领域主流的锚框。
FCOs论文链接:https://arxiv.org/abs/1904.01355
开源代码:[github: tinyurl.com/FCOSv1](github: tinyurl.com/FCOSv1)
报告ppt:https://pan.baidu.com/s/1P-ZMs3AMAroO8SoniTNIJg提取码:9yni

论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection

introduction

论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection
目前主流的单阶段检测器(FasterR-CNN,SSD,YOLOv2/v3)都依赖于一系列预定义的锚框(anchor box)来匹配所有的正样本,并且都认为对锚框的使用导致了检测器的成功。但是由于锚框的使用,目前的检测器都存在如下局限性:

  1. 检测器的表现对锚框的参数设置很敏感(大小、比例、数量)例:retinaNet在COCO数据集上通过调节参数增加了4%的准确率。
  2. 即使很小心的调节参数,由于锚框在训练时是保持不变的,检测器还是很难对形变较大的物体进行检测,尤其是小物体。并且,当检测任务发生变化时,检测器得重新调整锚框的参数进行重新训练。
  3. 为了获得较高的召回率(即为了尽可能的检测到所有的正样本),一个基于锚框的检测器需要在输入图像上设置极为密集的锚框(一个短边为800像素的图像在FPN网络上有超过180k数量的锚框),这也导致了正样本与负样本的在训练时的极度不均衡
  4. 锚框也导致了与真实标签(ground-truth)之间复杂的交并比计算

由此,作者认为目标检测不应该局限于锚框的使用,基于全卷积的目标检测能够代替锚框成为新的主要研究对象。并且列出了目前在全卷积网络框架下目标检测工作:如densebox直接在特征图上预测一个4D的向量和一个类别种类。但是这个网络存在一个很大的缺点,就是当边界框高度重叠时导致检测十分模糊。如下图:

论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection所以作者在经过研究与实验后,提出了FCOs模型,有如下优点:

  1. 此检测器与其他的全卷积任务(比如语义分割,关键点)相统一,能在这些任务中重复使用
  2. 由于没有使用锚框和候选框,超参数大大减少
  3. 同样导致避免了复杂的交并比计算,是的训练加快且占据内存减少
  4. 在单阶段检测取得好结果的同时,FCOs在结合了RPNs形成的2阶段检测器的表现也优于基于锚框的2阶段检测器

Our Approach

全卷积单阶段物体检测器

这一节介绍作者的基于全卷积的逐像素的网络架构。
ground-truth(标签):(x0,y0,x1,y1,ci )其中(x0,y0)表示真实标签的左上点,(x1,y1)表示真实标签的右下点,ci为标签的类别。
当像素落入标签中时,则被视为正样本,否则被视为负样本不进行回归。回归的量包括一个类别值c和四个边框值(l,t,r,b),与基于锚框的检测器不同的是:基于锚框的检测器对锚框的偏移量进行回归,而FCOs直接对四个边界离像素点的距离进行回归。
损失函数:
论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection
该损失函数与retinanet的损失函数无大异,其中Npos表示样本数量,上面是一个分类分支的focalloss,下面是一个边界回归的交并比损失函数。

用多层预测来解决重叠边界框的模糊问题并提高召回率
  1. CNN中经过加大的stride得到的feature map可能会产生较低的最可能召回率(BPR)。对于基于anchor的方法,可以通过调整IoU的阈值来补偿较大stride导致的较低召回率,对于FCOS来说,由于较大stride后的feature map上没有位置编码信息,因此,FCOS得到的BPR可能会更低,然而,通过FCN仍可以得到较满意的BPR。因此,BPR对于FCOS来说并不是一个问题。此外,通过much-level FPN预测,BPR可以得到进一步的提高可以达到RetinaNet最好的高度。
  2. 训练时,与ground truth boxes的重叠可能会产生难以理解的模糊情况,会拉低基于FCN检测器的检测能。本文通过多层次预测解决上述问题
    FCOs同样使用了FPN(特征金字塔)来进行多层预测,但是在结构上有一些差异:

论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection如图:FCOs的p6,p7层不是通过c67和上一层的下采样融合而成,而是直接通过下一层的上采样而成。(瓦也不知道为什么这么干)
并且,在基于锚框的检测器中,是对不同层的特征图来分配不同大小的锚框,而在FCOs中,直接通过限定回归框的尺寸来进行分层。
具体来说,如果max(l,t,r,b)>mi或<m(i-1),那么该回归框会被当作负样本不进行回归。
通过这样的多层预测,本来重叠的回归框也会因为大小不同而被分到不同层而不互相影响,并且还大量减少了负样本参与回归的数量。
但还是有重叠情况的发生,在这种情况下,FCOs简单的使用标签框最小的标签作为其标签。

center-ness:抑制低质量的检测框

在通过多层预测之后,FCOs的性能仍然和retinanet有着很大的差距,经过实验发现,这种差距的原因在于有很多离目标中心很远的像素点形成了大量低质量的预测框。为了解决这个问题,作者提出了一个center-ness分支平行于classify分支,来降低离中心点较远的预测框的置信分数,从而使其在nms(非极大值抑制)中竞争力更小。

论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection
这个平方根的作用是减缓center-ness的衰退,这个center-ness的大小是0-1,所以用二分交叉熵作为损失函数。
在测试的时候,每个预测框的得分由center-ness的值加上分类分数而成,所以在进行非极大值抑制时,离物体中心越远的预测框得分就会越小
这个方法简单且有效,在没有引入任何超参数的情况下极大的抑制了这些低质量边界框的出现。
最后的置信分数为center-ness乘上分类置信分数。

实验

这部分直接放图吧

论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection论文报告笔记(二) FCOS:Fully Convolutional One-Stage Object Detection学习啊学习