读书笔记:使用Transformers的遥感图像变化检测

读书笔记:Remote Sensing Image Change Detection with Transformers

文章:https://ieeexplore.ieee.org/abstract/document/9491802
代码:https://github.com/justchenhao/BIT_CD
摘要:现代变化检测(CD)通过深度卷积强大的判别能力取得了显着的成功。然而,由于场景中物体的复杂性,高分辨率遥感 CD 仍然具有挑战性。具有相同语义概念的对象可能在不同时间和空间位置表现出不同的光谱特征。最近使用纯卷积的 CD 仍在努力在时空中关联远程概念。非局部自注意力方法通过对像素之间的密集关系进行建模,显示出有希望的性能,但计算效率低下。在这里,我们提出了一种双时间图像转换器 (BIT),以有效地对时空域内的上下文进行建模。我们的直觉是,兴趣变化的高级概念可以用几个视觉词来表示,即语义标记。为了实现这一点,我们将双时间图像表达为几个标记,并使用转换器编码器在紧凑的基于标记的时空中对上下文进行建模。然后将学习到的上下文丰富的标记反馈到像素空间,以通过转换器解码器精炼原始特征。我们将 BIT 整合到基于深度特征差异的 CD 框架中。在三个 CD 数据集上进行的大量实验证明了所提出方法的有效性和效率。值得注意的是,我们基于 BIT 的模型显着优于纯卷积基线,仅使用低 3 倍的计算成本和模型参数。基于没有复杂结构(例如 FPN、UNet)的朴素主干(ResNet18),我们的模型超越了几种最先进的 CD 方法,包括在效率和准确性方面优于四种最近的基于注意力的方法。

基于 BIT 的模型***

读书笔记:使用Transformers的遥感图像变化检测_第1张图片

文章算法流程
读书笔记:使用Transformers的遥感图像变化检测_第2张图片

语义分词器

读书笔记:使用Transformers的遥感图像变化检测_第3张图片
Ii为两张输入图
step1:通过 CNN 主干提取高级特征,得到特征图Xi
在这里插入图片描述

step2:
语义标记集合Ti
在这里插入图片描述
其中**φ(·)**表示具有可学习核的逐点卷积,W∈R C×L,**σ(·)**是softmax函数,用于对每个语义组进行归一化以获得注意力图Ai∈R HW×L。 Ti 由 Ai 和 Xi 相乘计算得出。

transformer encoder和 transformer decoder。

读书笔记:使用Transformers的遥感图像变化检测_第4张图片
在获得输入双时态图像的两个语义标记集 T1、T2 之后,我们使用transformer encoder对这些标记之间的上下文进行建模。我们的动机是基于令牌的时空中的全局语义关系可以被转换器充分利用,从而为每个时间生成上下文丰富的令牌表示。
如图(a)所示,我们首先将两组token连接成一个token set T∈R2L×C,并将其送入transformer encoder得到一个新的token集合Tnew。最后,我们将标记分成两组 Tinew(i = 1, 2)。
Transformer 编码器由多头自注意力(MSA)和多层感知器(MLP)块的 NE 层组成(图 (a))。与使用后范数残差单元的原始转换器不同,我们遵循 ViT [33] 采用预范数残差单元 (PreNorm),即层归一化紧接在 MSA/MLP 之前发生。 PreNorm 已被证明比对应的 [52] 更稳定和更有能力。
在每一层 l,self-attention 的输入是一个三元组(查询 Q,键 K,值 V),根据输入 T(l−1) ∈ R2L×C 计算得出:
读书笔记:使用Transformers的遥感图像变化检测_第5张图片其中 Wl−1q , Wl−1 k , Wl−1v ∈ RC×d 是三个线性投影层的可学习参数,d 是三元组的通道维度。
一个注意力头被表述为:
读书笔记:使用Transformers的遥感图像变化检测_第6张图片
σ(·)表示在通道维度上操作的softmax函数
Transformer 编码器的核心思想是多头自注意力。 MSA 并行执行多个独立的注意力头,并将输出连接起来,然后投影以产生最终值。 MSA 的优点是它可以共同关注来自不同位置的不同表示子空间的信息。正式地,
读书笔记:使用Transformers的遥感图像变化检测_第7张图片
其中 Wq j , Wkj , Wvj∈ RC×d, WO∈ Rhd×C 是线性投影矩阵,h 是注意力头的数量。
MLP 块由两个线性变换层组成,中间有一个 GELU [53] 激活。输入输出的维数为C,内层的维数为2C。
在这里插入图片描述
其中W1∈RC×2C,W2∈R2C×C是线性投影矩阵。
请注意,我们将可学习的位置嵌入 (PE) WP E ∈ R2L×C 添加到令牌序列 T 中,然后再将其馈送到转换器层。我们的经验证据(Sec. IV-D)表明有必要将 PE 补充到代币中。 PE 对有关元素在基于标记的时空中的相对或绝对位置的信息进行编码。这样的位置信息可能有益于上下文建模。例如,时间位置信息可以指导转换器利用与时间相关的上下文。

Transformer Decoder

到目前为止,我们已经为每个时间图像获得了两组上下文丰富的标记 Tinew(i = 1, 2)。这些上下文丰富的标记包含紧凑的高级语义信息,可以很好地揭示兴趣的变化。现在,我们需要将概念的表示投影回像素空间以获得像素级特征。为了实现这一点,我们使用改进的连体变压器解码器 [15] 来细化每个时间的图像特征。如图 4 (b) 所示,给定一系列特征 Xi,transformer 解码器利用每个像素与令牌集 Tinew 之间的关系来获得细化的特征 Xinew。我们将 Xi 中的像素视为查询,将标记视为键​​。我们的直觉是每个像素都可以通过紧凑语义标记的组合来表示。
我们的 Transformer Decoder由 ND 层多头交叉注意力 (MA) 和 MLP 块组成。
与 [15] 中的原始实现不同,我们移除了 MSA 块以避免大量计算像素之间的密集关系。我们采用 PerNorm 和相同配置的 MLP 作为 Transformer 编码器。
在 MSA 中,查询、键和值来自相同的输入序列,
在 MA 中,查询来自图像特征 Xi
键和值来自标记 Tinew
。形式上,在每一层 l,MA 定义为:读书笔记:使用Transformers的遥感图像变化检测_第8张图片
其中 Wq j , Wkj , Wvj∈ RC×d, WO∈ Rhd×C 是线性投影矩阵,h 是注意力头的数量。请注意,我们没有在输入查询中添加 PE,因为我们的经验证据(第 IV-D 节)显示添加 PE 时没有显着的收益。

Network Details

CNN backbone:我们使用修改后的 ResNet18 [32] 来提取双时间图像特征图。原始的 ResNet18 有 5 个阶段,每个阶段下采样 2。我们将最后两个阶段的步幅替换为 1,并在 ResNet 后面添加一个逐点卷积(输出通道 C = 32)以降低特征维度,然后是双线性插值层,从而获得下采样因子为4的输出特征图,以减少空间细节的损失。我们将此骨干网命名为 ResNet18 S5。为了验证所提出方法的有效性,我们还使用了两个较轻的主干,即 ResNet18 S4/ResNet18 S3,它只使用了 ResNet18 的前四/三个阶段。
Bitemporal image transformer:根据 Sec 中的参数实验。 IV-E,我们设置token长度L = 4。我们将transformer encoding的层数设置为1,transformer decoder的层数设置为8。MSA和MA中的head数h设置为8,通道维度d每个头设置为 8。
Prediction head:受益于 CNN 主干网和 BIT 提取的高级语义特征,采用非常浅的 FCN 进行变化判别。给定两个来自BIT输出的上采样特征图X1∗,X2∗∈RH0×W0×C(H0,W0分别是原始图像的高度,宽度),预测头是生成预测的变化概率图P ∈ RH0×W0×2,由下式给出
在这里插入图片描述

Loss function. 损失函数。在训练阶段,我们最小化交叉熵损失来优化网络参数。形式上,损失函数定义为:
读书笔记:使用Transformers的遥感图像变化检测_第9张图片
其中 l(Phw, y) =−log(Phwy) 是交叉熵损失,Yhw 是位置 (h, w) 处像素的标签。

程序

跑了代码:
数据集格式:需要改成如下格式,找网上的脚本即可轻松获取txt。
读书笔记:使用Transformers的遥感图像变化检测_第10张图片
我笔记本跑的,修改变量后可跑通,大概耗时40分钟。
读书笔记:使用Transformers的遥感图像变化检测_第11张图片

第99Epoch
读书笔记:使用Transformers的遥感图像变化检测_第12张图片
结果
读书笔记:使用Transformers的遥感图像变化检测_第13张图片

你可能感兴趣的:(变化检测,阅读笔记,pytorch,pycharm,深度学习)