光谱融合——Deep Spatio-spectral Attention Convolutional Neural Networks

Hyperspectral Image Super-Resolution via Deep Spatiospectral Attention Convolutional Neural Networks

简介

  • 论文链接

  • 对于高分辨率多光谱(高分辨率意味空间信息更好)图像,采用spatial attention机制进行空间信息的保留,对于低分辨率高光谱(多频段也就是多channel)图像,采用channel attention对于通道数(频段数)进行通道信息保留。

  • 引入PixelShuffle模块进行上采样操作

  • 在concat阶段,对MS和HS进行交叉concat,使得信息融合更好

2023-11-19_17-39-12

注意力module

首先对图像进行全局池化,输出一个特定维度的tensor,然后通过卷积进行相关操作用于计算注意力信息。

self.CA = nn.Sequential(
            nn.Conv2d(num_spectral, 1, kernel_size=1, stride=1),
            nn.LeakyReLU(),
            nn.Conv2d(1, num_spectral, kernel_size=1, stride=1),
            nn.Sigmoid()
        )

self.SA = nn.Sequential(
           nn.Conv2d(1, 1, kernel_size=6, stride=1, padding='same'),  # 输入通道由3改为1
           nn.Sigmoid(),
        )
gap_ms_c = ms_hp.mean(dim=(2, 3), keepdim=True)  # 每个通道平均
CA = self.CA(gap_ms_c)

gap_RGB_s = rgb_hp.mean(dim=1, keepdim=True)
SA = self.SA(gap_RGB_s)

2023-11-19_17-47-24

交叉concat

在对ms图像进行下采样后,使得其空间分辨率从大小和高光谱一致,再将高分辨率图像分别插入彩色三通道之间,使得concat更加充分。这一步相当于获取高光谱图像的光谱信息,之后采用pixelshuffle模块,对其进行channel维度转为空间分辨率的上采样操作,与多光谱原始图像再次进行concat,保留原始的空间分辨率信息。

temp1 = ms_hp[:, :15]
temp2 = ms_hp[:, 15:]
rgb_temp1 = rgb[:, 0].unsqueeze(1)
rgb_temp2 = rgb[:, 1].unsqueeze(1)
rgb_temp3 = rgb[:, 2].unsqueeze(1)



temp1 = rs[:, :15]
temp2 = rs[:, 15:]
rgb_temp1 = rgb_hp[:, 0].unsqueeze(1)
rgb_temp2 = rgb_hp[:, 1].unsqueeze(1)
rgb_temp3 = rgb_hp[:, 2].unsqueeze(1)

上采样模块PixelShuffle

模块来源论文:Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network

将尺寸为 ( ∗ ,   C   ×   r 2 ,   H ,   W ) (*, C × r^2, H, W) (,C×r2,H,W) 的tensor转为 ( ∗ ,   C ,   H   ×   r ,   W   ×   r ) (*, C, H × r, W × r) (,C,H×r,W×r), 其中r是缩放因子。具体流程可参考python numpy实现PixelShuffle及其逆变换

2023-11-19_19-54-14

算法流程是:

  1. 将数组reshape成 ( r , r , n , n ) ( r , r, n , n ) (r,r,n,n)的形状
  2. 通过transpose将数组调整为$( r , 2 , r , 2 ) $的形式
  3. 再次通过reshape将数组调整为 ( 2 ∗ r , 2 ∗ r ) ( 2 ∗ r , 2 ∗ r) (2r,2r)的形状。
#pytorch实现代码
self.ps = nn.PixelShuffle(8)

class PixelShuffle(nn.Module):
    def __init__(self, r):
        super(PixelShuffle, self).__init__()
        self.r = r

    def forward(self, I):
        bsize, c, w, h = I.size()
        if c % (self.r * self.r) != 0:
            raise ValueError('channel of tensor must be divisible by '
                             '(scale_factor * scale_factor).')
        bsize = I.size(0)
        X = I.reshape([bsize, c // (self.r * self.r), self.r, self.r, w, h])
        X = X.permute(0, 1, 4, 2, 5, 3)
        X = X.reshape(bsize, c // (self.r * self.r), self.r * w, self.r * h)
        return X

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

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

相关文章

Vue+Swiper实现轮播图效果

效果展示 实现了自带切换按钮在图片外部实现了自定义的切换按钮 背景 在项目中使用到了轮播图,实现点击上一张下一张时实现循环显示,同时预览两个图片,并加以文字对图片的说明。 设计 使用 Swiper 插件,可以实现当前这个需求。…

[Kettle] 公式

公式是用来计算数据流中数据的表达式 公式可以是"AB"这样的简单计算,也可以是类似"if/then"复杂业务逻辑判断的表达式 数据源 2019年11月月考成绩(Kettle数据集16).xlshttps://download.csdn.net/download/Hudas/88553816?spm1001.2014.300…

二阶段提交

二阶段提交 二阶段提交(英语:Two-phase Commit)是指,为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种算法(Algorithm)。 二阶段过程 在两阶段提交过程中,主要分为了两种角色协调者&…

webpack快速上手之搭建cesium三维地球环境

前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 Cesium介绍 初始化一个Cesium地球 ​编辑 Webpack的使用 Webpac…

鼠标点击网页任何地方都显示光标闪烁输入状态

出现这种情况的原因 因为大概是用户无意中打开了浏览器无障碍模式中的使用文本光标浏览网页的功能。 对于Chrome浏览器而言就是这样的: 直接按F7关闭这个模式

谈谈系统性能调优中都需要考虑哪些因素

一、 什么是性能调优? 这个系统好慢、网站又打不开了,太卡了,又没响应了,相信大家都遇到过用户的这种抱怨,此时,说明我们的应用系统出现了性能问题,那么怎么办呢,首先想到的应该是优…

CNCC 2023 | 大模型全面革新推荐系统!产学界多位大咖精彩献言

随着人工智能领域的不断突破,大模型的潮流已然席卷而来。大模型一跃成为时代的新宠,展现出强大的通用性和泛化能力,为 AI 技术的应用进一步打开了想象空间。与此同时,推荐系统作为大规模机器学习算法应用较为成熟的方向之一&#…

腾讯混元模型

最近腾讯的混元大模型内测,我有幸申请到了一个名额。 身为一个程序员,我想大家最关注的一定是该模型的代码和类代码能力,因为这直接关系到这个模型能帮我们解决多少问题,节约多少时间,提高多少效率。 对此,我针对工作中可能会用到的几个点进行了详细的体验。 先说结论:腾讯混元…

工业基础类IFC—材质和纹理

在我们的 IFC技术交流群(788206534)里,经常会有人提问“如何学习 IFC文档或者其开发”的问题。对于这个问题,我一直没有机会做一个完整的回答,这次我认真回忆了自己关于IFC的学习经历,在此与大家分享。一是…

利用API连接抖音外卖与电商平台和营销系统,实现无代码开发的集成

利用API连接抖音外卖和电商平台 抖音来客,作为抖音生活服务商家经营平台,为商家提供一站式经营服务,其中包括入驻、上品、经营和履约等功能。商家可以通过API调用,实现电商平台和抖音外卖的连接,从而优化运营效率。例…

Java SE——*API API帮助文档

1. API概述 Java中的API可以理解为一本编程字典或者工具包,它包含了许多预定义的类、接口和方法,可以帮助我们更方便地开发Java程序 想象一下,当你要做一个饭菜的时候,你需要食谱和厨具。食谱告诉你需要哪些食材和步骤&#xff…

解决 VS2022 关于 c++17 报错: C2131 表达式必须含有常量值

使用 VS2022 编译 ORB-SLAM3 加载Vocabulary 二进制ORBvoc.bin 时,在 DBOW2 里修改 TemplatedVocabulary.h 代码显示这样的错误: 编译器错误 C2131 表达式的计算结果不是常数 定位到我的代码中: char buf [size_node] ; 原因 : …

基于GATK流程化进行SNP calling

在进行变异检测时,以群体基因组重测序数据为例,涉及到的个体基本都是上百个,而其中大多数流程均是重复的步骤。 本文将基于GATK进行SNP calling的流程写入循环,便于批量分析。 1 涉及变量 1.工作目录work_dir/ 2.参考基因组ref…

SMART PLC数值积分器功能块(矩形+梯形积分法完整源代码)

PLC的数值积分器算法也可以参考下面文章链接: PLC算法系列之数值积分器(Integrator)-CSDN博客文章浏览阅读1.5k次,点赞3次,收藏3次。数值积分和微分在工程上的重要意义不用多说,闭环控制的PID控制器就是积分和微分信号的应用。流量累加也会用到。有关积分运算在流量累加上…

助力安全生产--韩施电气为您提供电动机保护及电机故障解决方

上海韩施电气自成立于2008年,是一家专门从事销售电气自动化设备、电力设备、机电设备的综合型贸易公司,公司自成立以来一直专注于EOCR产品的推广销售和技术服务,成为韩国施耐德EOCR在国内的总代理,并授予代理证书,我们…

uni-app:前端实现心跳机制(全局)+局部页面控制心跳暂停和重新心跳

一、App.vue全局中写入心跳 在data中定义变量heartbeatTimer,便于暂停心跳使用在onLaunch中引用开始心跳的方法startHeartbeat()写入开始心跳方法写入暂停心跳方法写入请求后端刷心跳机制 定义变量 // 在全局设置的心跳机制中添加一个变量来保存定时器的标识 data(…

云计算行业敲门砖—证书盘点

未来10年,都会是云计算技术不断发展变革的时代,这其中会产生非常多的就业机会。有数据统计,未来五年,云计算行业人才缺口达150万,选对了行业,你就成功了一半。 云计算可以考的证书还是很多的,很…

React中StrictMode严格模式,导致开发环境,接口会请求两次或多次( useEffect 请求多次)

问题描述: 我在用 create-react-app时,开发环境,一进页面接口会请求两次或多次。 我在首页 useEffect里 请求一个接口,整个页面就在这里请求这一次接口。但 实际上请求了两次。我检查了代码,确定只调用了一次&#xf…

本地部署 Qwen-14B-Chat

本地部署 Qwen-14B-Chat 1. Qwen-14B 概述2. Github 地址3. 创建虚拟环境4. 安装依赖项5. 快速使用6. 启动 web 演示7. 访问 Qwen 1. Qwen-14B 概述 通义千问-14B(Qwen-14B) 是阿里云研发的通义千问大模型系列的140亿参数规模的模型。Qwen-14B是基于Tra…

快速上手 TypeScript

什么是TypeScript TypeScript 简称 TS ,既是一门新语言,也是 JS 的一个超集,它是在 JavaScript 的基础上增加了一套类型系统,它支持所有的 JS 语句,为工程化开发而生,最终在编译的时候去掉类型和特有的语法…
最新文章