FCOS

FCOS#

标题: FCOS: Fully Convolutional One-Stage Object Detection

作者: Zhi Tian, Chunhua Shen, Hao Chen, Tong He

机构: The University of Adelaide, Australia

摘要:

  • 提出了一种全新的目标检测框架,名为FCOS(Fully Convolutional One-Stage Object Detection)。

  • 该框架模拟语义分割的方式,采用逐像素预测的方法来解决目标检测问题。

  • 与现有基于锚框(anchor boxes)的方法不同,FCOS无需预定义锚框,也不需要候选区域(proposals)。

  • 通过消除锚框相关的复杂计算和超参数,FCOS在简化模型的同时,还取得了更好的检测精度。

引言:

  • 目标检测是计算机视觉领域的基础任务之一,需要预测图像中每个感兴趣实例的边界框和类别标签。

  • 当前主流的目标检测器(如Faster R-CNN, SSD, YOLOv2, v3)依赖于预定义的锚框,但这些方法存在一些缺点,比如对锚框尺寸、纵横比和数量敏感,难以处理形状变化大的物体,训练时正负样本不平衡,以及计算复杂度高等。

相关工作:

  • 锚框基础的检测器:继承了传统的滑动窗口和基于提议的方法,如Fast R-CNN。

  • 无锚框检测器:例如YOLOv1,它不使用锚框,而是在物体中心附近的点预测边界框。

方法:

  • FCOS通过在每个前景像素上预测一个4D向量(l, t, r, b)来编码边界框的位置。

  • 引入了“center-ness”分支,用于预测像素到其对应边界框中心的偏差,以抑制低质量的检测框。

实验:

  • 在COCO数据集上进行实验,使用COCO trainval35k分割进行训练,minival分割进行验证。

  • 展示了FCOS与现有一阶段检测器相比具有更好的性能,尤其是在AP(平均精度)指标上。

结论:

  • FCOS是一个简单而强大的目标检测框架,无需锚框,可以作为许多其他实例级别任务的替代方案。

回答问题

  1. 这篇论文做了什么工作,它的动机是什么?

    • 论文提出了FCOS,一个无锚框的一阶段目标检测框架。动机是简化目标检测流程,消除与锚框相关的复杂计算和超参数,同时提高检测精度。

  2. 这篇论文试图解决什么问题?

    • 论文试图解决基于锚框的目标检测方法中的多个问题,包括对锚框尺寸、纵横比和数量的敏感性,处理形状变化大的物体的困难,训练时正负样本不平衡,以及计算复杂度高。

  3. 这是否是一个新的问题?

    • 目标检测中的锚框问题并不是一个新问题,但提出无锚框的一阶段检测框架是一个新颖的解决方案。

  4. 这篇文章要验证一个什么科学假设?

    • 论文要验证的科学假设是:无锚框的一阶段目标检测框架能够实现与基于锚框的方法相当的或更好的检测精度,同时简化模型结构。

  5. 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?

    • 相关研究包括基于锚框的检测器(如Faster R-CNN, SSD, YOLOv2, v3)和无锚框检测器(如YOLOv1, CornerNet)。这些研究可以根据是否使用锚框进行归类。领域内值得关注的研究员包括Kaiming He、Ross Girshick、Tsung-Yi Lin等。

  6. 论文中提到的解决方案之关键是什么?

    • 解决方案的关键是FCOS框架,它采用逐像素预测的方式,无需预定义锚框,并通过“center-ness”分支来提高检测质量。

  7. 论文中的实验是如何设计的?

    • 实验设计包括使用COCO数据集进行训练和验证,以及对比FCOS与其他一阶段和两阶段目标检测器的性能。

  8. 用于定量评估的数据集上什么?代码有没有开源?

    • 用于定量评估的数据集是COCO。论文提供了代码的链接:tinyurl.com/FCOSv1,表明代码已经开源。

  9. 论文中的实验及结果有没有很好地支持需要验证的科学假设?

    • 是的,实验结果表明FCOS在AP等指标上超越了现有的一阶段检测器,支持了论文的科学假设。

  10. 这篇论文到底有什么贡献?

    • 论文的贡献包括提出了一个新颖的无锚框一阶段目标检测框架FCOS,简化了目标检测流程,并在保持计算效率的同时提高了检测精度。

  11. 下一步呢?有什么工作可以继续深入?

    • 下一步的工作可以包括进一步优化FCOS框架,探索在不同数据集和实际应用场景中的性能,以及将FCOS扩展到其他计算机视觉任务,如实例分割和关键点检测。


fcos-fig1

图表展示了FCOS(Fully Convolutional One-Stage Object Detection)算法的工作原理及其在某些情况下的局限性。

左图展示了FCOS如何通过预测一个4D向量(l, t, r, b)来编码每个前景像素的边界框位置。这个4D向量表示从当前像素到边界框左、上、右、下边界的距离。训练过程中,这些预测是通过监督学习的方式,利用真实的边界框信息进行指导。

右图展示了一个问题,即当一个位置处于多个边界框内时,可能会出现模糊的情况,不确定该位置应该回归到哪个边界框。这种情况在重叠的边界框中尤为明显,可能会导致检测结果的不准确。

结合摘要,可以总结如下:

FCOS是一种全卷积单阶段目标检测算法,通过预测每个前景像素到边界框边界的距离来确定目标的位置。然而,当一个像素点位于多个重叠的边界框内时,可能会出现回归目标不明确的问题。这种模糊性可能会影响检测的准确性,需要进一步的策略来解决这一问题。


fcos-fig2

图表展示了FCOS(Fully Convolutional One-Stage Object Detection)算法的网络结构,具体分为三个部分:Backbone、Feature Pyramid和Head。

  1. Backbone

    • C3, C4, C5表示主干网络的特征图。

    • 这些特征图的尺寸分别为H/8, H/16, H/32(H和W分别表示输入图像的高度和宽度)。

    • 这些特征图通过主干网络(例如ResNet)提取。

  2. Feature Pyramid

    • P3, P4, P5, P6, P7表示特征金字塔的特征层。

    • 这些特征层是从C3, C4, C5特征图通过上采样和下采样操作生成的。

    • 特征金字塔的目的是在不同尺度上进行目标检测,以便更好地处理不同大小的目标。

  3. Head

    • 每个特征层(P3到P7)都连接到一个Head模块。

    • Head模块包括三个分支:分类分支、中心度分支和回归分支。

    • 分类分支用于预测每个像素点的类别。

    • 中心度分支用于预测每个像素点的中心度,表示该点是否接近目标的中心。

    • 回归分支用于预测每个像素点到边界框边界的距离(即4D向量)。

图表右侧的插图展示了Head模块的详细结构:

  • 分类分支和中心度分支共享特征层。

  • 回归分支独立处理特征层。

  • 这些分支通过卷积操作生成最终的预测结果。

总结: FCOS的网络结构由主干网络、特征金字塔和Head模块组成。主干网络提取特征图,特征金字塔在不同尺度上生成特征层,Head模块通过分类、中心度和回归分支生成最终的检测结果。这个结构使得FCOS能够在不同尺度上进行目标检测,并且通过中心度分支提高了检测的准确性。

输入流程

  1. 输入图像

    • 输入图像的尺寸为 ( H \times W )(例如,800 x 1024)。

    • 图像经过预处理(如归一化、尺寸调整等)后输入到网络中。

  2. Backbone(主干网络)

    • 输入图像首先通过主干网络(例如ResNet)进行特征提取。

    • 主干网络生成多个特征图,分别为C3, C4, C5,这些特征图的尺寸分别为 ( H/8 \times W/8 ), ( H/16 \times W/16 ), ( H/32 \times W/32 )。

  3. Feature Pyramid(特征金字塔)

    • 特征金字塔网络(FPN)对C3, C4, C5特征图进行处理,生成P3, P4, P5, P6, P7特征层。

    • P3, P4, P5特征层通过上采样和融合操作生成,P6, P7特征层通过下采样操作生成。

    • 这些特征层的尺寸分别为 ( H/8 \times W/8 ), ( H/16 \times W/16 ), ( H/32 \times W/32 ), ( H/64 \times W/64 ), ( H/128 \times W/128 )。

输出流程

  1. Head(头部模块)

    • 每个特征层(P3到P7)都连接到一个Head模块。

    • Head模块包括三个分支:分类分支、中心度分支和回归分支。

  2. 分类分支

    • 分类分支预测每个像素点的类别。

    • 输出为每个特征层上每个像素点的类别概率。

  3. 中心度分支

    • 中心度分支预测每个像素点的中心度,表示该点是否接近目标的中心。

    • 输出为每个特征层上每个像素点的中心度得分。

  4. 回归分支

    • 回归分支预测每个像素点到边界框边界的距离(即4D向量:l, t, r, b)。

    • 输出为每个特征层上每个像素点的4D向量。

综合输出

  1. 边界框生成

    • 根据回归分支的输出(4D向量),计算每个像素点的边界框位置。

    • 结合中心度得分和分类概率,筛选出高置信度的边界框。

  2. 非极大值抑制(NMS)

    • 对生成的边界框进行非极大值抑制,去除重叠的边界框,保留最优的检测结果。

  3. 最终输出

    • 输出最终的检测结果,包括目标的类别、边界框位置和置信度得分。

总结

FCOS的输入输出流程如下:

  1. 输入图像经过主干网络提取特征图。

  2. 特征图通过特征金字塔生成多尺度特征层。

  3. 每个特征层通过Head模块进行分类、中心度和回归预测。

  4. 根据回归分支的输出生成边界框,并结合分类和中心度得分筛选高置信度的边界框。

  5. 通过非极大值抑制去除重叠边界框,输出最终的检测结果。

这个流程使得FCOS能够在不同尺度上进行目标检测,并且通过中心度分支提高了检测的准确性。


fcos-fig3

图表展示了FCOS算法中的中心度(Center-ness)概念及其计算方法。中心度用于衡量一个像素点是否接近目标的中心,从而提高检测的准确性。

图表分析

  1. 颜色表示

    • 红色表示中心度为1,即像素点位于目标的中心。

    • 蓝色表示中心度为0,即像素点远离目标的中心。

    • 其他颜色表示中心度在0和1之间的值,颜色越接近红色,中心度越高;颜色越接近蓝色,中心度越低。

  2. 中心度计算

    • 中心度通过公式(图中提到的Eq. (3))计算。

    • 公式的具体形式未在图中给出,但可以推测中心度是根据像素点到目标中心的距离进行衰减的。

    • 当像素点位于目标中心时,中心度为1;当像素点远离目标中心时,中心度逐渐衰减到0。

  3. 中心度的作用

    • 在测试阶段,网络预测的中心度与分类得分相乘。

    • 这种操作可以降低那些由远离目标中心的像素点预测的低质量边界框的权重。

    • 通过这种方式,中心度帮助网络更准确地定位目标,减少误检和漏检。

具体流程

  1. 中心度预测

    • 网络在每个像素点上预测中心度得分。

    • 这些得分表示该像素点是否接近目标的中心。

  2. 中心度与分类得分相乘

    • 在测试阶段,中心度得分与分类得分相乘。

    • 这种操作可以有效地降低那些由远离目标中心的像素点预测的低质量边界框的权重。

  3. 边界框筛选

    • 结合中心度和分类得分,筛选出高置信度的边界框。

    • 通过这种方式,网络能够更准确地检测目标,并减少误检和漏检。

总结

图表展示了FCOS算法中的中心度概念及其计算方法。中心度用于衡量一个像素点是否接近目标的中心,从而提高检测的准确性。在测试阶段,中心度得分与分类得分相乘,可以有效地降低由远离目标中心的像素点预测的低质量边界框的权重。通过这种方式,FCOS能够更准确地定位目标,减少误检和漏检。


fcos-fig4

图表展示了在IOU(Intersection over Union)为0.50时,FCOS、原始RetinaNet和带有GN(Group Normalization)的RetinaNet的无类别区分的精确率-召回率(Precision-Recall)曲线。以下是对图表内容的分析和总结:

图表内容

  1. 曲线说明

    • 蓝色曲线:表示FCOS的精确率-召回率曲线。

    • 橙色曲线:表示原始RetinaNet的精确率-召回率曲线。

    • 绿色曲线:表示带有GN的RetinaNet的精确率-召回率曲线。

  2. 精确率(Precision)

    • 精确率表示在所有被预测为正样本的实例中,实际为正样本的比例。

    • 精确率越高,表示误检(False Positive)越少。

  3. 召回率(Recall)

    • 召回率表示在所有实际为正样本的实例中,被正确预测为正样本的比例。

    • 召回率越高,表示漏检(False Negative)越少。

  4. IOU = 0.50

    • IOU为0.50表示预测的边界框与真实边界框的重叠度达到50%时,认为检测是正确的。

分析

  1. FCOS vs. 原始RetinaNet

    • 蓝色曲线(FCOS)在大部分召回率范围内都高于橙色曲线(原始RetinaNet),表示FCOS在相同召回率下具有更高的精确率。

    • 这表明FCOS在减少误检方面表现更好。

  2. FCOS vs. 带有GN的RetinaNet

    • 蓝色曲线(FCOS)与绿色曲线(带有GN的RetinaNet)在大部分召回率范围内接近,但在某些区域FCOS略高。

    • 这表明FCOS在某些情况下比带有GN的RetinaNet具有更高的精确率。

  3. 整体表现

    • 三条曲线在召回率接近1时都迅速下降,表示在高召回率下,精确率会显著降低。

    • 这是一种常见现象,因为在高召回率下,模型倾向于预测更多的正样本,从而增加误检。

总结

图表展示了在IOU为0.50时,FCOS、原始RetinaNet和带有GN的RetinaNet的无类别区分的精确率-召回率曲线。总体来看,FCOS在大部分召回率范围内表现优于原始RetinaNet和带有GN的RetinaNet,具有更高的精确率。这表明FCOS在减少误检方面表现更好,尤其是在中等召回率范围内。三种方法在高召回率下的精确率都显著下降,这是由于模型在高召回率下倾向于预测更多的正样本,从而增加误检。


fcos-fig5

总结:

  1. FCOS

    • 蓝色曲线表示FCOS方法的精度-召回关系。

    • 在高召回率区域(接近1)时,精度略高于其他两种方法。

  2. Original RetinaNet

    • 橙色曲线表示原始RetinaNet方法的精度-召回关系。

    • 在中等召回率区域(0.4到0.6)时,精度表现较好。

  3. RetinaNet w/ GN

    • 绿色曲线表示使用组归一化的RetinaNet方法的精度-召回关系。

    • 整体曲线与原始RetinaNet相似,但在某些区域略有改进。

  4. 垂直虚线

    • 在召回率为0.9的位置,三种方法的精度都接近0.2,表明在高召回率下,精度较低。

结论:

  • 整体表现:三种方法的精度-召回曲线形状相似,表明它们在目标检测任务中的性能相近。

  • FCOS优势:在高召回率区域,FCOS方法的精度略高于其他两种方法,表明其在检测更多正样本时具有一定优势。

  • RetinaNet w/ GN改进:使用组归一化的RetinaNet方法在某些区域略有改进,但整体性能与原始RetinaNet相似。

  • 高召回率下的精度:在召回率为0.9时,三种方法的精度都较低,表明在追求高召回率时,精度会有所下降。

总体而言,图表展示了三种目标检测方法在不同召回率下的精度表现,FCOS在高召回率区域表现略优,而使用组归一化的RetinaNet在某些区域有所改进。


fcos-fig6

总结:

  1. FCOS

    • 蓝色曲线表示FCOS方法的精度-召回关系。

    • 在低召回率区域(0到0.2)时,精度较高,但随着召回率增加,精度迅速下降。

  2. Original RetinaNet

    • 橙色曲线表示原始RetinaNet方法的精度-召回关系。

    • 在低召回率区域(0到0.2)时,精度较高,且在中等召回率区域(0.2到0.4)时,精度下降较缓。

  3. RetinaNet w/ GN

    • 绿色曲线表示使用组归一化的RetinaNet方法的精度-召回关系。

    • 整体曲线与原始RetinaNet相似,但在某些区域略有改进。

  4. 垂直虚线

    • 在召回率为0.9的位置,三种方法的精度都接近0,表明在高召回率下,精度非常低。

结论:

  • 整体表现:三种方法的精度-召回曲线形状相似,表明它们在目标检测任务中的性能相近。

  • FCOS优势:在低召回率区域,FCOS方法的精度较高,但随着召回率增加,精度迅速下降。

  • RetinaNet w/ GN改进:使用组归一化的RetinaNet方法在某些区域略有改进,但整体性能与原始RetinaNet相似。

  • 高召回率下的精度:在召回率为0.9时,三种方法的精度都非常低,表明在追求高召回率时,精度会显著下降。

总体而言,图表展示了三种目标检测方法在不同召回率下的精度表现。FCOS在低召回率区域表现较优,而使用组归一化的RetinaNet在某些区域有所改进,但整体性能与原始RetinaNet相似。在高召回率下,三种方法的精度都较低,表明在高IOU阈值下,检测任务的难度较大。


fcos-fig7 总结:
  1. 左图(Without center-ness)

    • 散点分布较为分散,许多点位于虚线的下方,表示这些检测框的分类得分高于其IOU得分。

    • 这表明在不使用中心度的情况下,许多低质量的检测框(低IOU)仍然获得了较高的分类得分。

  2. 右图(With center-ness)

    • 散点分布更加集中,尤其是在虚线的上方和附近。

    • 许多低质量的检测框(低IOU)被推到了图的左侧,表示这些检测框的得分被显著降低。

    • 这表明在使用中心度的情况下,低质量的检测框得分被有效抑制,高质量的检测框得分更为突出。

结论:

  • 中心度的作用:中心度(center-ness)在目标检测任务中起到了显著的作用,通过将分类得分与中心度得分相乘,有效地降低了低质量检测框的得分。

  • 检测框质量提升:使用中心度后,检测框的质量得到了提升,高质量检测框(高IOU)的得分更加突出,低质量检测框的得分被显著抑制。

  • 评分分布变化:在不使用中心度的情况下,分类得分与IOU得分的关系较为分散,许多低质量检测框获得了较高的分类得分;而在使用中心度后,分类得分与IOU得分的关系更加集中,低质量检测框的得分被有效降低。

总体而言,图表展示了中心度在目标检测任务中的重要性,通过使用中心度,可以显著提升检测框的质量,使得高质量检测框的得分更加突出,低质量检测框的得分被有效抑制。