FPN(Feature Pyramid Network)详解

文章涉及个人理解部分,可能有不准确的地方,敬请指正

0. 概述

FPN,全名Feature Pyramid Networks,中文称为特征金字塔网络。它是2017年cvpr上提出的一种网络,主要解决的是目标检测中的多尺度问题。FPN通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。

1. 产生动机

目标检测领域中,多尺度检测一直是个挑战,特别是小目标。以往(作者成文的时候,不是现在)检测主要分为三类:
在这里插入图片描述
a)使用单特征层。将特征提取网络最后一层输出的特征图,拿去做检测、识别,这是最早期,最一般的方法,该方法的缺点在于,最后一层特征图的尺寸一般都比较小了,无法准确定位目标。
b)多尺度输入。将输入图像resize成多个尺度,然后对每个尺度的图像提取出不同尺度的特征,这种方法计算量很大,因为要进行多次特征提取,即走了好几遍backbone。
c)多尺度特征。在特征提取时,保留中间层的不同尺度上的特征图,对每个尺度的特征图进行预测,这样做是不错的,但是高层特征图只具有丰富的语义信息,而低层特征图只有丰富的位置信息,没有将两者进行结合。

此时,文章作者就想到,如果能对方法 c)中不同尺度的特征图进行融合,岂不美哉,于是FPN就诞生了。

FPN的大致结构长这样:在这里插入图片描述
FPN对高层特征图(尺寸越小越高)进行上采样,然后跟上一层的特征图进行相加融合,这样就使融合后的特征图既包含高层的语义信息,又包含低层的结构信息。而且这样做只增加少量的计算量,是完全可以接受的。

所以简单来说,FPN主要有两个特点

  • 输出多尺度特征图,对不同尺度的目标都有不错的效果;
  • 不同尺度特征图之间进行了融合,使特征图同时具有高层语义信息和低层结构信息。

2. 网络结构详解

在这里插入图片描述
网络结构大致可以分为三个部分讲解,作者还分别给他们起了名

2.1 buttom-up

这一部分就是常见的特征提取网络,比如VGG,ResNet之类的,不过对特征图的输出尺度有要求,相邻的输出特征图尺度是2倍的关系。作者以ResNet为例,以conv2, conv3, conv4, conv5的输出作为输出特征图,假设他们的输出特征图分别是 { C 2 , C 3 , C 4 , C 5 } \{C2,C3,C4,C5\} {C2,C3,C4,C5},他们的尺度分别是输入图像的 { 1 4 , 1 8 , 1 16 , 1 32 } \{{\frac{1}{4}, \frac{1}{8},\frac{1}{16},\frac{1}{32}}\} {41,81,161,321},可以看到,相邻的特征图之间的尺寸是2倍的关系。

2.2 top-down

该部分进行特征的融合操作,具体流程是, C 5 C5 C5特征图进行2倍上采样,与 C 4 C4 C4相加,因为 C 5 C5 C5的尺寸是 C 4 C4 C4 1 2 \frac{1}{2} 21,所以进行2倍上采样之后,尺寸与 C 4 C4 C4一致,可以进行相加。然后将相加的结果再进行2倍上采样,与 C 3 C3 C3相加,以此类推。每一层融合后的特征图都要拿去做预测。

2.3 lateral

这一部分定义了融合操作的具体操作
1、每一层的输出特征图要先经过一个 1 × 1 1×1 1×1的卷积核,为啥呢,为了将每个特征图的通道数变为相同,因为高层特征图的通道数往往比较多,而低层特征图的通道数比较少,即使进行了上采样也无法进行相加
2、2倍上采样采用的是最简单的最近邻插值
3、相加操作就是对应元素相加,这里要与yolov3的concatenate操作做区别,concatenate是拼接,会增加通道数的,而FPN里的融合不会改变特征图的尺寸

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++修炼之路之string模拟实现

目录 前言 一:构造函数析构函数拷贝构造函数 二:c_str size capacity operator operator[] 三:普通迭代器 const迭代器范围for 四:关系操作符重载 五:reserveresize 六:push_back …

OpenHarmony应用开发引入开源C/C++库---之Har包里的NDK

Har 包 HAR(Harmony Archive)是静态共享包,可以包含代码、C 库、资源和配置文件。通过 HAR 可以实现多个模块或多个工程共享 ArkUI 组件、资源等相关代码。HAR 不同于 HAP,不能独立安装运行在设备上,只能作为应用模块…

百度云加速方法「Cheat Engine」

加速网盘下载 相信经常玩游戏的小伙伴都知道「Cheat Engine」这款游戏内存修改器,它除了能对游戏进行内存扫描、调试、反汇编 之外,还能像变速齿轮那样进行本地加速。 这款专注游戏的修改器,被大神发现竟然还能加速百度网盘资源下载&#xf…

基于RBF的时间序列预测模型matlab代码

整理了基于RBF的时间序列预测模型matlab代码, 包含数据集。采用了四个评价指标R2、MAE、MBE、MAPE对模型的进行评价。RBF模型在数据集上表现非常好。 训练集数据的R2为:0.99463 测试集数据的R2为:0.96973 训练集数据的MAE为:0.…

mongoDB 优化(2)索引

执行计划 语法:1 db.collection_xxx_t.find({"param":"xxxxxxx"}).explain(executionStats) 感觉这篇文章写得很好,可以参考 MongoDB——索引(单索引,复合索引,索引创建、使用)_mongo…

RuoYi-Vue若依框架-vue前端给对象添加字段

处理两个字段的时候有需求都要显示在下拉框的同一行,这里有两种解决方案,一是后端在实体类添加一个对象,加注解数据库忽略处理,在接口处拼接并传给前端,二是在前端获取的数据数组内为每个对象都添加一个字段&#xff0…

Linux CPU利用率

Linux CPU利用率 在线上服务器观察线上服务运行状态的时候,绝大多数人都是喜欢先用 top 命令看看当前系统的整体 cpu 利用率。例如,随手拿来的一台机器,top 命令显示的利用率信息如下 这个输出结果说简单也简单,说复杂也不是那么…

猫头虎博主深度探索:Amazon Q——2023 re:Invent 大会的 AI 革新之星

摘要 大家好,我是猫头虎博主!今天,我要带大家深入了解2023年 re:Invent 大会上发布的一款革命性产品——Amazon Q。让我们一起探索这个引领未来工作方式的新型工具吧! 引言 在2023年的 re:Invent 大会上,亚马逊云科…

✌2024/4/4—力扣—盛最多水的容器

代码实现: 方法一:暴力解法——遍历左右边,找出所有面积,取最大值——超时 #define min(a, b) ((a) > (b) ? (b) : (a)) #define max(a, b) ((a) > (b) ? (a) : (b))int maxArea(int *height, int heightSize) {int ans …

SQL注入sqli_labs靶场第五、六题

第五题 根据报错信息,判断为单引号注入 没有发现回显点 方法:布尔盲注(太耗时,不推荐使用) 1)猜解数据库名字:(所有ASCII码值范围:0~127) ?id1 and length…

论文笔记:面向实体的多模态对齐与融合网络假新闻检测

整理了2022TMM期刊 Entity-Oriented Multi-Modal Alignment and Fusion Network for Fake News Detection)论文的阅读笔记 背景模型改进的动态路由算法Cross-Modal Fusion 实验 背景 现有的假新闻方法对多模态特征进行各种跨模态交互和融合,在检测常见假…

使用Ollama在本地运行AI大模型gemma

1.下载: https://github.com/ollama/ollama/releases 2.配置环境变量 我的电脑-右键-属性-系统-高级系统设置-环境变量-【系统环境变量】新建 变量名:OLLAMA_MODELS (固定变量名) 变量值:E:\Ollama\Lib &#xff0…

Unity自定义icon

Unity自定义icon 1. 新建文件夹 OfficeFabricIconSet2. 新建Iconset3. 新建子文件夹Textures并添加icon图片4. 向iconset添加Quad Icons5. 最终效果 教程来源处: https://365xr.blog/build-your-own-button-icon-set-for-microsoft-hololens-2-apps-with-mrtk-using…

seo调优

SEO 网站地图:sitemap.xmlrobots.txtxxx.com/www.xxx.com 解析到服务器,xxx.com 301 到 www.xxx.comhttps百度站点管理标题描述关键词标签语义化内链外链死链链接html结尾友情链接前端架构 注意:已收录链接,禁止改变链接地址 ro…

Spring boot 入门 ---(一),2024年最新java进阶训练营

spring-snapshots http://repo.spring.io/snapshot spring-milestones http://repo.spring.io/milestone spring-boot-starter-parent是使用Spring Boot的一种不错的方式,但它 并不总是最合适的。有时你可能需要继承一个不同的父POM,或只是不喜欢我…

Linux网络基础 (三) —— Socket

文章目录 Socket 编程基本概念Socket背景Socket 为了解决什么问题 socketsockaddr结构sockaddrsockaddr_insockaddr 和 sockaddr_in 的关系sockaddr_un 示例代码 🎖 博主的CSDN主页:Ryan.Alaskan Malamute 📜 博主的代码仓库主页 [ Gitee ]&…

AMRT3D数字孪生引擎

产品概述 AMRT3D引擎是由眸瑞网络科技自主研发、拥有完全自主知识产权的一款全球首款轻量化3D图形引擎,引擎以核心的轻量化技术及AMRT轻量格式为支柱,专为数字孪生项目开发打造。 AMRT3D引擎提供一整套完善的数字孪生解决方案,在数据处理方…

three.js尝试渲染gbl模型成功!(三)

参照教程:https://cloud.tencent.com/developer/article/2276766?areaSource102001.5&traceId88k805RaN_gYngNdKvALJ (作者:九仞山) 通过最近两天查three.js入门教程了解到 这玩应支持包括 .obj、.gltf等类型的模型结构。 g…

国产低代码工具,轻松搞定数据迁移

在日常的业务系统升级或者数据维护过程中,数据迁移是各个企业用户不得不面临的问题,尤其是数据迁移过程中要保障数据完整性、统一性和及时性,同时也需要注意源数据中的数据质量问题,比如缺失、无效、错误等问题,需要在…

windows版本-idea中下载的java版本在哪

1、点击idea的file-projectStructure 进入: 通过电脑目录进入该目录 找到bin目录,copy该目录地址 copy下来之后设置到系统环境变量中