不需要锚框:一种全卷积 One-Stage 目标检测算法(FCOS)

简介: 不需要锚框:一种全卷积 One-Stage 目标检测算法(FCOS)

本文内容框架

  1. 基于锚框的检测器(Anchor-Based Detectors)
  2. 全卷积 One-Stage 目标检测算法(FCOS)的提出
  3. 多级检测(Multi-level detection)
  4. Centre-Ness 策略
  5. 实验对比
  6. 总结

基于锚框的检测器(Anchor-Based Detectors)

现有的目标检测方法大多使用预先定义的锚框,如:Fast-RCNN, YOLOv3, SSD, RetinaNet 等。但是这些锚框涉及到许多的超参数,如:锚框数量、尺寸比、图像划分区域数量等。而这些超参数对于最终结果的影响很大。其中,边框被判断为正样本还是负样本,由 Intersetcion over Union (IoU)这个超参数决定。而 IoU 的值极大程度上影响着锚框。下图展示了 Yolov3 当中锚框的作用:

image.png

我们之所以延续使用锚框,是因为这一方法的思想存在已久——历史上第一个目标检测器就是借鉴了经典计算机视觉早期检测模型中滑动窗口(sliding window)的概念。但是,既然现在我们拥有了多个 gpu,那么也就不需要滑动窗口了。

FCOS 的提出

因此 FCOS 方法采用了新的思路,即不再使用锚框,而是像语义分割一样,以逐像素预测的方式解决目标检测问题。首先,让我们看看这种方法是如何工作的:

Fᵢ为总步长为s的 CNN 的第一层Fᵢ⁰特征图。同时定义图像的基础边界框为Bᵢ = ( x⁰ᵢ, y⁰ᵢ, x¹ᵢ, y¹ᵢ, cᵢ ) ∈ R₄ × {1, 2 … C}. 。其中,C是类的数量;(x⁰ᵢ, y⁰ᵢ)(x¹ᵢ, y¹ᵢ) 是边框的左上角及右下角坐标。对于特征图上的任一位置(x,y),类似于语义分割中的工作,我们可以确定其对应的原始图像中的像素。然后将特征图上的(x,y)映射到感受野中心附近位置(floor(s/2) + x*s, floor(s/2) + y*s)。通过一个 8x8 的图像以及 4x4 的特征图,将能够很好地理解这一特征提取过程。

通过上述映射,我们能够将图像中的每个像素都关联起来作为训练样本。也就意味着每个位置(x,y)都可以是正样本或负样本之一,而决定其是否属于正样本的条件为:当其位于基础边界框以内,并且该点计算得到的标签与基础边界框的标签一致。

具体的,我们通过四个值(l*, t*, r*, b*)的回归可以确定边界框的尺寸:

并且针对这些值的回归计算也将是整个检测算法的损失函数的一部分

现在,由于没有锚框,因此不需要计算锚框和边界框之间的 IoU 来获得正样本,从而可以直接训练回归器。相反,被确定为正样本的每个点(位于边界框内并具有正确的类标签)都是边界框尺寸参数回归的一部分。而这可能是即使使用的超参数更少,但FCOS比基于锚框的检测器工作得更好的原因之一。

对于特征图中的每个点,我们计算其分类得分,而对于被确定为正样本的每个点,我们进行回归。因此,总损失函数变成:

image.png

其中,λ=1。

RHS的第一部分是像素(x,y)分类,采用了 RetinaNet 中使用的标准焦距损失(Standard focal loss)。RHS的第二部分是边界框的回归,对于被确定为非正样本的像素,它被赋值为零。

多级检测(Multi-level detection)

多级预测是指利用不同层次的特征图进行目标检测。这类似于在RetinaNet中使用的FPNs(Feature Pyramid Networks)的概念。如下图所示,检测器应用于特征图P3、P4、P5、P6、P7等多个级别,这有助于我们检测图像中不同大小的物体,同时也有助于解决边界框重叠的问题。

image.png

基于锚框的检测器,通过将不同的锚框应用于不同的特征级别,以实现在不同级别分离不同的重叠的边界框。而类似于 FCOS 的无锚框检测器,则通过在不同的特征级别对回归预测进行约束,以实现相同的功能。具体地,首先定义了 $m_i$参数,对于所有的特征级别(P3-P7),mᵢ被分别设定为0、64、128、256、512和无穷大,而对于P2则设定为0。以P7为例,当max(l*,r*,t*,b*)< infinity时,对边界框进行回归预测。如果一个像素即使在多级检测之后仍然被分配给多个边界框,它将自动分配给两个边界框中较小的一个。

Centre-Ness 策略

center-ness策略在每一个层级预测中添加了一个center-ness分支,该分支与分类和回归并行。顾名思义,它是对边界框内正样本像素的中心度进行计算,相当于给网络添加了一个损失,而该损失保证了预测的边界框尽可能的靠近中心。这是为了改善无锚框检测器的性能,使其与基于锚框的检测器不相上下。

具体地,中心度(centerness)计算如下:

image.png

实验对比

与主流的基于锚框的目标检测算法进行性能对比,结果如下:

image.png

上表显示了 FCOS 与 RetinaNet (一种最先进的基于锚框的算法)的性能比较。可以看出,在相同主干网络的情况下,FCOS的性能比RetinaNet高出1.9%。对于这两种模型,在nms阈值等参数设置相同的情况下,采用多级预测策略和centre-ness策略的FCOS算法表现都优于RetinaNet。上表中提到的“improvements”包括:①将中心度分支移到回归分支而不是分类分支;②控制采样。

image.png

同时,上表展示了有添加 center-ness 策略和未添加 center-ness 策略的算法性能比较。可以明显看出 center-ness 策略对于提升算法性能有着很大作用。基于锚框的算法在对正锚框和负锚框进行分类时需要引入IoU阈值参数,而 center-ness 策略有助于消除这些超超参数。

值得注意的是,该研究中使用的一些重要的超参数,如学习率,NMS抑制阈值等,都是基于 RetinaNet 获取到。而如果进一步对这些超参数进行调整,将可能获得更好的目标检测效果。

总结

FCOS 这一算法能够使得目标检测更加简单化、快速化。这一方法的提出,将引导更多研究者摒弃基于锚框的目标检测算法,有可能成为解决目标检测这一难题更有效的方案。

目录
相关文章
|
11天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
143 55
|
21天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
112 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
1月前
|
机器学习/深度学习 监控 算法
基于反光衣和检测算法的应用探索
本文探讨了利用机器学习和计算机视觉技术进行反光衣检测的方法,涵盖图像预处理、目标检测与分类、特征提取等关键技术。通过YOLOv5等模型的训练与优化,展示了实现高效反光衣识别的完整流程,旨在提升智能检测系统的性能,应用于交通安全、工地监控等领域。
|
1月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
87 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
2月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
2月前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种基于WOA优化的GroupCNN分组卷积网络时间序列预测算法。使用Matlab2022a开发,提供无水印运行效果预览及核心代码(含中文注释)。算法通过WOA优化网络结构与超参数,结合分组卷积技术,有效提升预测精度与效率。分组卷积减少了计算成本,而WOA则模拟鲸鱼捕食行为进行优化,适用于多种连续优化问题。
|
2月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
78 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
80 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA-PSO-SVM算法的混沌背景下微弱信号检测matlab仿真
本项目基于MATLAB 2022a,展示了SVM、PSO、GA-PSO-SVM在混沌背景下微弱信号检测中的性能对比。核心程序包含详细中文注释和操作步骤视频。GA-PSO-SVM算法通过遗传算法和粒子群优化算法优化SVM参数,提高信号检测的准确性和鲁棒性,尤其适用于低信噪比环境。