当前位置: 首页 > news >正文

【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码

【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码

【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码


文章目录

  • 【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码
  • 前言
    • 1. 特征金字塔(Feature Pyramid)的工作原理
    • 2. FPN的架构
    • 3. 代码实现:FPN(Feature Pyramid Networks)
      • 代码解析:
        • 底到顶路径(Bottom-up pathway):
        • 顶到底路径(Top-down pathway):
        • 特征融合:
        • 输出:
    • 4. 特征金字塔在深度学习中的作用
    • 5. 总结


欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文:
可访问艾思科蓝官网,浏览即将召开的学术会议列表。会议详细信息可参考:https://ais.cn/u/mmmiUz

前言

特征金字塔(Feature Pyramid) 是一种用于提取多尺度特征的技术,常用于目标检测和图像分割等任务中。特征金字塔通过逐层下采样并融合不同尺度的特征图,帮助网络在不同层次上捕获不同尺度的上下文信息。

最经典的特征金字塔结构是 FPN (Feature Pyramid Networks),它通过顶到底(top-down)和底到顶(bottom-up)两种路径,将多尺度特征进行有效融合,进而提升模型对不同大小目标的识别能力。

1. 特征金字塔(Feature Pyramid)的工作原理

FPN 的基本思想是将高层特征(低分辨率、高语义信息)与低层特征(高分辨率、细节信息)结合,构建出一个多尺度的特征金字塔。

  • 底到顶路径(Bottom-Up Pathway):从输入图像中提取逐渐低分辨率的特征图(如通过卷积层进行下采样)。
  • 顶到底路径(Top-Down Pathway):通过反卷积(或上采样)将高层特征图上采样到较高分辨率,并与相应分辨率的低层特征图进行融合。

通过这种方式,FPN可以将高层特征的语义信息与低层特征的细节信息结合起来,从而提升对小物体和大物体的检测能力。

2. FPN的架构

FPN通常包含以下几个组件:

  • 底到顶路径:使用卷积网络逐步提取不同尺度的特征图。
  • 顶到底路径:使用上采样(如转置卷积或插值)将高层特征图恢复到较高分辨率,并与低层特征进行融合(通常通过加法或拼接的方式)。
  • 特征融合:最终通过卷积将融合后的多尺度特征整合,输出最终的多尺度特征图。

3. 代码实现:FPN(Feature Pyramid Networks)

以下是一个简化版的 FPN(Feature Pyramid Network)实现,展示了如何通过顶到底路径和底到顶路径进行特征融合:

简化版FPN的代码示例:

import torch
import torch.nn as nn
import torch.nn.functional as Fclass FPN(nn.Module):def __init__(self, in_channels, out_channels):super(FPN, self).__init__()# Bottom-up layers (convolutions with downsampling)self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=2, padding=1)self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=2, padding=1)self.conv3 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=2, padding=1)# Top-down layers (Upsampling and combining features)self.upsample2 = nn.ConvTranspose2d(out_channels, out_channels, kernel_size=2, stride=2)self.upsample3 = nn.ConvTranspose2d(out_channels, out_channels, kernel_size=2, stride=2)# Final convolution to refine the output feature mapself.final_conv = nn.Conv2d(out_channels * 3, out_channels, kernel_size=3, padding=1)def forward(self, x):# Bottom-up feature extractionx1 = self.conv1(x)  # First downsampling layerx2 = self.conv2(x1)  # Second downsampling layerx3 = self.conv3(x2)  # Third downsampling layer# Top-down feature refinementx2_up = self.upsample2(x3)  # Upsample x3 to match x2x2_fuse = x2 + x2_up  # Combine x2 and x2_upx1_up = self.upsample3(x2_fuse)  # Upsample x2_fuse to match x1x1_fuse = x1 + x1_up  # Combine x1 and x1_up# Final feature map after fusion of multi-scale featuresout = self.final_conv(torch.cat([x1_fuse, x2_fuse, x3], dim=1))return out# 示例输入
input_tensor = torch.randn(1, 3, 64, 64)  # 输入一个64x64的RGB图像
model = FPN(in_channels=3, out_channels=16)
output_tensor = model(input_tensor)
print(output_tensor.shape)  # 输出形状: (1, 16, 64, 64)

代码解析:

底到顶路径(Bottom-up pathway):
  • 使用3个卷积层(conv1, conv2, conv3)依次对输入特征图进行下采样(通过卷积+步长=2的方式)。
  • 每一层卷积提取一个不同尺度的特征图,其中 x1, x2, x3 分别代表从较低分辨率到较高分辨率的特征。
顶到底路径(Top-down pathway):
  • 使用上采样(ConvTranspose2d,即转置卷积)将高层特征图上采样。
  • x2_upx1_up 是分别上采样 x3x2 到较高分辨率后得到的特征图。
  • 将上采样后的特征图与底层特征图进行融合(通过加法)x2_fusex1_fuse
特征融合:
  • 将不同尺度的特征图 x1_fuse, x2_fuse, x3 拼接起来,并通过一个最终的卷积层(final_conv)来精细化多尺度特征。
输出:
  • 最终输出的特征图包含了多个尺度的信息。

4. 特征金字塔在深度学习中的作用

  • 多尺度特征提取:通过在不同层次提取特征并融合,FPN帮助网络捕获不同尺度的物体信息。低层特征图包含了更细粒度的空间信息,而高层特征图包含了更丰富的语义信息。
  • 小物体检测:由于低层特征图包含了较多细节,帮助模型识别较小的目标。
  • 大物体检测:高层特征图提供了丰富的上下文信息,有助于识别大尺寸的物体。

5. 总结

  • 特征金字塔(FPN)通过底到顶和顶到底的特征融合路径,结合不同层的多尺度特征,有效提升了深度学习模型对多尺度物体的识别能力。
  • 在许多任务中,如目标检测和图像分割,FPN技术都表现出了显著的优势,特别是在同时处理小物体和大物体时。通过逐层下采样和上采样的方式,FPN实现了高效的多尺度特征融合,显著提升了模型的性能。

欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文:
可访问艾思科蓝官网,浏览即将召开的学术会议列表。会议详细信息可参考:https://ais.cn/u/mmmiUz

相关文章:

【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码

【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码 【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征…...

【Docker】离线安装 Docker

离线安装 Docker 在CentOS系统上安装Docker 1、下载 Docker 仓库文件 https://download.docker.com/linux/centos/docker-ce.repo 2、添加 Docker 仓库文件 将上一步下载的文件,移动到 /etc/yum.repos.d/ 目录 3、清除 YUM 缓存 sudo yum clean all sudo yum…...

三大行业案例:AI大模型+Agent实践全景

本文将从AI Agent和大模型的发展背景切入,结合51Talk、哈啰出行以及B站三个各具特色的行业案例,带你一窥事件驱动架构、RAG技术、人机协作流程,以及一整套行之有效的实操方法。具体包含内容有:51Talk如何让智能客服“主动进攻”&a…...

Dockerfile基础指令

1.FROM 基于基准镜像(建议使用官方提供的镜像作为基准镜像,相对安全一些) 举例: 制作基准镜像(基于centos:lastest) FROM cenots 不依赖于任何基准镜像 FROM scratch 依赖于9.0.22版本的tomcat镜像 FROM…...

12.30 linux 文件操作,磁盘分区挂载

ubuntu 在linux 对文件的相关操作【压缩,打包,软链接,文件权限】【head,tail,管道符,通配符,find,grep,cut等】脑图-CSDN博客 1.文件操作 在家目录下创建目录文件&#…...

[图形渲染]【Unity Shader】【游戏开发】 Shader数学基础17-法线变换基础与应用

在计算机图形学中,法线(normal) 是表示表面方向的向量。它在光照、阴影、碰撞检测等领域有着重要作用。本文将介绍如何在模型变换过程中正确变换法线,确保其在光照计算中的正确性,特别是法线与顶点的变换问题。 1. 法线与切线的基本概念 法线(Normal Vector) 法线(或…...

YOLOv9-0.1部分代码阅读笔记-train.py

train.py train.py 目录 train.py 1.所需的库和模块 2.def train(hyp, opt, device, callbacks): 3.def parse_opt(knownFalse): 4.def main(opt, callbacksCallbacks()): 5.def run(**kwargs): 6.if __name__ "__main__": 1.所需的库和模块 import …...

等保测评和密评的相关性和区别

等保测评和密评在网络安全领域均扮演着至关重要的角色,它们之间既存在相关性,又各具特色。 以下是对两者相关性和区别的详细阐述:相关性 1.法律基础:等保测评和密评都是依据国家相关法律法规开展的活动。 等保测评主要依据《网…...

活动预告 |【Part2】 Azure 在线技术公开课:迁移和保护 Windows Server 和 SQL Server 工作负载

课程介绍 通过 Microsoft Learn 免费参加 Microsoft Azure 在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft 云技术的了解。参加我们举办的“迁移和保护 Windows Server 和 SQL Server 工作负载”活动,了解 Azure 如何为将工作负载…...

大语言模型(LLM)一般训练过程

大语言模型(LLM)一般训练过程 数据收集与预处理 收集:从多种来源收集海量文本数据,如互联网的新闻文章、博客、论坛,以及书籍、学术论文、社交媒体等,以涵盖丰富的语言表达和知识领域。例如,训练一个通用型的LLM时,可能会收集数十亿甚至上百亿字的文本数据.清洗:去除…...

单片机的基本组成

单片机,即单芯片微型计算机(Single-Chip Microcomputer),是一种将中央处理器(CPU)、内存、输入输出接口等功能集成在一块集成电路芯片上的微型计算机。它具有体积小、成本低、可靠性高、功耗低等优点,在现代电子产品中…...

GO性能优化的一些记录:trace工具的使用

使用场景: 1 想要查看接口延时性偏高 2 深入了解协程具体如何运营的详细信息(运行时长,或者什么原因导致了协程运行受阻) 可以使用 trace 功能,程序便会对下面的一系列事件进行详细记录,并且会依据所搜集到…...

dede-cms关于shell漏洞

一.文件式管理器 1.新建文件 新建一个php文件,内容写个php脚本语言 访问,可以运行 2.文件上传 上传一个php文件,内容同样写一个php代码 访问,运行成功 二.模块-广告管理 来到模块-广告管理——>增加一个新广告 在这里试一下…...

NAT 技术如何解决 IP 地址短缺问题?

NAT 技术如何解决 IP 地址短缺问题? 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 随着互联网的普及和发展,IP 地址的需求量迅速增加。尤其是 IPv4 地址&…...

使用 IDE生成 Java Doc

使用步骤 Android Studio界面->Tools->Generate JavaDoc zh-CN -encoding UTF-8 -charset UTF-8 -classpath “C:\Users\fangjian\AppData\Local\Android\Sdk\platforms\android-34\android.jar” 报错问题 错误: 目标 17 不允许选项 --boot-class-path 如果你正在使用…...

通过无障碍服务(AccessibilityService)实现Android设备全局水印显示

一、无障碍功能简介 首先我们先来了解下无障碍功能的官方介绍: 无障碍服务仅应用于帮助残障用户使用 Android 设备和应用。它们在后台运行,并在触发 AccessibilityEvents 时接收系统的回调。此类事件表示用户界面中的某些状态转换,例如焦点已…...

flask后端开发(2):URL与视图

目录 URL定义request获取请求参数 gitcode地址: https://gitcode.com/qq_43920838/flask_project.git URL定义 from flask import FlaskappFlask(__name__)app.route(/) def hello_world():return Hello World!app.route(/profile) def profile():return 我是个人…...

力扣-数据结构-7【算法学习day.78】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...

【潜意识Java】Java中深入解析抽象类与接口的差异的完整笔记总结【保姆级详细教程】

目录 一、抽象类和接口的基本概念 (一)抽象类是什么 (二)接口是什么 二、抽象类和接口的设计目的差异 (一)抽象类的设计初衷 (二)接口的设计意图 三、抽象类和接口的语法特性…...

【Flink运行时架构】系统构架

SMP架构 数据处理系统的架构最简单的实现方式就是单节点,但是随着数据量的增大,为了使单节点的机器性能更加强大,需要增加CPU数量和加大内存来提高吞吐量。这就是所谓的SMP(Symmetrical Multi Processing,对称多处理)架构。 但是这种架构带来…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...