论文笔记:FPN

2024-02-04 22:38
文章标签 笔记 论文 fpn

本文主要是介绍论文笔记:FPN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于尺寸相差较大的目标的识别,一直是计算机视觉中的一个重大挑战。

特征金字塔基于图像金字塔建立,特征金字塔具有尺度不变性因为物体的大小可以通过改变在金字塔中的层数来实现。这项性能使得一个模型通过在金字塔中扫描位置和层数来见测尺度规模跨度较大的一系列物体。作者提出,将图像金字塔每一层特征化的主要优势在于可以产生一个所有层(包括高分辨率层)具有强语意信息的多尺度特征表示。

将图像金字塔每一层特征化会使得inference时间显著增加,而不适用于实际应用。在图像金字塔上训练更深的端到端网络收存储空间限制而不可行。由于这些原因,Fast和Faster RCNN没有用图像特征金字塔。

作者还指出,SSD为了避免利用低层特征而放弃了重复利用计算过的层并且从网络中的较高层建立金字塔并加上几个附加层。因此损失了重用特征层中高分辨率图片的机会。

针对这些,作者提出了利用卷积金字塔特征分层的优势同时建立一个在所有尺度有着强语意的特征金字塔。将低分辨率,强语意特征和高分辨率,弱语意特征通过自顶向下的路径和侧边连接结合,同时不牺牲表达强度,速度和所需空间。

上图给出了4种金字塔(特征图用蓝框标出,越粗的框表示越强的语意特征)。

(a)将图像做成不同的scale,然后不同scale的图像独立计算生成对应的不同scale的特征。这种方法的缺点在于增加了时间成本。

(b)最近的检测系统(如SPP net,Fast RCNN,Faster RCNN等),仅采取网络最后一层的特征

(c)像SSD采用这种多尺度特征融合的方式,没有上采样过程,即从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。作者认为SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而在作者看来足够低层的特征对于检测小物体是很有帮助的。

(d)本文作者是采用这种方式,顶层特征通过上采样和低层特征做融合,而且每层都是独立预测的(具体见下图)。

 

图上半部分是一个带有skip connection的自顶向下的结构,在最后一层(最底层)进行预测,即经过多次上采样并融合特征到最后一步,拿最后一步生成的特征做预测。

下半部分则是作者提出的模型,在所有层独立地进行预测。

 

结合图像金字塔,使用DNN作为目标检测器,利用多层特征结合计算预测信息等方法,为了利用卷积网络金字塔结构每层都有语意信息的优势,而建立一个整体拥有强语意信息的特征金字塔,作者提出了FPN。

FPN用单一尺寸的图片作为输入,以fully connection的形式在多层数出大小成比例的特征图。这样加强了脊柱卷积结构的独立性。作者采用ResNet,同时包含一个自底向上和一个自顶向下的通道,和横向连接。

自底向上是脊柱卷积网络的前向传播过程。在前向过程中,feature map的大小在经过某些层后会改变,而在经过其他一些层的时候不会改变,作者将不改变feature map大小的层归为一个stage,因此每次抽取的特征都是每个stage的最后一个层输出,这样就能构成特征金字塔。在本文使用的ResNet结构中,FPN用每一个stage的最后一个residual block作为输出。

自顶向下的过程采用上采样(upsampling)进行,用空间上粗糙的但是语意更强的高层金字塔的feature map产生更高分辨率的feature map。而横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合(merge)。如上图所示,上采样过程用2作为因子,与对应的map(经过1*1卷积核处理以减少维度)以相加的形式融合。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)(这里看了相关介绍还是没看懂这里的意思,https://www.cnblogs.com/doctorbill/articles/3820088.html  , https://blog.csdn.net/daduzimama/article/details/80182108)。并假设生成的feature map结果是P2,P3,P4,P5,和原来自底向上的卷积结果C2,C3,C4,C5一一对应。

作者将FPN应用于RPN的proposal生成和Fast RCNN的目标检测。

对于将FPN应用于RPN,将RPN中原来的单一尺寸的feature map替换为FPN,并对特征金字塔中的每一层附加一个相同涉及的head(3*3conv和两个sibling 1*1的conv)。因为这个head对金字塔所有层的所有未至都会进行滑动,因此没必要在一个相同的层上设置多尺寸的anchor。最终设计将{32*32,64*64,128*128,256*256,512*512}尺寸分别用于{P2,P3,P4,P5,P6}上,设置{1:1,1:2,2:1}三种宽高比,金字塔中共15种anchor。

上图的feature map在此处换为图像金字塔

值得一提的是,head的参数在特征金字塔中的所有层级是共享的,作者对比了不共享的head发现,共享head表现更好,暗示了所有层级有相似强度的语意信息。

对于FPN应用于Fast RCNN,是一个基于区域的目标检测器,利用Region-of-Interest (RoI)Pooling提取特征。Fast RCNN主要用于单一尺寸的feature map。引用FPN时,对金字塔层级指派不同尺寸的RoI。对于P_{k}层,在输入图片上指派宽为w高为h的RoI:

k=\left \lfloor k_{0}+log_{2}(\sqrt{wh}/224)\right \rfloor

其中224为ImageNet预训练的size,k0是w*h=224*224的RoI应该分派到的目标层。基于ResNet的Faster RCNN使用第四层作为单一尺寸的feature map,印次这里设k0=4。直觉上来看,这个等式表明了如果RoI的尺寸变小,则应该分配到更高分辨率的层。

整体步骤如下(借用别人的图):

 

部分笔记参考于

https://blog.csdn.net/u014380165/article/details/72890275/

https://blog.csdn.net/WZZ18191171661/article/details/79494534

 

 

这篇关于论文笔记:FPN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

AI hospital 论文Idea

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

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi