轻量自高斯注意力(LSGA)机制

light(轻量)Self-Gaussian-Attention vision transformer(高斯自注意力视觉transformer) for hyperspectral image classification(高光谱图像分类

论文:Light Self-Gaussian-Attention Vision Transformer for Hyperspectral Image Classification

代码:GitHub - machao132/LSGA-VIT

  

一、摘要

研究现状:近年来,卷积神经网络(convolutional neural networks,CNNs)由于其在局部特征提取方面的优异性能,在高光谱图像分类中得到了广泛的应用。然而,由于卷积核的局部连接和权值共享特性,cnn在长距离关系建模(远程依赖关系)方面存在局限性,而更深层次的网络往往会增加计算成本。

主要工作:针对这些问题,本文提出了一种基于轻量自高斯注意(light self-gauss-attention, LSGA)机制的视觉转换器(vision Transformer, VIT),提取全局深度语义特征

1. 首先,空间-光谱混合标记器模块提取浅层空间-光谱特征,扩展图像小块生成标记

2. 其次,轻自注意使用Q(查询)、X(原点输入),而不是Q、K(键)和V(值)来减少计算量和参数。

3. 此外,为了避免位置信息的缺乏导致中心特征和邻域特征混叠,我们设计了高斯绝对位置偏差来模拟HSI数据分布,使关注权值更接近中心查询块

研究成果:多个实验验证了该方法的有效性,在4个数据集上的性能优于目前最先进的方法。具体来说,我们观察到A2S2K的准确率提高了0.62%,SSFTT 的准确率提高了 0.11%。综上所述,LSGA-VIT方法在HSI 分类中具有良好的应用前景,在解决位置感知远程建模和计算成本等问题上具有一定的潜力。

   

二、创新点

1) 作者使用混合空间-频谱标记器来代替patch嵌入,以保持输入图像patch的完整关系,并获得局部特征关系,使后续的VIT块,以实现全局特征提取。

2) LSGA-VIT模块被设计为联合收割机高斯位置信息和轻SA(LSA)机制,模拟场的中心位置和局部位置之间的关系。通过提高中心位置的谱特征权重,有效地减少了计算量和参数个数。

3) 该方法融合了全局和局部特征表达,有效地提高了HSI分类的准确率。烧蚀实验和对比实验均验证了该方法的有效性和优越性。

    

  

三、Method

LSGA-VIT框架,主要由混合谱-空间标记器、LSGA模块(轻量自高斯注意力模块)构成,如下图。

A. Hybrid Spectral–Spatial Tokenizer(混合谱-空间标记器)

输入:高光谱图像X_0 \in R^{H \times W \times S}经过PCA(主成分分析法)降维后得到的X_{PCA} \in R^{H \times W \times s},s代表图像的bands(图像的bands也叫通道)。

输入样本:再输入之前还要把图像裁剪为n个大小为h×w的样本X_1 \in R^{h \times w \times s}

过程:混合空间-频谱标记化模块,首先,将X_1 重塑X_2 \in R^{s \times h\times w}作为卷积层的输入。再利用3-D卷积层来提取空间-频谱特征。

第一层,3-D卷积层,从卷积到激活的定义如下:x^{i,j,k}表示为在第m个卷积层的第n个特征图的像素位置(i,j,k)激活值

其中,\varphi表示激活函数,b_{m,n}是偏置参数,2\lambda +12\mu +12\eta +1分别代表卷积核的通道数、高度和宽度,κ表示卷积核。为输入的3-D数据块数量,这里我们设= 1。 通过3-D卷积层后,合并前两个维度后,输出大小( \theta \times s',h',w'),再输入到2-D卷积层中。

第二层,2-D卷积层,从卷积到激活的定义如下:

通过2-D卷积层后,输出空间的大小还原为原大小,输出大小( c',h,w)。其中,其中 c′ 为线性投影输出通道数patch嵌入维数

最后,将后两个维度展平并转置,获得X \in R^{t\times c'} ,其中 t = h \times wX由t个token向量组成)。将向量长度为 c' 的 t 个token输入到LSGA Transformer模块。

Q:线性投影输出通道数?

接下来的LSGA模块中,包含线性的残差连接,也就是说输入、输出通道数是一致的,所以c′ 也可以说是接下来线性投影输出通道数。

Q:patch嵌入维数是什么?

transformer的patch embedding(嵌入)是指在模型中将图像分成固定大小的patchs,并通过线性变换得到每个patch的embedding(经过嵌入层的维度),嵌入维数也就是这个embedding的维度。

Q:token的作用?

将每个像素的直接展开作为token可以保持图像上每个点的空间相关性

    

   

B. Light Self-Attention Mechanism(轻量的自注意机制)

传统自注意力机制:

其中,A_q,A_k,A_v \in R^{c' \times c'}是权重矩阵(没错,就是权重矩阵,Q,K,V也可以通过线性层获得)。 

   

简化推导:

令​A = A_qA_K^T\in R^{c'\times c},A是一个权重矩阵。公式10简化为:

\hat{Q} = XA,则

由于Q\hat{Q} 都是由X变换得到的,因此我们直接把\hat{Q}看作Q,则

                                                                                                            QK^T = QX^T

-------------------------------------------(简化掉了权重矩阵A_k,分支头K只输入一个X,不再进行A_k操作)-------------------------------------

再令,则

根据公式9,可得

作者在注意力框架末尾多增加了一个线性层A_t

A = A_vA_t,则

A = A_vA_t,也就是说末尾的线性操作A_t和分支头V的线性操作A_v可进行合并,作者使用线性操作A_t代替A_v,换句话说,线性层A_v移到了框架末尾(框架末尾不属于计算式之内),因此分支头V不再进行A_v操作,最终得到下面的定义。 

-------------------------------------(将线性层A_v转移到了框架末尾,分支头V只输入一个X,不再进行A_v操作)-------------------------------

最终,将线性层A_v移到了框架末尾,轻量的自注意机制定义如下:

总结:经过公式推导简化,简化掉了A_kA_v,两个权重矩阵。

  

C. Gaussian Absolute Position Bias(高斯绝对位置偏差)

目的:由于Transform模型无法捕获标记(token)的位置信息,因此有必要添加表示相对或绝对位置的模块。

方法:在多头自注意力机制中,对每个头引入相对位置偏差参数。表示如下:

其中,d是多头注意机制中每个头的维度,B \in R^{t\times t}是相对位置偏差参数。

因为,在本文中,不是从图像patch生成token,而是每个像素作为一个token,可以保留图像的空间关系。为了计算每一个像素的空间关系,采用2-D高斯函数来表示图像的空间关系,以高斯绝对位置代替相对位置偏差,定义如下:

其中,σ是标准偏差,(x,y)表示空间位置坐标,G是高斯位置矩阵。 

      

     

D. LSGA transformer模块总述

LSGA transformer模块,如下图所示:

在LSGA Transformer模块中,对输入特征图进行层归一化,然后对LSGA得到的X' \in R^{81\times96}进行残差连接。将上述结果归一化并通过FC,最后执行剩余连接。LSGA块的末端顺序地执行层归一化、MLP和残差连接。在执行两次LSGA块之后,通过线性层使特征图变平以用于最终分类。

  

四、实验

数据集:IP,Salinsa Scene(SA),Pavia University(PU)和Houston 2013(Houston)。

评价标准:总体准确率(OA)、平均准确率(AA)和Kappa系数(K)作为量化指标来验证LSGA-VIT的实验性能。

实验配置:所有实验都在配备有Intel Core I7- 10700 K CPU、RTX 2070 GPU和32-GB RAM的计算机上进行。本文中的所有实验训练集都设置为数据集的10%。 

1. 消融实验

对比SA(自注意力)、LSA(轻量自注意力)、自高斯注意(self-Gaussian attention, SGA)和LSGA(轻量自高斯注意力)

可以看到LSGA减少了 50%的计算量,减少了 30%的参数,仅损失了 0.02%的OA。

2. 对比实验

实验数据表明,该算法在4个数据集上均取得了较好的分类精度,尤其是在3个数据集上取得了最优的OA。

   

  

五、总结

1. 通过混合谱-空间标记器获得X(t个token向量),以保持图像上每个点的空间相关性,再传入LSGA模块融合注意力。

2. LSGA模块(轻量自高斯注意力模块)首先经过公式推导去除了分支头K,V中的线性操作A_kA_v。(没错这里是线性,作者采用线性变换而不是卷积来降低参数)

3. 采用2-D高斯函数获取高斯绝对位置来提取像素间的空间关系。

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

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

相关文章

完整指南:如何使用 Node.js 复制文件

文件拷贝指的是将一个文件的数据复制到另一个文件中,使目标文件与源文件内容一致。Node.js 提供了文件系统模块 fs,通过该模块可以访问文件系统,实现文件操作,包括拷贝文件。 Node.js 中文件拷贝方法 在 Node.js 中,有…

基于微信小程序的宠物寄养平台小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

预编译(1)

目录 预定义符号: 使用: 结果: 预编译前后对比: #define定义常量: 基本语法: 举例1: 结果: 预编译前后对比: 举例2: 预编译前后对比: 注…

ELK介绍

一、前言 前面的章节我们介绍通过ES Client将数据同步到ElasticSearch中,但是像日志这种数据没有必要自己写代码同步到ES那样会折腾死,直接采用ELK方案就好,ELK是Elasticsearch、Logstash、Kibana三款开源软件的缩写,ELK主要用于…

P2PNet-Soy原理梳理

前文总结了P2PNet源码以及P2PNet-Soy源码实现方法,相关链接如下: 人群计数P2PNet论文:[2107.12746] Rethinking Counting and Localization in Crowds:A Purely Point-Based Framework (arxiv.org) p2p人群计数源码:GitHub - Te…

云服务器租用价格表概览_阿里云腾讯云华为云

云服务器租用价格多少钱一年?阿腾云分享阿里云、腾讯云和华为云的云服务器租用价格表:阿里云2核2G服务器108元一年起、腾讯云2核2G3M带宽轻量服务器95元一年、华为云2核2G3M云耀L实例89元一年起,阿腾云分享更多关于云服务器租用价格明细&…

Kubernetes基础(五)-Service

1 引言 Service 主要用于提供网络服务,通过Servicel的定义,能够 为客户端应用提供稳定的访问地址(域名或IP地址)和负载均衡功能,以及屏蔽后端Endpoint的变化,是Kubernetes实现微服务的核心资源。 本文详细…

博弈论中静态博弈经典场景案例

博弈论中静态博弈经典场景案例 1、齐威王田忌赛马 田忌赛马是中国家喻户晓的故事,故事讲述的是齐国大将田忌的谋士孙膑如何运用计谋帮助田忌在与齐威王赛马时以弱胜强的故事,这个故事其实本质也是一个博弈的过程。     齐威王要和田忌赛马&#xff…

二叉树MFC实现

设有一颗二叉树如下; 这似乎是一颗经常用作示例的二叉树; 对树进行遍历的结果是, 先序为:3、2、2、3、8、6、5、4, 中序为:2、2、3、3、4、5、6、8, 后序为2、3、2、4、5、6、8、3&#xff1b…

MySQL学习笔记25

逻辑备份 物理备份 在线热备: 真实案例: 数据库架构是一主两从,但是两台从数据库和主数据不同步。但是每天会全库备份主服务器上的数据到从服务器上。需要解决主从不同步的问题。 案例背后的核心技术: 1、熟悉MySQL数据库常见…

【计算机视觉|人脸建模】PanoHead:360度几何感知的3D全头合成

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:PanoHead: Geometry-Aware 3D Full-Head Synthesis in 360 ∘ ^{\circ} ∘ 链接:[2303.13071] PanoHead: Geometry-Aware 3D Full-Head Synthesis in 360 ∘ ^{\circ} ∘ (arx…

大数据Doris(三):Doris编译部署篇

文章目录 Doris编译部署篇 一、Doris编译

学信息系统项目管理师第4版系列13_立项管理

1. 项目立项管理包括 1.1. 项目建议与立项申请 1.2. 项目可行性研究 1.2.1. 初步可行性研究 1.2.2. 详细可行性研究 1.2.2.1. 不可缺少 1.2.2.1.1. 【高21上选21】 1.2.3. 可以依据项目的规模和繁简程度合二为一 1.3. 项目评估与决策 2. 立项申请 2.1. 项目建议书 2…

Lua语法之简单变量

--nil有点类似空null a nil print(a) --type函数得到类型 返回值是string print(type(a)) print("*****")--number是数值 int float这些 --lua的变量可以随便赋值 自动识别类型 a 1 print(a) print(type(a)) print("*****")--siting可以用单引号双引号 a…

华为云HECS云服务器docker环境下安装nginx

前提:有一台华为云服务器。 华为云HECS云服务器,安装docker环境,查看如下文章。 华为云HECS安装docker-CSDN博客 一、拉取镜像 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest ) docker pull nginx查看镜像 dock…

实体行业数字化转型怎么做?线上线下相结合的新零售体系怎么做?

如今,实体行业想要取得收入增长,只做线下业务或者只做线上业务,在当前的市场环境中是难以长久生存的,因此一定要线上线下相结合,将流量运作与线下转化进行充分结合,才能更好地发挥实体优势,带来…

Linux学习记录——삼십일 socket编程---TCP套接字

文章目录 TCP套接字简单通信1、服务端1、基本框架2、获取连接 2、客户端3、多进程4、多线程5、线程池6、简单的日志系统7、守护进程8、其它 TCP套接字简单通信 本篇gitee 学习完udp套接字通信后,再来看TCP套接字。 四个文件tcp_server.hpp, tcp_serve…

什么是Local Storage和Session Storage?它们之间有什么区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是 Local Storage 和 Session Storage?Local Storage(本地存储)Session Storage(会话存储) ⭐ 区别⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的…

程序员的浪漫:如何用java代码画❤️表白呢?

有位小伙伴说,看到一个帖子,一个计算机博士接亲时,要求现场写代码,5分钟做出一个爱心。我们就看看如何用java设计出心形的代码。 我找了一下,发现方法竟然很多,我们就来见识一下,最后我们看一下…

TouchGFX之字体缓存

使用二进制字体需要将整个字体加载到存储器。 在某些情况下,如果字体很大,如大字号中文字体,则这样做可能不可取。 字体缓存使应用能够从外部存储器只能加载显示字符串所需的字母。 这意味着整个字体无需保存到在可寻址闪存或RAM上&#xff…