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.mzph.cn/news/805943.shtml

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

相关文章

第十四届蓝桥杯省赛真题-幸运数

代码及解析: #include <iostream> using namespace std;bool check(int x) {int tmpx,len0;while(tmp){len;tmp/10;}//算位数的方法 if(len%21)return 0;//直接retrun 0 int tlen/2;int ans10,ans20;while(t--){ans1x%10;//加每一位x/10; }while(x){ans2x%10;x/10;}if(…

AOF文件重写

1.2.3.AOF文件重写 因为是记录命令&#xff0c;AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作&#xff0c;但只有最后一次写操作才有意义。通过执行bgrewriteaof命令&#xff0c;可以让AOF文件执行重写功能&#xff0c;用最少的命令达到相同效果。 如图&am…

类和对象(一)

面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间的交互完成。 类的…

LeetCode 239. 滑动窗口最大值

滑动窗口最大值 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [1,3,-1,-3,…

双碳目标下太阳辐射预报模式【WRF-SOLAR】及改进技术在气象、农林、电力等相关领域中的应用

太阳能是一种清洁能源&#xff0c;合理有效开发太阳能资源对减少污染、保护环境以及应对气候变化和能源安全具有非常重要的实际意义&#xff0c;为了实现能源和环境的可持续发展&#xff0c;近年来世界各国都高度重视太阳能资源的开发利用&#xff1b;另外太阳辐射的光谱成分、…

2024字节跳动春季招聘必备:Spring Transaction面试题全攻略,99%的候选人都推荐收藏!

随着微服务架构和分布式系统的广泛应用&#xff0c;事务管理作为确保数据一致性和系统稳定性的关键技术&#xff0c;其重要性日益凸显。Spring Framework作为企业级应用开发的首选框架&#xff0c;其提供的事务管理功能强大而灵活&#xff0c;能够满足现代应用开发的复杂需求。…

C++继承之private继承

1 概述 通过继承机制&#xff0c;可以利用已有的对象类型来定义新对象类型。所定义的新对象类型不仅仅拥有新定义的成员&#xff0c;而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类&#xff0c;又称为父类。由已存在的类派生出的新类称为派生类&#xff0c;又称…

高可用系列二:绝对核心——服务请求幂等

服务请求幂等&#xff0c;简单地解释可以为同一次请求&#xff0c;因为各种原因重试时得到的结果一致或者可被识别&#xff0c;这里的结果一致指的是对于平台数据的变更影响&#xff0c;比如重复提交同一订单&#xff0c;会不会生成重复订单。从上一篇&#xff08;高可用系列一…

T527 Qt 触摸 ----- TSLIB

一、调试 1、驱动路径 bsp/drivers/input/ctp/gt9xx/gt9xx_ts.c 2、硬件接口 挂载在TWI0下 3、中断复位脚 4、设备树 &twi0 {clock-frequency <400000>;pinctrl-0 <&twi0_pins_default>;pinctrl-1 <&twi0_pins_sleep>;pinctrl-names &quo…

关于ansible的模块 ⑤

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 继《关于Ansible的模块 ①》、《关于Ansible的模块 ②》、《关于Ansible的模块 ③》与《关于Ansible的模块 ④》之后&#xff0c…

Redis(事务)

本篇博客中 Redis 事务是和 MySQL 事务对比来说的(要不我也不会了 …) Redis 事务是什么? Redis 事务的主要意义是 把命令打包在一起执行, 避免其他客户端在我执行一些命令的过程中 插队. ("秒杀"场景, "超卖"问题) Redis 事务 与 MySQL 事务 对比 相比较…

Spring Boot 切面的一种的测试方法,java中级开发面试

void afterReturnName() { Assertions.assertEquals(studentController.getNameById(123L).getName(), "测试姓名Yz");} } 但往往切面中的逻辑并非这么简单&#xff0c;在实际的测试中其实我们也完成没有必要关心在切面中到底发生了什么&#xff08;发生了什么应该在…

正则问题【蓝桥杯】/dfs

正则问题 dfs 刚开始用的是栈&#xff0c;没有想到dfs… #include<iostream> #include<stack> using namespace std; string s; int pos; int dfs() {//ans表示到当前位置最多的x数目//num表示暂存的x数目int num0,ans0;while(pos<s.size()){if(s[pos](){pos;…

HarmonyOS实战开发-如何实现文件管理相关的功能。

介绍 本示例主要展示了文件管理相关的功能&#xff0c;使用ohos.multimedia.medialibrary 、ohos.filemanagement.userFileManager 、ohos.fileio 、ohos.file.fs、ohos.app.ability.contextConstant 等接口&#xff0c;实现了增添文件、删除文件、查找指定类型文件文件、复制…

oracle恢复异常处理

问题现象&#xff1a; RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16> 17> 18> 19> 20> 21> 22> 23> 24> using target database control file instead of recovery catalog allocate…

软件测试定义和分类

什么是软件 软件是计算机程序&#xff0c;程序所用的数据以及有关文档资料的集合。 软件是计算机的灵魂&#xff0c;软件又可分为两大类&#xff1a;系统软件和应用软件。 系统软件&#xff1a;系统软件是生成&#xff0c;准备和执行其他程序所需要的一组文件和程序。如操作…

论文阅读--Conservative Q-Learning for Offline Reinforcement Learning

摘要 在强化学习( RL )中有效地利用以前收集的大量数据集是大规模实际应用的关键挑战。离线RL算法承诺从先前收集的静态数据集中学习有效的策略&#xff0c;而无需进一步的交互。然而&#xff0c;在实际应用中&#xff0c;离线RL是一个主要的挑战&#xff0c;标准的离线RL方法…

数字化浪潮下,制造业如何乘势而上实现精益生产

随着数字化技术的迅猛发展&#xff0c;制造业正迎来前所未有的变革机遇。本文将探讨如何利用数字化手段助推制造业实现精益生产&#xff0c;从而在激烈的市场竞争中脱颖而出。 1、构建智能化生产系统 借助物联网技术&#xff0c;实现设备之间的互联互通&#xff0c;构建智能化…

CODEFORCES --- 1676A. Lucky?

1676A. Lucky? 彩票是由六位数字组成的字符串。如果前三位数字之和等于后三位数字之和&#xff0c;则视为幸运彩票。给定一张彩票&#xff0c;输出它是否幸运。请注意&#xff0c;彩票可以有前导零。 输入 输入的第一行包含一个整数 t ( 1≤t≤103 ) - 测试用例的数量。 每…

腾讯云云原生数据库TDSQL-C mysql 以及项目怎么接入

要接入腾讯云的云原生数据库TDSQL-C的MySQL版本&#xff0c;并将它用于你的项目中&#xff0c;你需要按照以下步骤进行&#xff1a; 创建TDSQL-C的MySQL数据库实例&#xff1a; 登录腾讯云控制台。在产品搜索框中搜索TDSQL-C&#xff0c;然后选择它。在TDSQL-C的产品页面上&…