概述
在目标检测领域,早期已经发展出非常多的 anchor based 检测方法,包括 FasterRCNN、RetinaNet、SSD、YOLO v3 等,但是 这类 anchor based 方法,存在一些比较显著的问题:
- anchor 的大小、宽高比、以及数目都对检测性能有很大有影响;
- 尽管可以针对数据集对 anchor 做精心设计,但是小目标检测效果仍然不够好,而且这也大大降低了泛化性能;
- 为了检测精度,需要布置大量的 anchor,而其中绝大部分是负样本,造成了正负样本不均衡;
- anchor box 涉及到复杂的 IoU 计算,需要给每个 anchor 分配 gt box 框。
方法
针对 anchor based 方法的问题,作者提出了 FCOS,一种 anchor free 目标检测方法,整体结构示意图如下:
具体方法上:
- 模型输出五层不同尺度特征图,针对特征图上的点,直接回归分类和 box 坐标;
- 正样本选择上,使用 gt box 中心区域附近的点认为是正样本点。而这个区域大小,设置为到该层的 stride 值的 1.5 倍。同时确保不超过原始 box 框的大小。这样的正样本选择,实际上使得不会由于stride的设置,使得特征图对应原图位置的点被跳过不被选中作为 box 中心;
- 对于特征图上每个点,计算分类损失(focal loss)和回归损失(GIoU)。当然回归损失只有正样本才计算;
- 推理阶段,使用模型预测出的分类得分和 box 位置,做 NMS 非极大值抑制(threshold=0.6),后处理流程和 RetinaNet 一致。
除此之外,FCOS 还存在两个问题:
- 一是每个点可能对应到多个 gt 框,这使得在这个点进行的 box 和分类预测具有歧义性,模型不知道该去拟合哪个 gt (下面右图);
- 二是在离目标中心较远的地方有很多低质量的预测框。
针对这两个问题 FCOS 给出了一定的解决方案:
- 多层特征图:在用多层特征图进行预测的时候,限制每个层级的特征图预测的 box 的大小范围,降低每个位置需要回归的 box 的歧义性。如果仍然有一个点对应到多个 gt 的情况,那么直接选择面积最小的 gt 作为这点的对应框;
- 提出Center-ness:在回归分支上增加一个 Center-ness 分支,预测每个位置和中心位置的偏移程度。在训练阶段将 Center-ness 加入损失项;在推理阶段,一个位置的得分是分类得分和 Center-ness 得分的乘积,抑制离目标中心点远的低质量预测。
Real-time FCOS
除 FCOS 模型,还提出了一个更为轻量化的 Real-time FCOS 模型,主要的修改在于:
- 降低输入图像大小,将输入图像短边由
800
降低到512
,长边最大值由1333
降低到736
; - 取消
P6
、P7
两个低分辨率特征图。
结论
最终 FCOS 在 COCO 上 获得了较高的得分值。指标超出 anchor based 方法,但是可以看出仍然存在较多的手工设计值,回归歧义性的问题也需要更好的解决方法。如果实际使用,还是建议更新更成熟的算法。指标图如下: