【ChangeCLIP】Remote sensing change detection with multimodal vision-language representation learning
ChangeCLIP 是一种基于多模态视觉语言模型的遥感变化检测框架。该框架通过将 CLIP 模型应用于遥感图像和文本提示的结合体中,在双时相遥感图像变化检测任务中实现了最佳性能。主要创新点包括:1)利用 CLIP 模型生成遥感图像的文本提示以构建多模态输入数据;2)设计了差异特征补偿模块以增强两时相图像的变化捕捉能力;3)提出了一种视觉语言驱动的解码器以加强图像-文本特征之间的语义关系。实验结果表明,在多个知名数据集上实现了最佳 IoU 性能。

目录
🙋🙋1.摘要
🐸🐸2.背景
🍌🍌3.主要贡献
🍉🍉4.ChangeClip网络结构
🔔🔔5.代码使用步骤
通过设置环境变量CDPATH在/.bashrc中,可以更便捷地使用相对路径.如果你愿意的话,请参考以下方法来配置你的/.bashrc文件.
🍇5.2. 作为SYSU-CD数据集的一个典型示例展示代码的应用场景,在第一步中我们需要调用工具包中的tools/general/write_path.py脚本来生成包含数据路径信息的txt文件。具体格式请参考代码中的相关内容。
本研究采用CLIP模型对SYSU-CD数据集进行推断。该GitHub仓库中的CLIP模型已被用于实现Contrastive Language-Image Pretraining目标。通过该方法可输出反映识别结果的置信度JSON格式文件。
🍭1 首先需要安装CLIP项目,运行如下命令
🍭2 然后运行以下命令
🍭3 运行完成后,会生成如下的文件:
🍇5.4.可以查看tools/train.sh文件的内容,自行设定训练计划
我们对训练过程中的权重参数以及日志文件进行了公开分享. 如果您无法从百度网盘获取文件, 可以将您的需求告诉我, 我会尽快给予反馈, 并附上备用获取途径.
整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--
**代码:
(https://github.com/dyzy41/ChangeCLIP/tree/release "code")**
**论文:[paper](https://www.sciencedirect.com/science/article/abs/pii/S0924271624000042 "paper")**
## 🙋🙋1.摘要
>
>
> 遥感变化检测(RSCD)旨在从双时态图像中识别表面变化,对环境保护和灾害监测等许多应用具有重要意义。在过去十年中,在人工智能浪潮的推动下,许多基于深度学习的变化检测方法应运而生并取得了重大突破。然而,这些方法**更注重视觉表征学习,而忽略了多模态数据的潜力** 。最近,**基础视觉语言模型 CLIP 为多模态人工智能提供了一种新的范式** ,在下游任务上表现出色。**顺应这一趋势,在本研究中,我们引入了 ChangeCLIP,这是一个利用来自图像-文本对的稳健语义信息的新框架,专门针对遥感变化检测(RSCD)量身定制。** 具体来说,我们重建原始 CLIP 以提取双时态特征,并提出一种新颖的**差分特征补偿模块** 来捕捉它们之间的详细语义变化。此外,我们提出了一种**视觉语言驱动的解码器** ,将图像文本编码的结果与解码阶段的视觉特征相结合,从而增强图像语义。所提出的 ChangeCLIP 在 5 个知名变化检测数据集上实现了最佳 IoU,即 LEVIR-CD(85.20%)、LEVIR-CD+(75.63%)、WHUCD(90.15%)、CDD(95.87%)和 SYSU-CD(71.41%)。ChangeCLIP 的代码和预训练模型将在<https://github.com/dyzy41/ChangeCLIP>上公开提供。
>
>
## 🐸🐸2.背景
在 RSCD 领域,Siamese 神经网络是最流行的基线(Koch,2015 年;Ou et al.,2022 年;Wang et al.,2023 年)。Siamese 神经网络采用具有两个相同子网络的并行架构,使其能够提取稳健且有判别力的特征并直接输出变化。遵循这种结构,出现了许多变化检测方法,一些方法采用卷积神经网络 (CNN)(Chen et al.,2023b;Tian et al.,2022;Zhu et al.,2022),另一些方法采用 Transformer 架构(Chen et al.,2022a;Li et al.,2022a;Liu et al.,2022b;Shi et al.,2022)。然而,**这些方法仅考虑单模态数据,即图像,而忽略了挖掘多模态数据中丰富的语义信息,因此已经存在瓶颈。为了解决这些限制,有必要探索一个基础的多模态RSCD框架。**
最近,视觉语言表征学习成为计算机视觉领域的热门研究课题,它应用深度学习模型从图像-文本对中学习表征。得益于这种模式,这种方法改进了许多多模态任务,例如图像字幕(Chen et al.,2022b)、视觉问答(Song et al.,2022a)和跨模态检索(Tang et al.,2023)。例如,Visual-BERT 模型扩展了 BERT(Devlin et al.,nd)以使用双流结构对图像和文本进行编码,并从多模态层捕获丰富的语义(Li et al.,2019)。在遥感领域,Rahhal 等人采用 Transformer 网络作为编码器来处理图像和文本描述,以实现精确的遥感图像检索(Rahhal et al.,2022)。刘等人提出了 LEVIR 变化字幕数据集,并引入了文本描述来表示遥感图像的变化区域 (Liu et al., 2022c)。特别是,**CLIP(Radford et al., 2021) 从图像文本对中进行对比学习,展示了强大的图像识别能力和显著的零样本自适应性。**
在本文中,我们**将 CLIP 引入 RSCD 任务,并提出了一个多模态变化检测框架,即ChangeCLIP** ,如图 1 所示。

## 🍌🍌3.主要贡献
本文的主要贡献如下:
提出的 ChangeCLIP 是第一项将多模态视觉语言方案应用于 RSCD 任务的研究。
我们提出了一种新颖的差分特征补偿模块来从双时图像特征中捕捉稳健的语义变化。
我们设计了一个基于变换器的多模态解码器来加强图像-文本特征对之间的语义关系。
所提出的 ChangeCLIP 在 LEVIR-CD、LEVIR-CD+、CDD、SYSU-CD 和 WHUCD 数据集中实现了最先进的性能。
## 🍉🍉4.ChangeClip网络结构
在多模态变化检测任务中,我们通常使用单一模态(主要是遥感图像)来识别变化。为了结合基于文本的提示,我们使用 CLIP 模型根据 56 种常见土地覆盖类别的分类法生成描述性提示,如表 1 所示。这些类别涵盖了遥感数据集中常见的大多数目标元素。为了方便参考,我们进一步将这 56 种类型分为更广泛的分类,如表 1 所示。

如图 1 的文本框所示,我们利用 CLIP 模型作为基础,为遥感图像的前景和背景特征设计了特定的提示。因此,这种方法可以构建一个富含多模态先验的基本数据集,用于变化检测任务。在图像编码阶段,我们构建了一个 Siamese 神经网络,从双时相遥感图像中提取图像特征。在文本编码阶段,我们应用 Transformer 网络从文本提示中提取文本特征。为了利用多模态特征学习的优势,我们在 ChangeCLIP 中有效地结合了视觉和文本特征。此外,我们提出了一种新颖的差分特征补偿 (DFC) 模块来输出语义变化。
我们的综合框架分为四个主要组件:**多模态数据、多模态编码器、差异特征补偿和视觉语言驱动解码器** 。

* 在第一个组件中,利用CLIP模型的无监督分类能力**生成遥感图像的文本提示** ,从而构建变化检测任务的多模态输入数据。
* 对于第二个组件,我们采用CLIP模型**构建图像和文本编码器** ,成为多模态RSCD任务的基础两时间点特征提取器。此外,将图像特征与文本特征整合,有效弥补传统单模态变化检测方法固有的局限性。
* 在第三部分,为了增强模型捕捉两时间点变化的能力,引入了差异特征补偿(DFC)模块。该模块采用各种计算方法进行差异特征表示,并采用特征图的加权融合,从而优化对多样的两时间点图像差异的适应性。
* 在最后的组件中,充分利用从编码阶段获得的视觉-语言特征。通过将这些视觉-语言特征与解码阶段的特征结合,设计了一个**以视觉-语言为驱动的解码器** 。
## 🔔🔔5.代码使用步骤
### 🍇5.1. 为了方便使用相对路径,我在~/.bashrc中设置了CDPATH。你可以按照下面的方式在~/.bashrc文件中加入。

按照上述方法添加CDPATH以后,你可以使用这样的方式快速定位到相应的数据路径:
import os
data_root = os.path.join(os.environ.get("CDPATH"), 'SYSU-CD')
### 🍇5.2. 我以SYSU-CD数据集为例介绍代码的使用方法,首先使用tools/general/write_path.py生成数据集路径的txt文件。格式如下(详情可查看代码)
该文件包含三个关键路径节点:首先是在时间序列中占据第一段时间片段的文件数据;其次是在时间序列中占据第二段时间片段的文件数据;最后是在标注信息中具有重要参考价值的标注文件数据
在用户的数据集中位置为 /home/user/dsj_files/CDdata/SYSU-CD/test 时间1 的图片位于 /home/user/dsj_files/CDdata/SYSU-CD/test/time1/00708.png 中 包含图片 在用户的数据集中位置为 /home/user/dsj_files/CDdata/SYSU-CD/test 时间2 的图片位于 /home/user/dsj_files/CDdata/SYSU-CD/test/time2/00708.png 中 包含图片 在用户的数据集中位置为 /home/user/dsj_files/CDdata/SYSU-CD/test 标签中的图片位于 /home/user/dsj_files/CDdata/SYSU-CD/test/label/00708.png 中 包含图片
这三个文件分别存储于以下位置:首先是在时间序列1下的图片数据;其次是在分类标签下的标注信息;最后是在目标图像的路径信息
该文件夹包含多个图像文件:
/home/user/dsj_files/CDdata/SYSU-CD/test/time1/03107.png ,
/home/user/dsj_files/CDdata/SYSU-CD/test/time2/03107.png ,
以及
/home/user/dsj_files/CDdata/SYSU-CD/test/label/03107.png 。
这些图像文件分别位于不同的子目录中:
在时间阶段
test-phase 1 和
test-phase 2 下的图像数据文件,
以及用于分类标注的图像文件。
该文件夹包含三个关键数据集路径:
- /home/user/dsj_files/CDdata/SYSU-CD/test/temporal dimension 1中的图像数据。
- /home/user/dsj_files/CDdata/SYSU-CD/test/temporal dimension 2中的图像数据。
- /home/user/dsj_files/CDdata/SYSU-CD/test/classification标签下的图像数据。
这些数据集均使用DSData存储结构组织存储节点和文件内容。
该文件夹包含三个关键数据集路径:
- /home/user/dsj_files/CDdata/SYSU-CD/test-temporal dimension 1中的图像数据。
- /home/user/dsj_files/CDdata/SYSU-CD/test-temporal dimension 2中的图像数据。
- /home/user/dsj_files/CDdata/SYSU-CD/test-classification标签下的图像数据。
这些数据集均使用DSData存储结构组织存储节点和文件内容。
该用户在特定目录下创建了时间序列数据集中的一个样本(time series data set),另一个样本(another sample)以及标签数据集中的一个样本(label data set)。
用户的本地存储中有一个名为"相关数据文件夹"的文件夹下有一个名为"SYSU-CD"的数据集, 其中包含测试目录. 测试目录中有三个重要的图片文件, 分别位于不同的时间点: 时间点一的位置有一张名为"test/time1/00026.png"的图片, 时间点二则有一张名为"test/time2/00026.png"的图片; 同时还有一个用于标注的数据标签文件, 路径为"test/label/00026.png".
/home directory username/dsj_files/cd_data/system university/cd_data/test folder/time series 1
/home directory username/dsj_files/cd_data/system university/cd_data/test folder/time series 1
/home directory username/dsj_files/cd_data/system university/cd_data/test folder/time series 2
位于用户指定目录下的特定文件夹中包含三组图像数据
这三个图像分别位于/home/user/dsj_files/CDdata/SYSU-CD/test文件夹下,并分别对应时间为time1、time2以及具有label标记的时间戳为time1的图片文件
### 🍇5.3.使用CLIP模型对SYSU-CD数据集进行推理,[GitHub - openai/CLIP: CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image](https://github.com/openai/CLIP "GitHub - openai/CLIP: CLIP \(Contrastive Language-Image Pretraining\), Predict the most relevant text snippet given an image"), 生成置信度json文件
#### 🍭1 首先需要安装CLIP项目,运行如下命令
conda install --yes -c pytorch pytorch=1.7.1 torchvision cudatoolkit=11.0
pip install ftfy regex tqdm
pip install git+https://github.com/openai/CLIP.git
#### 🍭2 然后运行以下命令
cd tools
bash clip_infer_sysu.sh
#### 🍭3 运行完成后,会生成如下的文件:
/home/user/dsj_files/CDdata/SYSU-CD/train/time1_clipcls_56_vit16.json
/home/user/dsj_files/CDdata/SYSU-CD/train/time2_clipcls_56_vit16.json
/home/user/dsj_files/CDdata/SYSU-CD/val/time1_clipcls_56_vit16.json
/home/user/dsj_files/CDdata/SYSU-CD/val/time2_clipcls_56_vit16.json
/home/user/dsj_files/CDdata/SYSU-CD/test/time1_clipcls_56_vit16.json
/home/user/dsj_files/CDdata/SYSU-CD/test/time2_clipcls_56_vit16.json
### 🍇5.4.可以查看tools/train.sh文件的内容,自行设定训练计划
### 🍇5.5.我们对训练过程的权重和log文件进行了公开. 如果你无法下载百度网盘的文件,可以给我发邮件,我会及时回复并提供其他来源的下载链接。
[ChangeCLIP_best_weights](https://pan.baidu.com/s/1JmBPzg4wRwbgIqRU9Pep5g "ChangeCLIP_best_weights"), 提取码: rscd
## **整理不易,欢迎一键三连!!!**
## **送你们一条美丽的--分割线--**
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷
