STANet 基于时空自注意力的遥感图像变化检测模型

STANet 基于时空自注意力的遥感图像变化检测模型

检测数据集LEVIR-CD

环境配置

//要求:
windows or Linux
Python 3.6+
CPU or NVIDIA GPU
CUDA 9.0+
PyTorch > 1.0
visdom==0.1.8.1
dominate
  • 我们采用Linux + cuda11.0 + python=3.8,相关安装命令如下:
//创建Python虚拟环境
conda create -n STANet_3.8 python==3.8    

//激活环境
conda activate STANet_3.8
    
//安装pytorch环境
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
//查看环境安装情况
pip install ipython
#(STANet_3.8) :~$ ipython
#Python 3.8.0 (default, Nov  6 2019, 21:49:08) 
#Type 'copyright', 'credits' or 'license' for more information
#IPython 7.21.0 -- An enhanced Interactive Python. Type '?' for help.
    
#In [1]:  import torch
    
#In [2]: torch.cuda.is_available()
#Out[2]: True
//出现以上内容表明环境已经安装好啦。    
    
//安装visdom
pip install visdom==0.1.8.1 
//安装dominate
pip install dominate

我们的环境应该是配置好啦,接着下载数据集让我们准备训练吧!

代码数据集下载

代码下载链接:https://github.com/justchenhao/STANet

数据集下载:https://justchenhao.github.io/LEVIR/

网络结构图:

img

baseline运行代码

#一共200个epoch。我们对前100个epoch保持相同的学习速率,并在剩余的100个epoch中将其线性衰减为0。
python ./train.py --save_epoch_freq 1 --angle 15 --dataroot ./LEVIR-CD/train --val_dataroot ./LEVIR-CD/val --name LEVIR-CDF0 --lr 0.001 --model CDF0 --batch_size 8 --load_size 256 --crop_size 256 --preprocess rotate_and_crop
#基础训练 val.py内容
if __name__ == '__main__':
    opt = TestOptions().parse()   # get training options
    opt = make_val_opt(opt)
    opt.phase = 'val'
    opt.dataroot = './LEVIR-CD/test'
    opt.dataset_mode = 'changedetection'
    opt.n_class = 2

    #opt.SA_mode = 'PAM'
    opt.arch = 'mynet3'
    opt.model = 'CDF0'
    opt.name = 'LEVIR-CDF0'
    opt.results_dir = './results/'
    opt.epoch = '160_F1_1_0.77180'  //训练后的权重文件
    opt.num_test = np.inf

BAM运行代码

python ./train.py --save_epoch_freq 1 --angle 15 --dataroot ./LEVIR-CD/train --val_dataroot ./LEVIR-CD/val --name LEVIR-CDFA0 --lr 0.001 --model CDFA --SA_mode BAM --batch_size 8 --load_size 256 --crop_size 256 --preprocess rotate_and_crop

PAM运行代码

#增加金字塔时空注意力模块PAM
python ./train.py --save_epoch_freq 1 --angle 15 --dataroot ./LEVIR-CD/train --val_dataroot ./LEVIR-CD/val --name LEVIR-CDFAp0 --lr 0.001 --model CDFA --SA_mode PAM --batch_size 8 --load_size 256 --crop_size 256 --preprocess rotate_and_crop

测试

# 按照下面的例子修改val.py即可
if __name__ == '__main__':
    opt = TestOptions().parse()   # get training options
    opt = make_val_opt(opt)
    opt.phase = 'test'
    opt.dataroot = 'path-to-LEVIR-CD-test' # data root 
    opt.dataset_mode = 'changedetection'
    opt.n_class = 2
    opt.SA_mode = 'PAM' # BAM | PAM 
    opt.arch = 'mynet3'
    opt.model = 'CDFA' # model type
    opt.name = 'LEVIR-CDFAp0' # project name
    opt.results_dir = './results/' # save predicted images 
    opt.epoch = 'best-epoch-in-val' # which epoch to test
    opt.num_test = np.inf
    val(opt)

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
由于界面设计很大程度上与具体使用的GUI库有关,因此我们将提供一个基于Tkinter库的简单界面示例,但并不保证与您的系统环境完全兼容。以下是一个基本的GUI示例,它使用了一个按钮来选择图像和一个按钮来运行变化检测模型: ```python import tkinter as tk from tkinter import filedialog import os class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.select_button = tk.Button(self) self.select_button["text"] = "Select Image" self.select_button["command"] = self.select_file self.select_button.pack(side="top") self.detect_button = tk.Button(self) self.detect_button["text"] = "Detect Change" self.detect_button["command"] = self.detect_change self.detect_button.pack(side="bottom") def select_file(self): file_path = filedialog.askopenfilename() print(file_path) def detect_change(self): print("Change detection running...") root = tk.Tk() app = Application(master=root) app.mainloop() ``` 在这个示例中,我们使用了Tkinter提供的filedialog模块来选择图像文件。当用户点击“Select Image”按钮时,我们调用了select_file函数,该函数使用askopenfilename函数来选择文件并打印其路径。同样,当用户点击“Detect Change”按钮时,我们调用了detect_change函数,该函数打印一条消息表示变化检测正在运行。 您可以根据需要自定义GUI界面和功能。请注意,此示例仅用于演示如何在Tkinter中创建GUI,您需要根据您实际使用的GUI库进行相应更改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值