-
2021-10-09 17:00:09
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/
网络结构图:
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)
更多相关内容 - 我们采用
-
基于深度学习的城市高分遥感图像变化检测方法的研究.pdf
2021-08-18 20:57:55基于深度学习的城市高分遥感图像变化检测方法的研究.pdf -
论文研究-面向对象特征融合的高分辨率遥感图像变化检测方法.pdf
2019-07-22 21:35:47针对高分辨率遥感图像变化检测的难点和传统像元级变化检测方法的局限性,提出了基于面向对象的思想,利用分割后图像对象的光谱特征、纹理特征、形状特征分别进行变化检测,然后将不同对象特征检测结果进行融合得到... -
遥感图像变化检测算法
2019-01-02 09:15:19可以作为遥感图像变化检测学习的资源,有变化检测部分,有阈值分割部分 -
STANet:时空注意力神经网络(STANet)的遥感图像变化检测的正式实施
2021-05-10 16:37:55STANet用于遥感图像变化检测 它是本文的实现:一种基于时空注意力的方法和一种用于遥感影像变化检测的新数据集。 在这里,我们提供了时空注意力神经网络(STANet)的pytorch实现,用于遥感图像变化检测。 变更记录 ... -
电信设备-基于非局部小波信息的遥感图像变化检测方法.zip
2021-09-18 10:47:46电信设备-基于非局部小波信息的遥感图像变化检测方法.zip -
遥感图像变化检测算法matlab
2019-01-02 09:12:52可以作为遥感图像变化检测学习的资源,有变化检测部分,有阈值分割部分 -
基于treelet特征融合的遥感图像变化检测方法
2019-05-23 20:56:02介绍了一特别是基于treelet特征融合的遥感图像变化检测方法,内部含有MATLAB代码 -
python 遥感图像变化检测数据集的制作(深度学习),图像的裁剪
2021-01-21 17:07:09二、双时相遥感图像变化检测的标注 一般来说变化的区域是连通的,是一片一片的,因此对于图像的标注我们可以使用labelme的多边形标注进行标注 1.在conda的环境中运行 conda install labelme指令即可安装 2.运行label... -
K-Means算法实现遥感图像变化检测
2021-03-24 14:35:46K-Means算法实现遥感图像变化检测,k均值算法 -
遥感图像建筑物识别及变化检测方法
2021-03-06 01:48:07遥感图像建筑物识别及变化检测方法 -
遥感图像变化检测综述
2020-10-17 16:27:10首先简述和分析了遥感图像变化检测的基本概念,指出变化检测的本质是一类模式分类问题;然后全面回顾了现有变化检测方法,将其归纳为像素级、特征级和目标级三大类,详细论述了各种方法的基本原理和特点并对其适用... -
遥感图像变化检测经典
2021-01-28 12:30:50遥感变化检测权威论文,值得大家学习,研究,从入门的综述(全),到专业的技术,还有实现的部分MATLAB代码 遥感变化检测权威论文,值得大家学习,研究,从入门的综述(全),到专业的技术,还有实现的部分MATLAB代码 -
遥感图像变化检测MATLAB GUI实现
2014-12-06 00:31:45学习遥感相关专业必不可少的代码资源,本GUI界面设计精美,包括相关系数法、归一化法和比值法三种变化检测方法 -
遥感图像变化检测程序
2020-11-28 18:30:13vc6.0编写的变化检测的程序,简单易懂,适合初学者 vc6.0编写的变化检测的程序,简单易懂,适合初学者 vc6.0编写的变化检测的程序,简单易懂,适合初学者 vc6.0编写的变化检测的程序,简单易懂,适合初学者 -
Fcm算法实现遥感图像变化检测
2021-03-24 14:34:25实现SAR遥感图像变化检测,fcm算法,模糊c均值算法 -
【论文笔记】多时相遥感影像变化检测方法综述
2021-03-01 13:28:25本文是论文《多时相遥感影像变化检测方法综述》的阅读笔记。由于文章是中文的,强烈建议阅读原文,本文也尽可能用文章中的原话来描述问题。 一、变化检测简述 变化检测根据对同一物体或现象在不同时间的观测来确定...本文是论文《多时相遥感影像变化检测方法综述》的阅读笔记。由于文章是中文的,强烈建议阅读原文,本文也尽可能用文章中的原话来描述问题。
一、变化检测简述
变化检测根据对同一物体或现象在不同时间的观测来确定其不同的处理过程。遥感影像变化检测的研究目的是找出感兴趣的变化信息,滤除作为干扰因素的不相干的变化信息。
现有绝大多数变化检测应用中,常用的方法仍然是目视解译和人工手动勾画,需要耗费大量人力及时间,处理效率低下。变化检测的方法和理论模型有很多,如代数法、分类法、面向对象法、时间序列分析法和可视化法等。现有的检测方法没有哪一种是适合所有场景的。变化检测没有通用的流程,但主要覆盖数据预处理、变化检测方法、阈值分割、精度评定等方面。
二、变化检测的分类和发展历程
按照不同的分类标准,变化检测的分类如下图所示。在监督变化检测中先验信息可以来源于训练好的模型、GIS矢量数据等。
下图是变化检测方法发展的时间脉络图。初始发展期(20世纪80年代)主要以像元级统计方法为主;第一次高潮(20世纪90年代)主要是机器学习带来了生机;第二次高潮(2000 - 2009年)对象级变化检测引起了各种关注。伴随着高空间分辨率遥感影像的商业化,面向对象影像分析技术被引入高分辨率遥感影像分析中,变化检测的基本单元由像素逐渐过渡到对象;第三次浪潮(2010年以后)大数据和人工智能使变化检测进入新的热潮。
三、变化检测的预处理
几何配准误差是变化检测最主要的误差来源之一,因此许多变化检测方法,特别是像素级变化检测方法,都要求参与变化检测的多时相影像已完成高精度的配准;但对于不少特征级的变化检测方法,如面向对象法,由于对提取出的特性或目标进行比较时可采用顾及配准误差的缓冲区分析法,从而避免了过于苛刻的高精确配准要求。
辐射校正是预处理的另一个重要环节。不同时期的光学遥感影像,如拍摄季节与日期不同、太阳高度角不同、成像角度不同、气象条件不同等,都会造成影像辐射值不同,显著地影响变化检测结果的精度,所以通常在变化检测之前需要进行辐射校正。常用的辐射校正方法包括绝对辐射校正和相对辐射校正两种类型。绝对辐射校正需要大量的成像及其他参数,因此相对辐射校正是一种更经常采用的方法。相对辐射校正方法将一幅影像作为参考影像,调整另一幅影像的辐射特性,使之与参考影像一致。但并非所有的变化检测方法都需要辐射校正,比如分类后变化检测方法是没必要进行辐射校正的。
四、目前主流的变化检测方法
1. 传统方法
传统变化检测方法结果的精度对差异图的依赖很大,但生成差异图的过程会损失很多信息,导致检测结果精度不稳定。
2. 基于深度学习的方法
深度学习网络端对端的结构,使得我们能够直接从多时相遥感影像中获得变化检测结果。
3. 基于面向对象影像分析的方法
区别于像素级方法,对象级变化检测最重要的一个环节就是影像分割。影像对象较之单个像素包含了地物更多的整体信息,基于对象的影像分析方法更接近于人眼识别图像过程。根据变化检测策略的不同,对象级变化检测方法大致可以分为直接对象变化检测、同步分割后对象变化检测、分类后变化检测几个类型。分类后变化检测方法是比较经典的方法,对不同时相影像分别进行独立面向对象影像分类,然后再进行对象所属类别、几何形状及空间上下文信息等对比分析,获取变化区域及变化轨迹。
4. 场景变化分析方法
场景变化分析就是在语义层次分析多时相对应场景的语义类别是否发生变化以及发生了何种变化。
5. 三维变化检测方法
二维变化检测仅能检测平面上的变化,对高度上的变化则无能为力。三维变化检测方法的确定是三维数据获取的高成本及高难度,以及由于三维变化检测增加了新的数据维度,因此还将面临三维数据本身的不确定性问题。根据三维变化检测中三维信息使用的不同,三维变化检测方法大致可以分为几何信息直接比较的方法和几何信息与光谱信息相结合的方法。
6. 时间序列变化检测方法
时间序列变化检测方法主要针对长时间序列遥感影像的时间趋势分析。
7. 混合方法
混合方法是指综合运用上述方法中的两种或两种以上方法进行变化检测处理,包括两方面内容:一是在检测的不同阶段和步骤中使用不同的检测方法进行处理,即基于过程的混合方法;二是分别使用不同的变化检测方法对各自的结果进行综合分析,即基于结果的混合方法。
五、精度评价
根据变化检测的精度评估层次,可将变化检测的误差矩阵分为简单变化检测误差矩阵和分类变化检测误差
矩阵。误差矩阵和Kappa系数评价方法是最成熟、最常用的变化检测精度评估方法。目前变化检测的精度评估主要是基于像素级的,误差矩阵是最常用、最成熟的精度评估方法。六、自己的理解
说一点自己的理解。比如给定两张一年以前的卫星图像和一张一年后的卫星图像,一年前图像中的有些东西可能在一年后消失了,如被河水淹没的岛屿;也可能在一年后出现了新的东西,如新的建筑物。变化检测的目的就是找出这些发生了变化(消失或出现)的地方,并标注出来。标注图可以是一个二值图,1表示发生了变化,0表示没发生变化。
最简单的方式就是两图做差,然后取绝对值。但是这样这样有个问题,比如都是草地,在不同时间拍摄得到的像素值可能是不同的,所以两张图做差后可能只是非常接近于0。而我们要得到的是一个二值图,一个简单的方法是设置一个阈值,小于该阈值的,就认为没发生变化,即在两张图中是相同的东西。还有一个方法就是先对两张图像中的物品进行分类,比如分成草地、河流、建筑物等等,然后将得到的分类图做差。
-
基于半监督学习的遥感飞机图像检测方法
2021-01-26 09:18:18现有基于深度学习的遥感飞机图像检测方法在训练时需要大量的带标记数据集和较长的训练时间,鉴于此,提出了一种基于生成式对抗网络的半监督学习方法。采用两种粒度的深度卷积生成式对抗网络,分别提取待检测目标的边缘... -
Land_Use_Land_Coverage_Monitoring-master_图像变化检测_遥感图像变化检测_遥感变化分析_
2021-10-02 10:40:40遥感图像变化检测:1)变化向量分析方法;2)主成分分析方法。 -
遥感图像变化检测 VC++
2014-05-10 10:50:37利用VC++代码实现对遥感图像的检测分析 -
23825770Change-Detection-Code遥感影像变化检测经典算法(IR-MAD、MAD、CVA、PCA).zip
2019-08-29 20:25:05SAR图像变化检测常用的算法,其中包括有PCA算法,MAD算法,IMAD算法。 内涵数据集,附上PCA算法,MAD算法,IMAD算法处理的指标分析(均值,方差,Kappa指数,检错率,漏检率等)。亲测可用 -
FLGICM_遥感变化_检测_FLGICM_图像变化检测
2021-09-11 03:49:54用于遥感图像的变化检测。。。。。。。。。 -
基于小波融合和PCA-核模糊聚类的遥感图像变化检测
2021-02-22 12:14:52本文提出了一种变化检测方法以提高算法的鲁棒性、检测精度以及抗噪性.首先对差值法构造的差异图和比值法构造的差异图进行小波融合.然后将融合图像分成互不重叠的小块,并用主成分分析得到图像块的正交基.通过将融合... -
遥感图像变化区域的无监督压缩感知
2021-02-23 17:21:05传统的基于结构特征的遥感图像变化检测方法,易受成像稳定性的影响而误差很大.针对图像内在的稀疏性结构信息,提出基于压缩感知(CS)的遥感图像变化检测方法.通过自适应构造超完备字典将图像局部信息投影到高维空间中,... -
遥感影像变化检测算法(IR-MAD、MAD、CVA、PCA)
2018-08-07 18:08:34遥感影像场景变化检测经典算法(IR-MAD、MAD、CVA、PCA)算法集锦,包含其算法Code 和 Demo,另外,含有算法的评价函数OA、Kappa、AUC、ROC曲线,分享学习,批评指教。 -
遥感影像变化检测
2014-05-10 10:38:19该代码实现了遥感影像的变化检测功能,另外也附上了适用图片供各位进行测试。 -
多尺度分割的高分辨率遥感图像变化检测
2018-06-16 18:52:55:针对高空间分辨率的遥感影像,提出了一种基于多尺度分割的变化检测算法。采用 Mean-Shift 分割算法对 影像进行多尺度分割,构建了不同尺度上的地理对象,以不同尺度上的地理对象灰度均值构建了变化检测的多尺度 ... -
电信设备-基于内容的遥感图像变化检测信息检索方法.zip
2021-09-18 11:38:35电信设备-基于内容的遥感图像变化检测信息检索方法.zip -
基于FlowS-Unet的遥感图像建筑物变化检测
2021-02-11 20:53:51基于FlowS-Unet的遥感图像建筑物变化检测