论文阅读笔记 | 目标检测算法——FCOS算法

简介: 论文阅读笔记 | 目标检测算法——FCOS算法

paper:FCOS: Fully Convolutional One-Stage Object Detection

source code:https://tinyurl.com/FCOSv1


简介:FCOS以类似于语义分割的逐像素预测方式来解决目标检测,由全卷积网络组成。是一种anchor free,甚至是proposal free的方法。完全避免与anchor有关的复杂计算与超参数,利用唯一的后处理非最大抑制(NMS)。


1. Introduction


在很长的一段时间内,anchor的使用被认为是目标检测的关键一步,所以很多主流的目标检测算法都是基于anchor的检测,包括Faster RCNN,SSD,YOLOv2,v3等算法。但是,基于anchor的目标检测算法具有几下些缺点:


1)检测性能对锚盒的大小、纵横比和数量很敏感。因此,这些超参数需要在基于anchor的检测器中仔细调整。

2)即使经过精心设计,由于anchor的比例和纵横比保持固定,检测器在处理具有大形状变化的候选对象时也会遇到困难,尤其是对于小对象。预定义的anchor也妨碍了检测器的泛化能力,因为它们需要针对具有不同对象大小或纵横比的新检测任务进行重新设计。

3)为了提高检测时的召回率(查全率),需要密集覆盖的使用anchor。而在多尺度使用时,anchor的用量更甚。而绝大多数anchor都是负样本,所以会出现正负样本不均衡的问题。(retinanet提出的focal loss就是为了解决这个问题)

4)密集的使用anchor意味着计算量更大,因为需要计算anchor与ground truth的交并比(iou)


作者首次证明,简单得多的基于FCN的检测器比基于anchor的检测器获得更好的性能。


FCOS算法不是首先提出使用全卷机网络实现目标检测的,DenseBox同样是基于FCN的一个算法。FCOS会对特征图上的每一个点预测出一个4维的向量再加上一个类别信息,也就是对WxH的特征图上的每一个点,设置的channels为5.其实这与语义分割是类似的,只不过多了4个边界框偏移的信息。(见下文的图1)


但是这些算法主要应用与本文检测与人脸检测领域,因为当应用于具有高度重叠的边界框的一般对象检测时,这些方法不能很好地工作。如上右图所示,高度重叠的边界框导致难以处理的模糊性,不清楚参数w,r,t为重叠区域中的像素回归哪个边界框。不过,paper中也提到,有了FPN,这种模糊性可以在很大程度上消除。


作者观察到,FCOS算法可能会在远离目标对象中心的位置产生许多低质量的预测边界框。为了抑制这些低质量检测,作者引入了“center-ness”的分支(只有一层)来预测一个像素相对于其对应边界框中心的偏差。然后,该分数被用于对低质量检测到的边界框进行降低权重,并合并NMS的检测结果。由于设置了这个“center-ness”分支,使得基于FCNs的检测器要由于基于anchor的检测器。


FCOS作为一个新的检测框架,具有如下一些优点:


1)检测现在与许多其他可行的任务(如语义分割)相统一,使得重用这些任务中的想法变得更加容易。也就是可以将语义分割上的一些想法用在检测上。

2)检测避免了anchor与proposal,减小了设计的参数量,避免了许多特定任务的调整与技巧,同时还减少了计算量(Iou)

3)没有花哨的功能,我们在One-step检测器中取得了一流的结果。所提出的FCOS可以用作Two-step检测器中的区域提议网络(RPNs),并且可以获得比基于anchor的区域提议网络更好的性能。为此,需要重新思考物体检测中anchor的必要性。

4)FCOS可以立即扩展,以最小的修改来解决其他视觉任务,包括实例分割和关键点检测。


2. FCOS Approach


2.1 Fully Convolutional One-Stage Object Detector

image.png

image.png


如果一个位置在多个ground truth box内,则它视为模糊样本,选择box面积最小的作为它的回归对象。在下一节中,将展示使用多级预测(类似FPN结构),模糊样本的数量可以显著减少,因此它们几乎不影响检测性能。

image.png

值得注意的是,FCOS可以利用尽可能多的前景样本来训练回归器。而基于anchor的检测区只考虑具有足够高的Iou的anchor box作为正样本,这可能是FCOS表现更优的原因之一。


2.1.1 Networks

在FCOS的网络结构的最后一层上,将预测分类标签长度为80D的类别向量p ,同时还将预测一个4D的向量t作为距离边界框的四个参考偏移量t = ( l , t , r , b ) t = (l,t,r,b)t=(l,t,r,b).对于分类,采用的c个二分类器而不是多分类器。类似于RetinaNet,在Backbone后增加4个卷积层分别用于预测分类和回归,由于所有回归的对象都是正样本,所以在回归分支后使用函数e x p ( x exp(xexp(x)将所有真值映射到( 0 , ∞ ) (0,∞)(0,∞)。相比使用9个anchor的基于anchor的网络,其输出少了9倍。具体的网络结构如图所示:


image.png

2.1.2 Loss

损失函数定义为:

image.png

补充:

在paper中,其实对损失函数的解释比较少,但是一眼看上去,其实大概可以了解其含义。FCOS的损失函数由两个部分组成,一个是分类损失,另外一个就是边界框回归损失。而对于分类损失,使用的是retinanet的focal loss,focal loss的解释具体可以查看另一篇文章:focal loss


2.2 Multi-level Prediction with FPN for FCOS

上诉内容提到过,FCOS具有两个可能的问题:1)低召回率. 2)模糊样本.而这两个问题可以通过使用多尺度特征预测来解决,也就是使用FPN结构。


1) low best possible recall


在CNN中,如果最终特征图的stride很大,那么会导致一个相对很低的最大可能召回率best possible recall (BPR)。对于基于anchor的检测器来说,可以通过降低判断为正样本的IOU阈值来弥补一些。对于FCOS,虽然看似可能会因为很大stride导致一些物体在最终特征图上消失,进而导致无法检测这些物体,但是实际上,即使有着很大的stride,基于FCN的FCOS也能够达到很好的BPR,甚至好过RetinaNet。加上多级FPN预测后,BPR能够进一步提高。


2)intractable ambiguity


若干ground truth boxes的重叠会使得该在这些区域的位置不知道以谁作为回归对象,这也是导致基于FCN网络的性能下降的原因,本文证实通过多级预测能够很好的解决这个问题,使得基于FCN的网络能有和基于anchor的网络一样甚至更好的性能。


作者发现,以上所说,FCOS的两个可能的问题都可以通过多尺度特征预测(multi-level prediction)来解决。

image.png


由于具有不同大小的对象被分配到不同的要素级别,并且大部分重叠发生在具有显著不同大小的对象之间。如果一个位置,即使使用了多级预测,仍然被分配给多个ground-truth boxes,我们只需选择面积最小的ground-truth boxes作为目标即可。实验表明,多级预测可以很大程度上缓解上述模糊样本,并将基于FCN的检测器提高到与基于anchor的检测器相同的水平。

image.png


2.3 Center-ness for FCOS

解决了多尺度预测的问题后,仍存在另一个问题:实验表明FCOS会产生大量偏离目标中心的边界框。作者提出了一个简单而有效的策略来抑制这些低质量的检测边界框,而不引入任何超参数。具体来说,作者在最后的分类head中,添加了一个单层分支,与分类分支并行(如图所示),以预测某一位置点的“center-ness”。

image.png

image.png

这里使用sqrt来减缓center-ness的衰退。center-ness范围从0到1,因此用二元交叉熵损失进行训练。损失被加到损失函数方程中。

image.png

在测试时,通过将预测的center-ness与相应的分类分数相乘来计算最终分数(用于对检测到的边界框进行排序)。因此,center-ness可以降低远离对象中心的边界框的分数。结果,这些低质量的预测边界盒很有可能被最终的非最大抑制(NMS)过程过滤掉,从而显著提高检测性能。


center-ness的一个替换方法是只把ground truth box距离其中心的某个半径范围内的点(即ground truth box中心的点)视为正样本,这个idea是作者从focal loss中得到的,最后作者尝试了同时结合这两种方法,性能得到了些许提升。


3. Result


  • Multi-level Prediction的作用:

image.png

  • center-ness的作用:

image.png

  • 与其他SOTA算法的对比:

image.png

总结:

作者提出了一个anchor-free与proposal-free的检测器FCOS。实验结果优于RetinaNet, YOLO ,SSD,且复杂度更低。FCOS完全避免了与anchor相关的所有计算和超参数,并以每像素预测的方式解决了对象检测,类似于语义分割等其他密集预测任务。在One-step网络中获得一流的性能,并且可以替代Two-step网络中的RPN模块,效果甚至优于RPN结构。


目录
相关文章
|
7月前
|
监控 安全 算法
137_安全强化:输入过滤与水印 - 实现输出水印的检测算法与LLM安全防护最佳实践
随着大语言模型(LLM)在各行业的广泛应用,安全问题日益凸显。从提示注入攻击到恶意输出生成,从知识产权保护到内容溯源,LLM安全已成为部署和应用过程中不可忽视的关键环节。在2025年的LLM技术生态中,输入过滤和输出水印已成为两大核心安全技术,它们共同构建了LLM服务的安全防护体系。
722 148
|
7月前
|
存储 机器学习/深度学习 编解码
双选择性信道下正交啁啾分复用(OCDM)的低复杂度均衡算法研究——论文阅读
本文提出统一相位正交啁啾分复用(UP-OCDM)方案,利用循环矩阵特性设计两种低复杂度均衡算法:基于带状近似的LDL^H分解和基于BEM的迭代LSQR,将复杂度由$O(N^3)$降至$O(NQ^2)$或$O(iNM\log N)$,在双选择性信道下显著提升高频谱效率与抗多普勒性能。
421 0
双选择性信道下正交啁啾分复用(OCDM)的低复杂度均衡算法研究——论文阅读
|
9月前
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
261 0
|
8月前
|
传感器 资源调度 算法
DDMA-MIMO雷达多子带相干累积目标检测算法——论文阅读
本文提出一种多子带相干累积(MSCA)算法,通过引入空带和子带相干处理,解决DDMA-MIMO雷达的多普勒模糊与能量分散问题。该方法在低信噪比下显著提升检测性能,实测验证可有效恢复目标速度,适用于车载雷达高精度感知。
934 4
DDMA-MIMO雷达多子带相干累积目标检测算法——论文阅读
|
7月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
8月前
|
机器学习/深度学习 算法 算法框架/工具
256KB内存约束下的设备端训练:算法与系统协同设计——论文解读
MIT与MIT-IBM Watson AI Lab团队提出一种创新方法,在仅256KB SRAM和1MB Flash的微控制器上实现深度神经网络训练。该研究通过量化感知缩放(QAS)、稀疏层/张量更新及算子重排序等技术,将内存占用降至141KB,较传统框架减少2300倍,首次突破设备端训练的内存瓶颈,推动边缘智能发展。
558 6
|
9月前
|
人工智能 算法 安全
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
263 0
|
机器学习/深度学习 人工智能 JSON
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
Paper2Code是由韩国科学技术院与DeepAuto.ai联合开发的多智能体框架,通过规划、分析和代码生成三阶段流程,将机器学习论文自动转化为可执行代码仓库,显著提升科研复现效率。
1711 19
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
|
11月前
|
机器学习/深度学习 运维 监控
实时异常检测实战:Flink+PAI 算法模型服务化架构设计
本文深入探讨了基于 Apache Flink 与阿里云 PAI 构建的实时异常检测系统。内容涵盖技术演进、架构设计、核心模块实现及金融、工业等多领域实战案例,解析流处理、模型服务化、状态管理等关键技术,并提供性能优化与高可用方案,助力企业打造高效智能的实时异常检测平台。
1044 1
|
10月前
|
存储 监控 算法
基于跳表数据结构的企业局域网监控异常连接实时检测 C++ 算法研究
跳表(Skip List)是一种基于概率的数据结构,适用于企业局域网监控中海量连接记录的高效处理。其通过多层索引机制实现快速查找、插入和删除操作,时间复杂度为 $O(\log n)$,优于链表和平衡树。跳表在异常连接识别、黑名单管理和历史记录溯源等场景中表现出色,具备实现简单、支持范围查询等优势,是企业网络监控中动态数据管理的理想选择。
262 0