卷积神经网络——FPN(Feature Pyramid Networks)介绍

article/2025/9/22 9:37:14

FPN(Feature Pyramid Networks):特征金字塔网络,是用来提取不同尺度特征图的,提供给后面的网络执行预测任务。
为什么需要FPN呢?简要介绍一下,在目标检测的网络中,要识别不同大小的物体是该网络实现检测的基本的需要。最常见的方法就是对图像金字塔取特征图,但是该方法需要大量的算力和内存,后面又使用了其他几种方法,我们下面会介绍,最终作者提出了FPN的网络能够实现对小物体很好的检测效果。这是为什么呢?后面介绍。

FPN的论文链接: https://arxiv.org/abs/1612.03144
论文翻译:https://blog.csdn.net/itlilyer/article/details/108952700

几种金字塔方案

这里借用一下FPN论文里面的图:
在这里插入图片描述第一种金字塔: 也就是图中的a,翻译一下大概意思是使用图像金子塔来创建一个特征金字塔,每个尺度的图像分别计算其特征。也就是说要先使用原图来创建一个图像金字塔,然后再计算每个尺度图像的特征生成一个特征金字塔。这种金字塔大量用于手工创建特征,对最终的精度也起到了至关重要的作用,为了达到比较好的精度结果,每一个octave可能需要10种不同scale。(octave 在FPN的论文翻译中简单介绍了一下,这里就不再说了)。特征化图像金字塔的优点是它创建的多尺度特征的所有层次都包含很强的语义特征,包括高分辨率的层次。这种方法的优点是精度比较高;但是缺点也很明显,那就是需要大量的算力和内存空间。而且图像金字塔通常用于测试阶段,这就导致了训练和测试的不一致。

第二种金字塔: 由于种种的原因,在Fast R-CNN和Faster R-CNN中默认的配置没有使用图像金字塔,使用了图中第二种金字塔,但只取了最后一层特征。在到后来人工特征就被通过深度卷积网络计算特征替代了。深度卷积网络不仅可以表示更高层次的语义,对尺度的变化也有更好的鲁棒性,因此可以使用一个尺度的输入计算的特征来进行识别任务。第二种金字塔中只使用了最后卷积层的结果,卷积网络中的不同层次会产生不同空间分辨率的特征图,但是不同的卷积层得到的特征图会有很大的语义鸿沟。高分辨率具有很好的低层次特征,但是不利于识别物体,低分辨率的特征具有很好的高层次特征,但是不利于识别小物体。

第三种金字塔: SSD网络中使用的是第三种金字塔,SSD中将卷积网络中不同层计算出的特征图组成了一个特征金字塔。但是为了避免使用低层次的特征,在构建特征金子塔的时候是从后面的层次开始,并且又追加了几个新层。这样就损失了高分辨率的特征图,对检测小目标是不利的。

第四种金字塔: 也就是主角FPN,目的是只使用一个尺度的输入创建一个所有层次都具有很强语义特征的特征金字塔。主要分了自下向上的一条路径和自上到下的一条路径。自下向上就是深度卷积网络的前向提取特征的过程,自上而下则是对最后卷积层的特征图进行上采样的过程,横向的连接则是融合深层的卷积层特征和浅层卷积特征的过程。这也就是为什么对小物体也有很好的检测效果,它融合了深层卷积层的高级别特征和浅层卷积层的低级别特征。

FPN的计算过程

再贴一张论文中的图:
在这里插入图片描述
前面也简单介绍了整个的过程,下面我们再分步说一下:
第一步: 自下而上的路径。取深度卷积网络,也就是backbone网络中每个stage的输出作为我们金字塔的一个层,例如以resnet作为backbone,我们取conv2,conv3,conv4,conv5这几个残差块的最后输出组成特征金字塔,也就是上图中左边的金字塔。我们记为{C2 , C3 , C4 , C5},对应的stride为{4, 8, 16, 32}。因为会占用大量的内存,没有取第一个残差块的输出。

第二步: 自上而下的路径。将空间信息少但是语义信息强的最深层卷积层的输出,也就是上面的C5进行2倍的上采样,我们分别记为{T2 , T3 , T4 , T5},首先将C5执行1x1的卷积得到T5,T4等于T5的上采样,一次类推。这样T3 , T4 , T5分别和C3 , C4 , C5对应。

第三步: 利用横向连接将第一步和第二步的结果merge到一起。首先将{C2 , C3 , C4 , C5}执行1x1的卷积来降低通道的维度,使其与{T2 , T3 , T4 , T5}对应。

第四步: 在merge得到的结果后面接一个3x3的卷积来减轻上采样的混叠效应(aliasing effect)。


http://chatgpt.dhexx.cn/article/qtJdK9ZN.shtml

相关文章

详解FPN网络

目录 导读 摘要 简介 相关工作 FPN算法 FPN应用于RPN FPN应用于Fast RCNN 对比实验 FPN对RPN网络的影响 FPN对Fast RCNN网络的影响 总结 参考文献 导读 《Feature Pyramid Networks for Object Detection》这篇文章主要是用来解决Faster RCNN物体检测算法在处理多尺…

深度学习中的FPN详解

深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、FPN提出原因 二、FPN的参考思想 三、特征金字塔 四、FPN具体思路 一、FPN提出原因 卷积网络中,深层网…

CICD概念 k8s DevOps

概念 先看下docker官网给的相关文档 Continuous Integration (CI) and Continuous Delivery (CD) methodologies are key traits of a modern software development practice. Docker Enterprise Edition (Docker EE) can be a catalyst for this DevOps mindset, integrating …

Gitlab CICD配置runner

首先要安装gitlab-runner,安装过程略 1.进入Gitlab项目界面,点击侧边栏Settings->CD/CD→Runners Collapse→Specific runners,获得URL与token 2.登录装有gitlab-runner的电脑,命令行输入gitlab-runner register注册runner&am…

CICD与DevOps

CICD与DevOps 文章声明,本文选自网上关于CICD与DevOps的讲解综合,如有侵权,联系删除 什么是CI/CD 什么是持续集成(CI-Continuous integration) 持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一…

【云原生-DevOps】企业级DevOps平台搭建及技术选型-CICD篇

又是开篇 上一篇文章我们大概分享了DevOps项目管理中怎么企业级搭建本篇文章主要介绍两个子系统【CICD、效能看板】 CICD系统 CI(Continuous Integration):指持续集成,它属于开发人员的自动化流程。持续集成是一种软件开发实践&…

CICD和K8S实战

部署流程 拉取镜像,用docker 部署harbor镜像仓库 harbor是一个docker私有镜像仓库。 1、创建项目 2、创建成员 3、为项目添加成员。 后续是jenkins往harbor上传镜像,所以还需要一台jenkins服务器。 向harbor上传镜像 业务服务器 用来最终测试cd的结果。…

CICD构建实验

CICD CICD是一个可以集部署、拉取、上传等于一体的架构环境,它支持一线进行部署,免去了人工一条条的进行部署环境的工作流程,大大降低了人力手工运维成本和出错率。 CICD的搭建需要至少三台服务器,他们分别监管着Harbor&#xff…

请问什么是 CICD

CI,Continuous Integration,持续集成。CD,Continuous Deployment,持续部署。CICD 一般合称,无需特意区分二者区别。从开发、测试到上线的过程中,借助于 CICD 进行一些自动化处理,保障项目质量。 CICD 与 git 集成在一起,可理解为服务器端的 git hooks: 当代码 push 到…

企业级生产环境CICD入门

代码上线方案 部署代码,就是把程序包,传到linux服务器上,然后运行。 以前都是手动上传。 合理化上线方案 上线之前需要备份。 大型企业上线制度和流程 代码上线解决方案注意事项 持续集成,持续交付,持续部署&#…

前端搭建CICD流程

用Docker-compose 安装gitlab、gitlab-runner 源码地址 如果您觉得有用请STAR 安装docker 如果有已安装旧版docker需要先卸载 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docke…

搭建CICD平台

** 搭建CICD平台 ** 1、主机准备。 2、安装前预配置。准备相应的系统配置与软件依赖。 3、执行安装。 4、安装后配置。添加相应的组件以及修改配置。如导入模板等。 一、主机准备 Centos7.2 配置:内存大于4G。(其中Jenkins占1.5G、Gitlab占2G&#xf…

什么是CICD

什么是CICD 一、简介二、持续集成(CI)三、持续交付(CD)四、持续部署(CD)五、下一步是什么? 一、简介 CI / CD的采用改变了开发人员和测试人员如何发布软件。 最初是瀑布模型,后来是…

CI/CD是什么

文章目录 前言CI/CD概念持续集成(Continuous integration,CI)持续交付(Continuous Delivery,CD)持续部署(Continuous Deployment,CD)CI/CD小结 CI/CD 工具CI/CD 配置文件…

CICD简介

简介 CICD 是 持续集成(Continuous Integration)持续交付和持续部署(Continuous Deployment)简称。指在开发过程中自动执行一系列从开发到部署的过程中,尽量减少人工的介入。 CI 持续集成 ​ 定义:频繁…

都在说CI/CD,到底什么是CI/CD

引入 这篇文章是自己工作多年对CI/CD的理解,纯属个人见解。 不想说太多概念性的东西,直接从技术人员实际能接触的过程来展开说说。另外我这篇只是想关注一些通用的流程,细节的不同这里不纠结。比如微服务的CI/CD和单体服务有些不同&#xf…

自动化运维CICD

目录 概述 为什么持续集成和发布可以提高效率 如何实现 1、在linux服务器安装部署代码仓库 2、安装jenkins 使用shell脚本实现CICD 使用pipeline实现CICD 使用Blue Ocean实现CICD 概述 持续集成(Continuous Integration,CI)和持续发布&#xff0…

什么是 CI/CD ?

说在开头 CI、CD 其实是三个概念,包含了一个 CI 和两个 CD,CI全称 Continuous Integration,表示持续集成,CD包含 Continuous Delivery和 Continuous Deployment,分别是持续交付和持续部署。这三个概念之间是有前后依赖…

【神经网络】一文读懂LSTM神经网络

简介 说到LSTM神经网络,大家都不陌生,LSTM指的是Long Short-Term Memory,意思是:长短时记忆,也就是说这个神经网络有记忆功能,为什么说它有记忆功能呢?因为在训练数据的时候,很久之前…