阅读笔记——FCOS:A Simple and Strong Anchor-free Object Detector

概述

在目标检测领域,早期已经发展出非常多的 anchor based 检测方法,包括 FasterRCNN、RetinaNet、SSD、YOLO v3 等,但是 这类 anchor based 方法,存在一些比较显著的问题:

  • anchor 的大小、宽高比、以及数目都对检测性能有很大有影响;
  • 尽管可以针对数据集对 anchor 做精心设计,但是小目标检测效果仍然不够好,而且这也大大降低了泛化性能;
  • 为了检测精度,需要布置大量的 anchor,而其中绝大部分是负样本,造成了正负样本不均衡;
  • anchor box 涉及到复杂的 IoU 计算,需要给每个 anchor 分配 gt box 框。

方法

针对 anchor based 方法的问题,作者提出了 FCOS,一种 anchor free 目标检测方法,整体结构示意图如下:

阅读笔记——FCOS:A Simple and Strong Anchor-free Object Detector

具体方法上:

  • 模型输出五层不同尺度特征图,针对特征图上的点,直接回归分类和 box 坐标;
  • 正样本选择上,使用 gt box 中心区域附近的点认为是正样本点。而这个区域大小,设置为到该层的 stride 值的 1.5 倍。同时确保不超过原始 box 框的大小。这样的正样本选择,实际上使得不会由于stride的设置,使得特征图对应原图位置的点被跳过不被选中作为 box 中心;
  • 对于特征图上每个点,计算分类损失(focal loss)和回归损失(GIoU)。当然回归损失只有正样本才计算;
  • 推理阶段,使用模型预测出的分类得分和 box 位置,做 NMS 非极大值抑制(threshold=0.6),后处理流程和 RetinaNet 一致。

除此之外,FCOS 还存在两个问题:

  • 一是每个点可能对应到多个 gt 框,这使得在这个点进行的 box 和分类预测具有歧义性,模型不知道该去拟合哪个 gt (下面右图); 阅读笔记——FCOS:A Simple and Strong Anchor-free Object Detector
  • 二是在离目标中心较远的地方有很多低质量的预测框。

针对这两个问题 FCOS 给出了一定的解决方案:

  • 多层特征图:在用多层特征图进行预测的时候,限制每个层级的特征图预测的 box 的大小范围,降低每个位置需要回归的 box 的歧义性。如果仍然有一个点对应到多个 gt 的情况,那么直接选择面积最小的 gt 作为这点的对应框;
  • 提出Center-ness:在回归分支上增加一个 Center-ness 分支,预测每个位置和中心位置的偏移程度。在训练阶段将 Center-ness 加入损失项;在推理阶段,一个位置的得分是分类得分和 Center-ness 得分的乘积,抑制离目标中心点远的低质量预测。

Real-time FCOS

除 FCOS 模型,还提出了一个更为轻量化的 Real-time FCOS 模型,主要的修改在于:

  • 降低输入图像大小,将输入图像短边由 800 降低到 512,长边最大值由 1333 降低到 736
  • 取消 P6P7 两个低分辨率特征图。

结论

最终 FCOS 在 COCO 上 获得了较高的得分值。指标超出 anchor based 方法,但是可以看出仍然存在较多的手工设计值,回归歧义性的问题也需要更好的解决方法。如果实际使用,还是建议更新更成熟的算法。指标图如下:

阅读笔记——FCOS:A Simple and Strong Anchor-free Object Detector

上一篇:关于yolo3的学习


下一篇:Unity(Pivot和Anchor)