[DL]深度学习_Feature Pyramid Network

FPN结构详解 

目录

一、概念介绍

 二、结构详解

1、对比试验 

2、特征图融合

3、结构详解 

4、不同尺度预测 

5、Proposal映射到预测特征层


一、概念介绍

        Feature Pyramid Network (FPN)是一种用于目标检测和语义分割的神经网络架构。它的目标是解决在处理不同尺度的图像时,信息丢失和语义细节模糊的问题。

        FPN的核心思想是通过在网络中添加一组横向连接来构建多尺度特征金字塔。这些横向连接将底层的高分辨率特征与高层的低分辨率特征进行融合,以捕捉不同尺度的语义信息。融合后的特征金字塔可用于检测和分割任务中的多尺度目标识别。

        具体来说,FPN在主干网络(如ResNet)中的每个阶段添加一个横向连接,以便从高层到底层传递信息。这些连接可以通过上采样或卷积操作来进行特征融合和调整分辨率。最后,通过在FPN上构建特定的任务头部网络(如分类器或分割器),可以实现目标的检测和分割。

        FPN的优点是能够有效地解决多尺度的问题,提高目标检测和语义分割的性能。它已经在许多计算机视觉任务中取得了显著的成果,并被广泛应用于许多最先进的目标检测和分割算法中。

 二、结构详解

1、对比试验 

        图(a)是一个特征图像金字塔结构,常用于传统图像处理。 对于要检测不同尺度目标的时候,将图片首先缩放到不同的尺度,针对每个尺度图片,依次通过算法进行预测。此时会面临一个问题,生成多少个尺度就需要预测多少次,效率低下。

        图(b)是Faster R-CNN采用的一种方式,将图片通过骨干网络提取得到最终的特征图,在最终的特征图上进行预测,但是这种方式对于小目标检测效果不是很好。

        图(c)是SSD算法采用的方式,将图片输入到骨干网络,此时会在骨干网络正向传播中得到的不同的特征图上分别进行预测。

        图(d)为FPN特征金字塔结构,与图(c)进行简单的对比,可以看出,特征金字塔结构并不是简单的在骨干网络得到的不同特征图上进行预测,而是将不同特征图上的特征进行融合,然后再融合之后的特征图上再进行预测。

2、特征图融合

        需要将不同尺度特征图进行融合,不同的特征图构建时,都是以2的整数倍进行选取,这是因为分类网络中的骨干网络缩放特征图时都是以2的整数倍进行缩放的。

        针对每一个骨干网络上的特征图都先用1x1的卷积层进行处理,目的是为了之后进行特征图融合,调整骨干网络中不同特征图的通道数。

        在高层次特征图与低层次特征图进行融合时,因为高层的特征图的大小在骨干网络正向传播时会缩小为低一层特征图的一半,所以在融合之前需要将高层特征图进行2倍上采样,正好与低一层特征图大小相同,低一层特征图又经过1x1卷积之后与高层特征图统一了通道数,可以进行特征图融合操作。

        2倍上采样通过邻近插值算法。

notes:

        邻近插值算法是一种简单且常用的上采样方法,它通过复制最近邻像素的值来增加特征图的尺寸。

        邻近插值算法的基本思想是对于每个新像素,找到与其最接近的原始像素,并将其值赋给新像素。这种方法不涉及任何计算或插值操作,因此计算效率很高,适合用于快速的上采样需求。

具体实现上,邻近插值算法可以通过以下步骤进行:

  1. 根据上采样的倍数,计算新特征图的尺寸。
  2. 对于新特征图中的每个像素,找到与其最接近的原始特征图的位置。
  3. 将原始特征图中最接近的像素值赋给新特征图中的对应像素。

        例如,假设有一个大小为4x4的低分辨率特征图,需要将其上采样为8x8的高分辨率特征图。那么,对于高分辨率特征图中的每个像素,可以找到最接近的原始特征图像素的位置,并将其值赋给新特征图。这样就完成了邻近插值算法的上采样过程。

        虽然邻近插值算法简单高效,但它可能会导致一些细节信息的损失,因为它只是简单地复制最接近的像素值。因此,对于一些对细节信息要求较高的任务,如图像分割或图像生成,可能需要使用更复杂的上采样方法,如转置卷积。

3、结构详解 

         选取ResNet-50作为骨干网络,结合FPN结构。主干网络输入图像尺寸为[640x640x3]。对于C2、C3、C4、C5得到的特征图分别通过1x1的卷积层调整通道数,之后从C5到C2通过上采样操作进行融合。在所得到的新的特征图之后,再分别接上一个3x3卷积层,对融合后的特征图进一步融合,依次得到P2、P3、P4、P5,原论文给的一个描述,会在P5的基础上进行最大池化下采样得到P6。

notes:

        需要注意的是P6只用于区域生成网络RPN部分。RPN生成Proposal预选框时候,会在P2、P3、P4、P5、P6特征图上进行预测,但是在Fast R-CNN部分中,只会在P2、P3、P4、P5上进行预测。

        在Faster R-CNN是在预测特征图上通过RPN网络生成得到一系列的Proposal预选框,然后将Proposal预选框映射到特征图上,然后将映射的这部分特征输入到Fast R-CNN部分得到最终预测结果。

        在FPN结构中,首先通过RPN结构在P2、P3、P4、P5、P6上进行预测Proposal预选框,然后将预测得到的Proposal预选框映射到P2、P3、P4、P5上,然后通过Fast R-CNN部分得到最终预测结果。

4、不同尺度预测 

        由于在RPN网络中生成了多个预测特征层,所以可以在不同的预测特征层上,分别针对不同尺度的目标进行预测。在Faster R-CNN上,只有一个预测特征层,所以是在这一个预测特征层上生成不同面积不同比例的anchor。但是在FPN上,不同预测特征层可以针对不同尺度的目标。 

        随着卷积池化等操作之后,细节信息会丢失。P2相对较为底层的预测特征层,会保留更多的底层细节信息,更适合预测小目标。会将面积为32^{2},比例为1:2,1:1,2:1的anchor在P2上生成。针对P3使用面积64^{2},P4使用面积128^{2},P5使用面积256^{2},P6使用面积512^{2},比例都为1:2,1:1,2:1的anchor。这也是与Faster R-CNN不一样的地方。

        在不同的特征预测层上共用同一个RPN和Fast R-CNN,和分别在不同的特征预测层上用不同的RPN和Fast R-CNN的情况下,检测精度并无差异。所以为了减少网络训练参数,可以在不同特征预测层上共享RPN预测头和Fast R-CNN模块。在RPN部分,P2到P6使用同一个模块,而Fast R-CNN部分,P2到P5使用同一模块。

5、Proposal映射到预测特征层

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

  • k为应该对应的预测特征值的层数,对应P2到P5,数值为2到5
  • k_{0}设置为4
  • w为RPN预测得到的Proposal在原图上的宽度
  • h为RPN预测得到的Proposal在原图上的高度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/317556.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言天花板——指针(进阶3)

篇接上文(http://t.csdnimg.cn/Tl42h),今天我们来讲一些有趣的关于指针的问题🚢🚢🚢 首先我们来看个代码: int main() {//一维数组int a[] { 1,2,3,4 };//4个元素,每个元素使int类型(4个字节)printf(&qu…

03.neuvector之组的划分逻辑

neuvector之组的划分逻辑 原文链接,欢迎大家关注我的github账号 一、组的定义 NeuVector 会自动从正在运行的应用程序中创建组。这些组以前缀‘nv‘开头。您也可以使用 CRD 或 REST API 手动添加它们,并且可以在任何模式下创建、发现、监视或保护。网络和响应规则需…

【嵌入式移植】3、编译U-Boot

编译U-Boot 0 U-Boot及本文所选硬件1 获取U-Boot源码2 获取工具链3 BL314 编译4.1 yylloc4.2 u_boot_dtsi 5 烧写6 上电验证 0 U-Boot及本文所选硬件 Das U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-B…

Android 12.0 系统开启和关闭黑白模式主题功能

1.概述 在12.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…

好大夫问诊数据爬虫记录

好大夫问诊数据爬虫入库字段记录 获取医生的病程列表 uid Column(Integer, primary_keyTrue, autoincrementTrue) gender Column(String(10)) # 性别 age Column(Integer) # 年龄 # 总交流次数 total_communication_times Column(Integer) # 医生回复次数 doctor_reply_t…

重学Java 4 进制转换和位运算

天赋不好好使用的话,可是会被收回的哦 ——24.1.13 一、进制转换 1.常用的进制 2.十进制和二进制之间的转换 1.十进制转二进制 辗转相除法——循环除以2,取余数,除到商为0为止,除完后,由下往上,得出换算后…

黏菌优化算法MATLAB实战[免费]

一、算法原理 黏菌算法(Slime mould algorithm,SMA)是模拟黏菌捕食行为的一种仿生算法。黏菌根据气味识别到食物后,通过细胞质的流动形成多个叶脉,同时向多个食物进行移动,当叶脉接近食物源时,黏菌的生物振…

PADS 改变图纸和图页边界大小

PADS 改变图纸和图页边界大小 有时候画一画原理图发现画布不够用了,可改变图纸大小,对应的改变图页边界 若图页边界怎么选择都改变不了,可将途中图页边界删除,重新加载 选择对应的图页边距就好啦 分类: PADS

竞赛保研 基于计算机视觉的身份证识别系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的身份证识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-sen…

软件测试|pycharm关联GitHub的详细步骤

简介 GitHub 是全球最大的开源代码托管平台之一,而 PyCharm 是一款强大的 Python 集成开发环境。将两者结合使用,可以提高团队协作和代码管理的效率。本文将详细介绍如何在 PyCharm 中管理 GitHub 账号,包括如何设置 GitHub 账号、创建新仓库…

伴鱼实时数仓建设案例

伴鱼实时数仓建设案例 文章目录 伴鱼实时数仓建设案例伴鱼实时作业应用场景伴鱼实时数仓的建设体系DWD 层复杂场景数据处理方案1. 数据的去重2. join场景两条实时数据流相关联对于关联历史数据 3. 从数据形态观查join DWS 数据层数据处理方案未来与展望 随着伴鱼业务的快速发展…

JUC之CompletableFuture

Future接口理论 Future接口定义了异步任务执行的一些方法&#xff0c;包括异步任务执行结果&#xff0c;异步任务执行是否中断&#xff0c;异步任务是否完毕等。 Future接口常用实现类FutureTask异步任务 FutureTask<String> futureTask new FutureTask<String>…

企业网盘:实现数据跨境传输,助力企业出海的必备工具

今年是“一带一路”十周年。在这十年间&#xff0c;中国和“一带一路”共建国家携手并行&#xff0c;贸易持续增长发展。在如今经济全球化的大方向下&#xff0c;跨国经济合作将会是各国共识。 目前&#xff0c;中外合作企业、跨境企业已成为国际贸易发展趋势。不过&#x…

扩展欧几里得算法

文章目录 扩展欧几里得算法的内容及证明扩展欧几里得算法的代码实现扩展欧几里得算法的用途 本文的问题场景中&#xff0c;涉及到的变量均为整数。 扩展欧几里得算法的内容及证明 贝祖等式&#xff1a; a x b y g c d ( a , b ) c axby gcd(a, b) c axbygcd(a,b)c 其中 …

PLC数组队列搜索FC(SCL代码+梯形图程序)

根据输入数据搜索输入数据队列中和输入数据相同的数,函数返回其所在队列的位置。这里我们需要用到博途PLC的数组指针功能,有关数组指针的详细使用方法,可以参考下面文章: 博途PLC数组指针: https://rxxw-control.blog.csdn.net/article/details/134761364 区间搜索FC …

软件测试|Git:fatal: refusing to merge unrelated histories错误分析与解决

问题介绍 在使用Git时&#xff0c;有时我们可能会遇到以下错误消息&#xff1a; fatal: refusing to merge unrelated histories这个错误通常发生在尝试合并两个不相关的Git仓库历史时。在本文中&#xff0c;我们将详细解释为什么会出现这个错误以及如何解决它。 问题分析 …

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II 文章目录 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II1 Le…

CSS样式学习

html超文本传输标签&#xff0c;属性等权重 outline 标签轮廓 <input type"text"> <textarea cols"30" rows"10"></textarea> outline: none; 表示无轮廓 &#xff08;开发时用的比较多&#xff09; CSS 轮廓&#xff…

大创项目推荐 深度学习疫情社交安全距离检测算法 - python opencv cnn

文章目录 0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习疫情社交安全距离检测算法 ** 该项目较为新颖&#xff0c;适合作为竞赛…

【踩坑】flask_uploads报错cannot import name ‘secure_filename‘

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景说明 截至目前&#xff0c;用新版的flask实现文件上传(用到flask_uploads库)&#xff0c;会出现这个问题。 问题原因 版本问题&#xff0c;新的werkzeug已经把secure_filename的位置改了。 解决方法 手动修改…