MSST-NET:用于高光谱和多光谱图像融合的多尺度空间-光谱Transfomer网络

news2024/11/27 16:38:42

1.网络结构
在这里插入图片描述

主要贡献:

  • 提出了一种多尺度空间光谱Transformer网络
  • 光谱多头注意力旨在提取光谱特征
  • 引入多尺度波段/补丁嵌入来提取多尺度特征
  • 自监督训练

痛点:卷积核的感受野有限,基于卷积神经网络CNN的融合方法无法利用特征图中的全局关系。

方法:该文利用Transformer从整个特征图中提取全局信息进行融合的强大能力,提出一种新型多尺度空间光谱Transformer网络(MSST-Net)。

该网络是一个双分支网络,分别从HSI中提取光谱特征,从MSI中提取空间特征。

在特征提取之前,执行跨模态串联以实现两个分支之间的跨模态信息交互。然后,我们提出一种光谱变压器(SpeT)来提取光谱特征,并引入多尺度带/补丁嵌入,通过SpeT和空间变压器(SpaT)获得多尺度特征。为了进一步提高网络的性能和泛化,我们提出了一种自监督预训练策略,其中专门设计了掩码带自动编码器(MBAE)和掩蔽补丁自动编码器(MPAE),用于SpeTs和SpaT的自监督预训练。

两个浅层特征提取模块

  • 一个卷积层,用于提取浅层特征

两种深层特征提取模块

  • 光谱特征提取
  • 空间特征提取

一个图像重建模块

  • 两个卷积层
  • GELU激活函数·

2. 具体模块

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
B l 0 B_l^0 Bl0代表第 l l l层第0个,维度是 D s p e D_{spe} Dspexc 这个 c = 16 ∗ 2 l − 1 c=16*2^{l-1} c=162l1, D s p e D_{spe} Dspe=32
文章设定层数为3层, l = 1 , 2 , 3 l=1,2,3 l=1,2,3
在这里插入图片描述
在这里插入图片描述

P l 0 P_l^0 Pl0维度为 N ∗ D s p a , p = 8 ∗ 2 l − 1 N*D_{spa},p=8*2^{l-1} NDspa,p=82l1,p是每个patch的大小, N = H ∗ W P 2 N=\frac{H*W}{P^2} N=P2HW , D s p a D_{spa} Dspa=256

3.数据集

在这里插入图片描述
在这里插入图片描述

LRHSI:采用wald’s协议,对CAVE、Havard、WDCM数据集采用高斯滤波+下采样,比例因子4和8
HRMSI:CANE和Harvard数据,3波段,采用NikonD700光谱响应矩阵
WDCM数据集,10波段,采用哨兵-2 A的光谱响应矩阵生成

对于真实数据集YRE,我们将观测到的HSI和MSI降采样为3后生成训练样本。原来的HSI被当做真实值。训练后,我们将原始HSI和MSI融合,使用训练后的模型估计HR-HSI。

4.训练设置

4.1.自监督训练

从零开始训练网络需要大量的时间和数据。因此,我们希望该网络能够得到更好的初始化训练。换句话说,我们需要一个预训练网络,在下次执行类似任务时能快速获得更好的结果。一般来说,训练前学习可以分为有监督学习和无监督学习。自监督学习是有监督学习和无监督学习之间的一种中间形式。它在训练前阶段使用未标记的数据集,并在各种应用中产生了有希望的结果。因此,我们以一种自我监督学习的方式对我们的模型进行了预训练。
本来MAE是非对称的,本文改了一下改成对称的
本文采用对称编码器-解码器结构的MAE
Masked patches autoencoder :MPAE
the masking ratiois 50%

Masked bands autoencoder :MBAE
the masking ratios of the LR-HSIs to 75%

4.2.微调

微调的目的是将预训练好的模型应用于后续的图像融合任务中。我们首先使用预先训练过的编码器来更新我们的网络的参数,然后对整个网络进行端到端微调。使用比训练前更大的补丁进行微调通常是更有益的。为了进一步提高预训练的变压器编码器提取LR-HSI的光谱特征和HR-MSI的空间特征的能力,我们使用比预训练尺寸更大的补丁进行端到端微调。

在这里插入图片描述

我们首先将hr - msi输入到MPAE中,将lr - hsi输入到MBAE中进行自监督预训练,然后将两个预训练好的编码器的参数加载到所提出的网络中进行端到端微调

CAVE预训练之后,在CAVE和Harvard上微调, 在harvard数据集上的实验可以看做对网络泛化能力的一个测试

参数设置:
优化器选用AdamW
在这里插入图片描述
学习率:CAVE:1.0e-3和Harvard:1.0e-4
batch size:32
epoch:5000
在预训练中,将训练集的HR-MSIs裁剪成大小为128×128像素的patches,从而将训练集的LR-HSIs裁剪成大小为128/𝑟×128/𝑟像素的patches,其中𝑟为降采样比(4/8)。
在端到端微调中,HR-MSIs被裁剪成大小为192×192像素的patches,LR-HSIs被裁剪成大小为192/𝑟×192/𝑟像素的patches。

4.3与其他方法比较

为了有效地评价该方法的性能,我们引入了7种最先进的融合方法进行比较,包括两种传统方法,即FUSE [8]和CNMF [24],四种基于cnn的方法,即.,DBIN[66],MHF-Net[32],UAL[38]和SSR-NET [14],以及一种新提出的基于变压器的方法,融合器[54]。在不同的比较方法中的参数是根据作者的代码或参考文献中的建议来设置的。这两种传统方法在MATLAB(R2013a)服务器2012上进行测试,使用两个Intel Xeon E5-2650处理器和128GB内存,基于深度学习的方法由Pytorch 1.10.0在Python 3.7上使用NVIDIA A40的GPU。

5.结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

来自文章:Multiscale spatial–spectral transformer network for hyperspectral and multispectral image fusion

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

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

相关文章

pip install mysqlclient报错

安装mysqlclient时报错 先查看安装的python版本 python -V 根据版本下载下载对应的 mysqlclient 文件 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclienthttps://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 我的是3.7版本的 就下载3.7版本,64位系…

aarch64 arm64 部署 stable diffusion webui 笔记 【1】准备 venv 安装pytorch 验证cuda

aarch64 pytorch(没有aarch64对应版本,自行编译) pytorch-v2.0.1 cuda arm64 aarch64 torch 2.0.1cu118 源码编译笔记【2】验证cuda安装 成功_hkNaruto的博客-CSDN博客 创建venv [rootceph3 stable-diffusion-webui]# /usr/local/Python-3.10.12/bin/python3 -m v…

一种结合白平衡统计信息和曝光信息的软光敏算法专利学习(专利四)

图像分块: 参见下图,一幅图像大小为5*6(像素),每个像素包含R、G、B三个分量,该图像划分为4个分块,第一分块的大小为3*3像素,第二分块的大小为3*3(像素),第三分块的大小为2*3像素,第四…

OpenCV基础(一):图片加载,图片腐蚀,图片模糊,图片边缘检测,图片保存

前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列blog。本文是音视频系…

Android逆向学习(四)app修改smali函数跳过弹窗广告,等待广告,更新提醒

Android逆向学习(四)app修改smali函数跳过弹窗广告,等待广告,更新提醒 一、写在前面 这是吾爱破解课程的第三个练习,我在写这篇博客时遇到了vscode插件bug,已经想办法联系原作者了,希望能够尽…

【已解决】pyqt5界面拖拽文件进入时,显示禁止图标,槽函数也没有进入。怎么办?

我今天遇到了一个很无语的问题,不知道为啥,用 QMainwindow 创建了一个简单的界面,里面只有一个 Qlabel。 想要尝试拖拽文件进来,然后打印文件路径。但是怎么改都没反应。一直显示禁止的一个图标,类似于: 一…

LeetCode——顺时针打印矩形

题目地址 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 按照顺时针一次遍历&#xff0c;遍历外外层遍历里层。 代码如下 class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {if(…

anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter

Win11查看安装的Python路径及安装的库 anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter 介绍开源包管理系统和环境管理系统 &#xff0c;包括多种语言的包安装&#xff0c;运行&#xff0c;更新&#xff0c;删除&#xff0c;最重要的是可以解…

YOLOV8模型改进-添加CBAM注意力机制

1.CBAM介绍 CBAM注意力机制是yolov8自带的注意力机制&#xff0c;它是通道注意模块和空间注意模块的结合。 2.查看CBAM在yolov8中的位置 路径&#xff1a;ultralytics/nn/modules/conv.py 3.添加CBAM 1.首先打开tasks.py文件&#xff1a;ultralytics/nn/modules/tasks.py 2.…

centos编译升级cmake,痛苦的Linux小白

环境 root 用户 下载 cmake官网下载地址&#xff1a;https://cmake.org/download/ 获取下载地址&#xff0c;右击cmake-3.27.4.tar.gz 命令行输入链接地址&#xff0c;下载 wget https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4.tar.gz解压 tar -zx…

​Vue + Element UI前端篇(二):Vue + Element 案例 ​

Vue Element UI 实现权限管理系统 前端篇&#xff08;二&#xff09;&#xff1a;Vue Element 案例 导入项目 打开 Visual Studio Code&#xff0c;File --> add Folder to Workspace&#xff0c;导入我们的项目。 安装 Element 安装依赖 Element 是国内饿了么公司提…

【算法训练-链表 三】删除链表的倒数第N个节点

最近工作有点忙&#xff0c;刷道中等题缓解下压力&#xff01;删除链表的倒数第N个节点&#xff0c;使用【链表】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&#xff1a;目标公司最近一年出现频率排序&#xff0c;由高…

解决Nacos服务器连接问题:一次完整的排查经验分享

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

【docker】私有仓库搭建

Docker 私有仓库搭建 在 Docker 中&#xff0c;当我们执行 docker pull xxx 的时候 &#xff0c;它实际上是从 registry.hub.docker.com 这个地址去查找&#xff0c;这就是Docker公司为我们提供的公共仓库。在工作中&#xff0c;我们不可能把企业项目push到公有仓库进行管理。…

基于FPGA的数字秒表设计(完整工程)

目录 概述 设计功能 数字秒表设计的目的 模块仿真 设计代码 概述 该设计是用于体育比赛的数字秒表,基于FPGA在Quartus II 9.0sp2软件下应用VHDL语言编写程序,采用ALTRA公司CycloneII系列的EP2C8Q208芯片进行了计算机仿真&#xff0c;并给出了相应的仿真结果。本设计有效的…

Ribbon负载均衡+Nacos服务搭建

Ribbon负载均衡 流程 首先通过RibbonLoadBalanceerClient获取服务名&#xff0c;并传给DynamicServerListLoadBalancer——>通过EureKa-server获取服务名对应服务列表(也就是被注册到EureKa中的服务&#xff0c;可能包括不同端口的)&#xff0c;然后我们会根据IRule中的服务…

学习pytorch9 神经网络-卷积层

神经网络-卷积层 官网卷积数据公式参数说明卷积运算演示输入输出channel代码**注意点&#xff1a;**code 执行结果 官网 https://pytorch.org/docs/stable/nn.html#convolution-layers 图像识别常用conv2d 二维卷积 nn.Conv2d https://pytorch.org/docs/stable/generated/torch…

文件包含漏洞学习小结

目录 一、介绍 二、常见文件包含函数 三、文件包含漏洞代码举例分析 四、文件包含漏洞利用方式 4.1 本地文件包含 1、读取敏感文件 2、文件包含可运行的php代码 ①包含图片码 ②包含日志文件 ③包含环境变量getshell ④临时文件包含 ⑤伪协议 4.2 远程文件包含 4.…

【学习笔记】C++ 中 static 关键字的作用

目录 前言static 作用在变量上static 作用在全局变量上static 作用在局部变量上static 作用在成员变量上 static 作用在函数上static 作用在函数上static 作用在成员函数上 前言 在 C/C 中&#xff0c;关键字 static 在不同的应用场景下&#xff0c;有不同的作用&#xff0c;这…

指针进阶(一)

指针进阶 1. 字符指针面试题 2. 指针数组3. 数组指针3.1 数组指针的定义3.2 &数组名VS数组名 3.3 数组指针的使用4. 数组传参和指针传参4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参 前言 指针的主题&#xff0c;我们在初级阶段的《指针》章节已经接…