[DL]深度学习_Feature Pyramid Network

news/2024/2/29 17:00:03/文章来源:https://blog.csdn.net/iazzz/article/details/135570730

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在原图上的高度

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

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

相关文章

SQLServer 为角色开视图SELECT权限,报错提示需要开基础表权限

问题: 创建了个视图V,里面包含V库的a表,和T库的b表 为角色开启视图V的SELECT权限,提示T库的b表无SELECT权限,报错如下 解决方案: ①在T库建个视图TV,里面包含b表(注意是在b表的对…

基于SSM的戏剧推广网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是…

使用串口 DMA 模式接收不定长数据

一、简介 曾经遇到客户有一个需求,需要用串口 DMA 的方式接收不定长度的数据,DMA 有个缺点就是在每次传输前需要设定好传输的字节长度,这种方式显然对于接收不定长度的数据来说没有那么灵活。但 DMA 也有着显著的优点,如可直接访…

Linux环境搭建FastDFS文件服务器(附带Nginx安装)

本文主要介绍在linux服务器如何搭建FastDFS文件服务器。大概分为9个步骤,由于内容较为繁琐。下面带你入坑! 首先简单介绍一下FastDFS是淘宝资深架构师余庆老师主导开源的一个分布式文件系统,用C语言编写。适应与中小企业,对文件不…

电脑安装 Python提示“api-ms-win-crt-process-l1-1-0.dll文件丢失,程序无法启动”,快速修复方法,完美解决

在windows 10系统安装完python后,启动的时候,Windows会弹出错误提示框“无法启动此程序,因为计算机中丢失了api-ms-win-crt-process-l1-1-0.dll,尝试重新安装该程序以解决此问题。” api-ms-win-crt-process-l1-1-0.dll是一个动态…

网络层协议及IP编址与IP路由基础华为ICT网络赛道

目录 4.网络层协议及IP编址 4.1.网络层协议 4.2.IPv4地址介绍 4.3.子网划分 4.4.ICMP协议 4.5.IPv4地址配置及基本应用 5.IP路由基础 5.1.路由概述 5.2.静态路由 5.3.动态路由 5.4.路由高阶特性 4.网络层协议及IP编址 4.1.网络层协议 IPv4(Internet Protocol Versi…

C语言——编译和链接

(图片由AI生成) 0.前言 C语言是最受欢迎的编程语言之一,以其接近硬件的能力和高效性而闻名。理解C语言的编译和链接过程对于深入了解其运行原理至关重要。本文将详细介绍C语言的翻译环境和运行环境,重点关注编译和链接的各个阶段…

基于JavaWeb+BS架构+SpringBoot+Vue+Hadoop短视频流量数据分析与可视化系统的设计和实现

基于JavaWebBS架构SpringBootVueHadoop短视频流量数据分析与可视化系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 目  录 目  录 I 1绪 论 1 1.1开发背景 1 1.2开…

【国内访问github不稳定】可以尝试fastgithub解决这个问题

1、下载 https://github.com/dotnetcore/FastGithub https://github.com/dotnetcore/FastGithub/releases 官网下载即可,比如,我用的是这个:fastgithub_osx-x64.zip(点这里下载) 2、安装 如下图双击启动即可 3、…

大模型开启应用时代 数钉科技一锤定音

叮叮叮叮!数钉智造大模型,“定音”强势发布! 随着科技的飞速发展,大模型技术已逐渐成为推动产业变革的核心力量。在这一浪潮中,数钉科技凭借深厚的技术积累和敏锐的市场洞察力,成功利用大模型技术搭建起智能…

SSL之mkcert构建本地自签名

文章目录 1. 什么是SSL2. mkcert:快速生成自签名证书2.1 mkcert的工作流程如下:2.2 window 本地实现自签证书2.2.1 下载安装2.2.2 下载,生成本地 SSL2.2.3 生成 pem 自签证书,可供局域网内使用其他主机访问。2.2.4 使用-psck12 生成*.p12 文件 2.3 Sprin…

盲盒小程序搭建:为盲盒企业、创业者提供新的机遇

近年来,盲盒因其不确定性以及拆盲盒带来的惊喜感,受到了广大消费者的追捧!盲盒是由各类手办等组成的,玩家能够以低价格拆到性价比高的盲盒商品,这种购物体验激发了玩家的购物乐趣,因此,盲盒行业…

植物大战僵尸-C语言搭建童年游戏(easyx)

游戏索引 游戏名称&#xff1a;植物大战僵尸 游戏介绍&#xff1a; 本游戏是在B站博主<程序员Rock>的视频指导下完成 想学的更详细的小伙伴可以移步到<程序员Rock>视频 语言项目&#xff1a;完整版植物大战僵尸&#xff01;可能是B站最好的植物大战僵尸教程了&…

文心一言 vs. ChatGPT:哪个更胜一筹?

文心一言 vs. ChatGPT&#xff1a;从简洁美到深度思考的文本生成之旅 近年来&#xff0c;文本生成工具的崛起使得人们在表达和沟通方面拥有了更多的选择。在这个领域中&#xff0c;文心一言和ChatGPT作为两个备受瞩目的工具&#xff0c;各自以独特的优势展现在用户面前。本文将…

第九讲 单片机驱动彩色液晶屏 控制RA8889软件:显存操作

单片机驱动TFT彩色液晶屏系列讲座 目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控…

蓝桥杯 彩灯与任务

题目描述 输入样例 5 5 5 4 3 3 9 R 1 C 4 R 5 A 3 R 2 输出样例 5 3 3 思路 第一眼读不懂旋转是啥意思&#xff0c;根据样例连蒙带猜猜出来&#xff0c;其实就是把整个数组中的挪动几个位置。也很自然的按照题意写出来如下代码&#xff1a; #include <iostream> using…

我自己总结记忆的23种设计模式

1&#xff0c; 对23种设计模式&#xff0c;大家的第一个印象就是抽象繁琐&#xff0c;记不住&#xff01;&#xff01;不常用&#xff1f;&#xff1f; 其实设计模式是非常有用的&#xff0c;大家只要理解设计模式了&#xff0c;思想上就能有质的飞跃&#xff01; 但是&#…

14.kubernetes部署Dashboard

Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,D…

Github仓库使用方式

主要参考&#xff1a; 「详细教程」使用git将本地项目上传至Github仓库&#xff08;MacOS为例&#xff09;_github上传代码到仓库-CSDN博客 新建文件夹参考&#xff1a; GitHub使用指南——建立仓库、建立文件夹、上传图片详细教程-CSDN博客 一、新建一个 github 仓库&#…

设计一个简单的规则引擎

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…