STANet 代码实现
LEVIR-CD是一种新型的大型遥感建筑物变化检测数据集。
Prerequisites:
windows or Linux
Python 3.6+
CPU or NVIDIA GPU
CUDA 9.0+
PyTorch > 1.0
visdom==0.1.8.1
dominate
pip install visdom==0.1.8.1
pip install dominate
数据集准备,文件路径:

数据集图片原始大小为1024x1024,我们给切成无重叠的256x256。
要确保A,B,label文件夹里图片命名是一致的。
RUN-----baseline
1.Baseline
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
报错:
from scipy.misc import imresize
ImportError: cannot import name 'imresize'
解决方法:
Imresize在scipy新版本里已经没有了。卸载当前的scipy,pip install scipy==1.0.0
一共200个epoch。我们对前100个epoch保持相同的学习速率,并在剩余的100个epoch中将其线性衰减为0。
结果:
(epoch: 200) Overall_Acc: 0.975 Mean_IoU: 0.794 0: 0.973 1: 0.614 precision_1: 0.627 recall_1: 0.967 F1_1: 0.761


TEST
val.py
更改:
Test文件夹位置;改baseline训练的名称,产生的epoch文件。

python val.py
测试集上性能:
(epoch: 152_F1_1_0.76574) Overall_Acc: 0.972 Mean_IoU: 0.803 0: 0.971 1: 0.636
precision_1: 0.657 recall_1: 0.950 F1_1: 0.777

RUN-----PAM
2.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
报错:显存不够,提示需要64G显存。val,test的图片是1024x1024,需要将val和test的数据切成256的。
训练过程中指标较好的一组:
![]()
(epoch: 116)
Overall_Acc: 0.984 Mean_IoU: 0.845 0: 0.983 1: 0.708
precision_1: 0.743 recall_1: 0.937 F1_1: 0.829
TEST
val.py
更改:Test文件夹位置;改baseline训练的名称,产生的epoch文件。
(epoch: 116_F1_1_0.82883) Overall_Acc: 0.980 Mean_IoU: 0.840 0: 0.979 1: 0.700
precision_1: 0.739 recall_1: 0.930 F1_1: 0.824
precision_1: 0.838 recall_1: 0.910 F1_1: 0.873 (论文)
结果对比:


增加了金字塔时空注意力模块PAM后,变化检测性能提升,在一定程度上可以缓解光照变化,配准误差带来的影响。
更多推荐


所有评论(0)