【深度学习-目标检测】06 - FPN 论文学习与总结

2023-12-27 06:28

本文主要是介绍【深度学习-目标检测】06 - FPN 论文学习与总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文地址:Feature Pyramid Networks for Object Detection

论文学习

在这里插入图片描述

1. 摘要

  1. 多尺度特征的重要性
    • 论文强调在对象检测任务中,多尺度特征对于处理不同大小的对象至关重要。这些特征有助于编码具有尺度变化的对象。
  2. 现有方法的局限性
    • 传统的多尺度特征提取策略,如使用经典的自上而下和自下而上的特征金字塔网络,存在一定的局限性。这些方法可能导致特征信息的丢失或降级,影响了特征融合的效果。
  3. 特征金字塔网络(FPN)的提出
    • 为了克服这些限制,论文提出了一种新的网络结构,即特征金字塔网络(FPN)。FPN 旨在利用深度卷积网络的多尺度、金字塔形状的特征层次结构,创建具有强大语义信息的特征金字塔。
  4. FPN的设计和优势
    • FPN通过自上而下的路径和横向连接结合低分辨率、语义强的特征与高分辨率、语义弱的特征。这种结构生成了在所有层次上都具有丰富语义的特征金字塔,并且从单一输入图像尺度快速构建。
  5. 应用和性能评估
    • 使用FPN的方法在基础的Faster R-CNN系统中实现了在COCO检测基准测试中的最先进单模型结果,超越了所有现有的单模型方案,包括COCO 2016挑战赛的获胜者。
    • 此外,该方法在GPU上的运行速度为每秒5帧,是一种实用且准确的多尺度对象检测解决方案。

补充:传统特征金字塔 和 特征金字塔网络(FPN)

  1. 传统特征金字塔
    • 构建方法:
      • 通过对原始图像进行多次下采样(例如每次减半)来构建一系列缩小的图像。
    • 特征提取:
      • 在每个尺度上独立提取特征,通常需要对每个缩小的图像分别进行特征提取。
    • 计算成本:
      • 较高,因为需要对每个尺度的图像都进行特征提取。
    • 特征融合:
      • 通常不涉及跨尺度的特征融合,每个尺度的特征独立使用。
    • 应用局限性:
      • 由于计算成本高,难以直接应用于深度学习模型中。
  2. 特征金字塔网络(FPN)
    • 构建方法:
      • 在卷积神经网络(CNN)的基础上构建,利用网络内部的层次结构。
    • 特征提取:
      • 结合了CNN中的底层(高分辨率、低语义)和高层(低分辨率、高语义)特征。
    • 计算成本:
      • 相对较低,因为利用了CNN的特征提取能力,避免了重复的特征计算。
    • 特征融合:
      • 通过自上而下的路径和横向连接实现跨尺度的特征融合。
    • 应用灵活性:
      • 适用于深度学习和对象检测,能够有效处理多尺度信息。

2. 引言

  1. 多尺度对象识别的挑战
    • 在计算机视觉中,识别不同尺度的对象是一个基本挑战。为了解决这个问题,传统上依赖于特征金字塔,这些金字塔是基于图像金字塔构建的(简称为特征化图像金字塔)。
  2. 特征化图像金字塔的作用(传统特征金字塔)
    • 这些金字塔在概念上是尺度不变的,意味着对象的尺度变化可以通过在金字塔中改变其级别来抵消。这使得模型能够通过在不同位置和金字塔层级上扫描来检测不同尺度的对象。
  3. 手工设计特征的时代
    • 在手工设计特征的时代,如DPM(Deformable Parts Model)对象检测器,特征化图像金字塔被广泛使用,并且需要密集的尺度采样(例如,每个八度音阶10个尺度)来获得良好的结果。
  4. 深度卷积网络的兴起
    • 随着深度卷积网络(ConvNets)的发展,手工设计的特征被深度学习特征所取代。ConvNets在表示高级语义方面更加强大,对尺度变化也更加鲁棒,使得从单一输入尺度计算的特征足以进行识别。
  5. 现有方法的局限性
    • 尽管ConvNets对尺度变化有一定的鲁棒性,但为了获得最准确的结果,仍然需要使用多尺度测试,并在特征化图像金字塔上进行。然而,这种方法在推理时间上的显著增加(例如,增加四倍),使其在实际应用中变得不切实际。
  6. 特征金字塔网络(FPN)的提出
    • 为了解决这些限制,论文提出了特征金字塔网络(FPN)。FPN利用深度卷积网络内在的多尺度、金字塔形层次结构,以较小的额外成本构建特征金字塔。
    • FPN通过自上而下的架构和横向连接来构建在所有尺度上都具有高级语义特征图。这种架构在多个应用中显示出作为通用特征提取器的显著改进。
  7. FPN的性能和实用性
    • 在基本的Faster R-CNN系统中使用FPN,作者的方法在COCO检测基准上实现了最先进的单模型结果,超越了所有现有的单模型方案,包括COCO 2016挑战赛的获胜者。
    • 此外,该方法在GPU上的运行速度为每秒6帧,因此是多尺度对象检测的一个实用且准确的解决方案。

3. 相关工作

  1. 手工设计的特征和早期神经网络
    • SIFT特征:最初在尺度空间极值点提取,用于特征点匹配。
    • HOG特征:后来,SIFT特征和HOG特征被密集地计算在整个图像金字塔上。这些HOG和SIFT金字塔被广泛应用于图像分类、对象检测、人体姿态估计等领域。
    • 快速计算特征化图像金字塔:有研究致力于快速计算特征化图像金字塔。例如,Dollár等人展示了通过首先计算在尺度上稀疏采样的金字塔,然后插值缺失层级来快速计算金字塔的方法。
    • 早期的ConvNet应用:在HOG和SIFT之前,早期关于使用卷积神经网络(ConvNets)进行人脸检测的工作,通过在图像金字塔上计算浅层网络来检测不同尺度的面部。
  2. 深度卷积神经网络对象检测器
    • 论文指出,尽管深度卷积网络(ConvNets)在对象检测中取得了显著进步,但在处理不同尺度的对象时,仍然面临挑战。ConvNet计算的特征层次结构具有固有的多尺度、金字塔形状,但由于不同深度导致的大的语义差距,高分辨率的映射具有低级特征,这损害了它们用于对象识别的表征能力。
  3. 单次检测器(SSD)
    • SSD是首次尝试使用ConvNet的金字塔特征层次作为特征化图像金字塔的例子。理想情况下,SSD风格的金字塔将重用在前向传递中计算的不同层的多尺度特征映射。但为了避免使用低级特征,SSD放弃了重用已计算的层,而是从网络的较高层(例如VGG网络的conv4_3)开始构建金字塔,并添加了几个新层。因此,它错过了重用特征层次结构中的高分辨率映射的机会,这对于检测小对象很重要。
  4. FPN的目标
    • 论文的目标是自然地利用ConvNet的金字塔形特征层次结构,同时创建在所有尺度上都具有强语义的特征金字塔。为此,论文依赖于一个结构,该结构通过自上而下的路径和横向连接结合低分辨率、语义强的特征与高分辨率、语义弱的特征。结果是一个在所有层次上都具有丰富语义的特征金字塔,且能够从单一输入图像尺度快速构建。
      在这里插入图片描述

4. 特征金字塔网络(FPN)

  1. FPN的目标
    • FPN的目标是利用卷积神经网络(ConvNet)的金字塔形特征层次结构,这些层次结构在低到高各个层级上都具有语义信息。FPN旨在构建一个在所有层级上都具有高级语义的特征金字塔。
    • FPN是一个通用的网络,主要关注于滑动窗口提议器(如区域提议网络,RPN)和基于区域的检测器(如Fast R-CNN)。FPN也被推广到实例分割提议中。
  2. FPN的输入和输出
    • FPN处理单尺度图像作为输入,并输出在多个层级上大小成比例的特征图,这一过程是完全卷积的。这个过程与背景卷积架构(如ResNet)无关。
  3. FPN的构建
    • FPN的构建涉及自下而上的路径、自上而下的路径和横向连接。
    • 自下而上的路径:这是背景ConvNet的前向计算,它计算了多个尺度的特征图,每个尺度的步长为2。在ResNet中,使用每个阶段的最后一个残差块的输出作为特征图。
    • 自上而下的路径和横向连接:自上而下的路径通过上采样空间粗糙但语义上更强的特征图来模拟更高分辨率的特征。这些特征随后通过横向连接与自下而上路径的特征结合。每个横向连接合并了来自自下而上路径和自上而下路径的相同空间尺寸的特征图。
  4. FPN的特点
    • 自下而上的特征图具有较低级的语义,但由于较少的下采样,其激活更精确地定位。通过结合这些特征,FPN在所有层级上都能提供丰富的语义信息。
    • FPN通过简单的最近邻上采样来增加空间分辨率,并通过额外的卷积层来减少上采样的混叠效应。

在这里插入图片描述

在这里插入图片描述

5. 应用

  1. FPN在RPN中的应用
    • RPN(区域提议网络):RPN是一种滑动窗口的类别不可知的对象检测器。在原始的RPN设计中,一个小型子网络在单尺度的卷积特征图上的密集3x3滑动窗口上进行评估,执行对象/非对象的二元分类和边界框回归。
    • FPN的适配:在FPN中,作者将RPN的单尺度特征图替换为FPN。在特征金字塔的每个层级上附加一个与原始RPN设计相同的头部(3x3卷积和两个1x1卷积)。由于头部在所有金字塔层级的所有位置上密集滑动,因此不需要在特定层级上有多尺度锚点。作者为每个金字塔层级指定单一尺度的锚点。
    • 训练标签分配:训练标签基于锚点与真实边界框之间的交并比(IoU)分配。如果锚点与给定真实框的IoU最高或超过0.7,则分配正标签;如果所有真实框的IoU均低于0.3,则分配负标签。
  2. FPN在Fast R-CNN中的应用
    • Fast R-CNN(区域基础对象检测器):Fast R-CNN使用感兴趣区域(RoI)池化来提取特征。通常在单尺度特征图上执行。
    • FPN的适配:为了在FPN中使用Fast R-CNN,需要将不同尺度的RoI分配到金字塔层级。作者将特征金字塔视为由图像金字塔产生的,并据此调整区域基础检测器在图像金字塔上运行时的分配策略。具体来说,RoI的宽度和高度用于确定其应该映射到的金字塔层级。

6. 拓展:分割建议

  1. FPN在分割建议中的应用
    • FPN不仅适用于对象检测,还可以用于生成分割提议,遵循DeepMask/SharpMask框架。 DeepMask和SharpMask在图像裁剪上训练,用于预测实例分割和对象/非对象得分。在推理时,这些模型以卷积方式运行,以在图像中生成密集的提议。
  2. FPN的适配和实现
    • FPN易于适配以生成掩码提议。作者使用完全卷积的设置进行训练和推理。在特征金字塔的每个层级上,应用一个小型的5x5多层感知器(MLP)来预测14x14的掩码和对象得分。
      受到DeepMask和SharpMask使用图像金字塔中每个八度音阶的两个尺度的启发,作者还使用了一个输入尺寸为7x7的第二个MLP来处理半八度音阶。这两个MLP的作用类似于RPN中的锚点。
  3. 分割提议的结果
    • 基线FPN模型使用单个5x5 MLP达到了43.4的平均召回率(AR)。使用稍大的7x7 MLP,准确率基本保持不变。同时使用两个MLP可以将准确率提高到45.7 AR。将掩码输出尺寸从14x14增加到28x28可以进一步提高AR(尽管更大的尺寸开始降低准确率)。最后,将训练迭代次数加倍可以将AR提高到48.1。
    • 与DeepMask、SharpMask和InstanceFCN等先前的最先进方法相比,FPN在掩码提议生成方面的准确率提高了超过8.3个点的AR。特别是在小对象上,准确率几乎翻倍。
  4. FPN的优势和效率
    • 现有的掩码提议方法基于密集采样的图像金字塔,计算成本高。相比之下,基于FPN的方法显著更快(运行速度为每秒6到7帧)。这些结果表明,FPN是一个通用的特征提取器,可以替代图像金字塔来处理其他多尺度检测问题。

7. 结论

  1. FPN的框架简介
    • 论文提出了一种清晰简单的框架,用于在卷积神经网络(ConvNets)内部构建特征金字塔。这种方法在多个强基线和竞赛获胜者的基础上显示出显著的改进。
  2. FPN的实用性和应用
    • FPN提供了一个实用的解决方案,用于研究和应用特征金字塔,而无需计算图像金字塔。这使得FPN成为处理多尺度问题的有效工具,特别是在对象检测和分割等领域。
  3. 深度ConvNets的表现力和多尺度问题
    • 尽管深度ConvNets具有强大的表征能力,并且对尺度变化具有一定的鲁棒性,但论文强调,使用金字塔表示来显式地处理多尺度问题仍然至关重要。
  4. FPN的优势
    • FPN能够在不牺牲表征能力、速度或内存的情况下,替代传统的特征化图像金字塔。这一点在对象检测和实例分割的应用中尤为突出。
  5. 未来的研究和应用
    • 论文认为,FPN的这些进步将促进未来的研究和应用,并为处理多尺度问题提供了新的视角和方法。

这篇论文《Feature Pyramid Networks for Object Detection》的主要创新点和贡献可以总结如下:

  1. 特征金字塔网络(FPN)的提出
    • 论文提出了FPN,这是一种新型的网络架构,用于在卷积神经网络(ConvNets)内部构建特征金字塔。FPN有效地利用了ConvNets的多尺度、金字塔形特征层次结构。
  2. 自上而下的架构与横向连接
    • FPN采用了独特的自上而下的架构和横向连接,这种结构能够将高层的语义强特征与低层的高分辨率特征有效结合,从而在所有尺度上都生成具有丰富语义信息的特征图。
  3. 单尺度输入图像的多尺度特征提取
    • 与传统的多尺度特征提取(如图像金字塔)不同,FPN能够从单一尺度的输入图像中提取多尺度特征,显著提高了计算效率。
  4. 提高对象检测性能
    • 在标准对象检测框架(如Faster R-CNN)中应用FPN,显著提高了对象检测的准确率,特别是在处理不同尺度对象时。
  5. 实用性和效率
    • FPN提供了一种实用且高效的方法来处理多尺度问题,无需依赖于计算成本高昂的图像金字塔,同时保持了高速度和准确性。
  6. 通用性和灵活性
    • FPN不仅适用于对象检测,还可以扩展到其他应用,如实例分割,展示了其作为通用特征提取器的潜力。
  7. 推动深度学习和计算机视觉研究
    • FPN的提出为深度学习和计算机视觉领域中的多尺度问题提供了新的解决方案,有助于推动相关研究和技术的发展。

FPN

FPN的主要工作流程如下:

  1. 输入图像处理
    • 输入单尺度图像到网络。
  2. 自下而上的路径
    • 利用卷积神经网络(如ResNet)进行前向计算。
    • 生成多个尺度的特征图,每个尺度的步长为2。
    • 选择每个阶段的最后一层作为参考特征图。
  3. 构建顶层特征图
    • 在最高层(如ResNet的conv5)上附加一个1x1卷积层,生成最粗糙的特征图。
  4. 自上而下的路径和横向连接
    • 从顶层开始,逐层向下进行特征融合。
    • 每一层的特征图通过上采样(放大2倍)与下一层的特征图合并。
    • 合并时,使用1x1卷积调整通道数,并通过元素相加的方式融合特征。
  5. 生成最终特征图
    • 在每个合并后的特征图上附加一个3x3卷积层,以减少上采样的混叠效应。
    • 生成一系列不同尺度但语义丰富的特征图。
  6. 对象检测或分割
    • 在特征金字塔的每个层级上进行对象检测或分割任务。
    • 对于对象检测,可以使用RPN(Region Proposal Network)在每个层级上生成提议。
    • 对于分割,可以在每个层级上生成分割掩码。

以YOLOv8中的FPN为例

在这里插入图片描述
红色是YOLOv8的主干特征提取网络,用于特征提取,生成特征图。
蓝色是YOLOv8采用的FPN结构,用于特征融合,这也是我们之后重点理解的地方。
绿色是YOLOv8的分类器。

我们可以看到,在主干特征提取网络部分,将三个不同尺度的特征图传递给了蓝色的FPN网络如下:

在这里插入图片描述
feat1、feat2、feat3 分别是三个尺度不同的特征层:

  • feat1:(80,80,256)(H,W,C)
  • feat2:(40,40,512)(H,W,C)
  • feat3:(20,20,1024)(H,W,C)(暂时忽略deep_mul)

首先,我们来看 feat3 和 feat2 特征融合的过程:

  1. feat3 进行上采样,变成(40,40,1024),需要将宽、高变成与feat2一样。
  2. feat3(40,40,1024)与feat2(40,40,512)在通道维度上进行融合(concat)。
  3. feat3 + feat2 (40,40,1024+512)通过CSP(暂时理解为1x1Conv),生成了feat3 和 feat2 特征融合的结果(40,40,512)。
  4. 至此,我们获得的结果,就是融合了feat3和feat2两个特征尺度的融合特征图,这个特征图可以继续向上层feat1进行融合,以相同的方式(首先向上采样成feat1的尺寸,然后在通道维度进行融合,最后使用1x1Conv,得到融合结果)。

以上内容旨在记录自己的学习过程以及复习,如有错误,欢迎批评指正,谢谢阅读。

这篇关于【深度学习-目标检测】06 - FPN 论文学习与总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/542153

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学