SRDL-Net: Structure-compensated Reliable Discriminability Learning for Foggy Remote Sensing Change Detection
This repository provides the implementation of a Structure-compensated Reliable Discriminability Learning Network (SRDL-Net) for foggy remote sensing change detection.
Fog interference usually weakens structural cues of real changed regions and induces pseudo-change responses in unchanged backgrounds. To address this issue, SRDL-Net restores change discriminability by compensating fog-weakened structural cues and disentangling fog-induced pseudo-change responses during progressive change decoding.
SRDL-Net consists of the following components:
-
Structural Cue Compensation Module (SCCM)
Compensates fog-weakened structural cues through spatial semantic preservation and wavelet-domain structural modeling. -
Structural Edge Guidance (SEG)
Aggregates multi-scale structure-enhanced features to generate edge guidance for boundary-aware decoding. -
Fog-induced Pseudo-change Suppression Module (FPSM)
Suppresses fog-induced pseudo-change responses and progressively decodes reliable changed regions.
SRDL-Net/
├── network/
│ ├── SRDL-Net.py
│ ├── SCC.py
│ ├── FPS.py
│ ├── Edge.py
│ ├── cd_tools.py
│ └── backbones/
│ └── pvtv2.py
├── utils/
│ ├── dataloader.py
│ ├── metrics.py
│ └── tools.py
├── pretrained_model/
│ └── pvt_v2_b2.pth
├── figures/
│ └── framework.jpg
├── train.py
├── requirements.txt
└── README.md
git https://github.com/VisionVerse/SRDL-Net.git
cd SRDL-Net
conda create -n ournet python=3.8
conda activate ournet
pip install -r requirements.txtPlease install a PyTorch version compatible with your CUDA version. A typical environment includes:
python >= 3.10
torch >= 2.10
torchvision
numpy
opencv-python
tqdm
scikit-learn
Pillow
SRDL-Net adopts PVT-v2-B2 as the weight-sharing backbone. Please download the pretrained PVT-v2-B2 model and place it under:
./pretrained_model/pvt_v2_b2.pth
The default path is:
path = './pretrained_model/pvt_v2_b2.pth'The new foggy RSCD datasets can be obtained from the Cloud Drive [PW: RSCD].
Please organize the dataset as follows:
Foggy RSCD Dataset/
├── train/
│ ├── A/
│ ├── B/
│ └── label/
└── test/
├── A/
├── B/
└── label/
Each sample contains:
A: image at the first time pointB: image at the second time pointlabel: binary change mask
The ground-truth mask should follow:
0: unchanged
1: changed
Modify the dataset path and training configuration in train_v2.py, then run:
python train.py \
--data_name foggy-LEVIR-CD \
--epoch 200 \
--batchsize 32 \
--trainsize 256 \
--lr 1e-4 \
--edge_weight 0.1 \
--reg_weight 1e-4Main options:
--data_name dataset name
--epoch number of training epochs
--batchsize batch size
--trainsize input image size
--lr learning rate
--edge_weight weight of edge supervision
--reg_weight weight of regularization
The trained model will be saved to:
./train_output/SRDL-Net/{data_name}/
After training, run:
python test.py \
--data_name foggy-LEVIR-CD \
--model_path ./train_output/SRDL-Net/foggy-LEVIR-CD/Seg_epoch_best.pthThe predicted change maps will be saved in the configured output directory.
If you find this repository useful, please consider citing our paper:
@article{srdl2026zhou,
title={Structure-Compensated Reliable Discriminability Learning for Foggy Remote Sensing Change Detection},
author={},
journal={},
year={2026}
}