YAML Metadata Warning: empty or missing yaml metadata in repo card

Check out the documentation for more information.

CSSM

Efficient Remote Sensing Change Detection with Change State Space Models

E.Ghazaei, E.Aptoula

Faculty of Engineering and Natural Sciences (VPALab), Sabanci University, Istanbul, Turkiye

[Paper Link]

πŸ›ŽοΈUpdates

  • Notice🐍🐍: CSSM has been accepted by IEEE GRSL! We'd appreciate it if you could give this repo a ⭐️star⭐️ and stay tuned!!
  • Nov 05th, 2025: The CSSM model and training code uploaded. You are welcome to use them!!

πŸš€ Overview

  • CSSM serves as an efficient and state-of-the-art (SOTA) benchmark for binary change detection.

Screenshot from 2025-11-03 16-28-31


πŸ“¦ Requirements


pip install torch torchvision torchaudio
pip install  pillow
pip install numpy scipy pandas
pip install matplotlib seaborn
pip install einops 
pip install torchinfo

πŸ“ Dataset Preparation

This project supports three main change detection datasets:


Dataset Structure

For LEVIR-CD:

your_dataset/
β”œβ”€β”€ train/
β”‚   β”œβ”€β”€ A/          # Pre-change images
β”‚   β”œβ”€β”€ B/          # Post-change images
β”‚   └── label/      # Ground truth masks
β”œβ”€β”€ test/
β”‚   β”œβ”€β”€ A/
β”‚   β”œβ”€β”€ B/
β”‚   └── label/
└── val/
    β”œβ”€β”€ A/
    β”œβ”€β”€ B/
    └── label/

For SYSU-CD:

your_dataset/
β”œβ”€β”€ train/
β”‚   β”œβ”€β”€ time1/          # Pre-change images
β”‚   β”œβ”€β”€ time2/          # Post-change images
β”‚   └── label/      # Ground truth masks
β”œβ”€β”€ test/
β”‚   β”œβ”€β”€ time1/
β”‚   β”œβ”€β”€ time2/
β”‚   └── label/
└── val/
    β”œβ”€β”€ time1/
    β”œβ”€β”€ time2/
    └── label/

For WHU-CD:

WHU-CD/
β”œβ”€β”€ A/              # Pre-change images
β”œβ”€β”€ B/              # Post-change images
β”œβ”€β”€ label/          # Ground truth masks
β”œβ”€β”€ train_list.txt  # List of training samples
β”œβ”€β”€ test_list.txt   # List of test samples
└── val_list.txt    # List of validation samples

The text files should contain image names (one per line): image_001.png image_002.png image_003.png ...

πŸš‚ Training

LEVIR-CD Dataset

python main.py \
    --dataset levir \
    --train_path /path/to/LEVIR-CD/train \
    --test_path /path/to/LEVIR-CD/test \
    --val_path /path/to/LEVIR-CD/val \
    --batch_size 64 \
    --epochs 50 \
    --lr 0.001

SYSU-CD Dataset

python main.py \
    --dataset sysu \
    --train_path /path/to/SYSU-CD/train \
    --test_path /path/to/SYSU-CD/test \
    --val_path /path/to/SYSU-CD/val \
    --batch_size 32 \
    --epochs 100 \
    --lr 0.0001

WHU-CD Dataset

python main.py \
    --dataset whu \
    --train_path /path/to/WHU-CD \
    --train_txt /path/to/train_list.txt \
    --test_txt /path/to/test_list.txt \
    --val_txt /path/to/val_list.txt \
    --batch_size 64 \
    --epochs 50

βš™οΈ Arguments

Required Arguments

Argument Description Example
--dataset Dataset type: levir, sysu, or whu --dataset levir
--train_path Path to training data --train_path /data/train
--test_path Path to test data (not for WHU) --test_path /data/test
--val_path Path to validation data (not for WHU) --val_path /data/val

WHU-CD Specific Arguments

Argument Description Example
--train_txt Training sample list file --train_txt train_list.txt
--test_txt Test sample list file --test_txt test_list.txt
--val_txt Validation sample list file --val_txt val_list.txt

Optional Arguments

Argument Default Description
--batch_size 64 Batch size for training
--epochs 50 Number of training epochs
--lr 0.001 Learning rate
--step_size 10 Learning rate scheduler step size
--save_dir ./checkpoints Directory to save model checkpoints
--model_name best_model.pth Filename for saved model
--seed 42 Random seed for reproducibility
--num_workers 4 Number of data loading workers

πŸ”§ Advanced Usage Examples

Custom Save Directory and Model Name

python main.py \
    --dataset levir \
    --train_path /data/LEVIR-CD/train \
    --test_path /data/LEVIR-CD/test \
    --val_path /data/LEVIR-CD/val \
    --save_dir ./experiments/levir_exp1 \
    --model_name levir_model.pth \
    --epochs 100

Different Learning Rate Schedule

python main.py \
    --dataset sysu \
    --train_path /data/SYSU-CD/train \
    --test_path /data/SYSU-CD/test \
    --val_path /data/SYSU-CD/val \
    --lr 0.0005 \
    --step_size 20 \
    --epochs 150

Smaller Batch Size (for limited GPU memory)

python main.py \
    --dataset levir \
    --train_path /data/train \
    --test_path /data/test \
    --val_path /data/val \
    --batch_size 16 \
    --num_workers 2

πŸ“€ Output

During training, the script will:

  • Display training loss for each batch
  • Show validation metrics (IoU, confusion matrix) after each epoch
  • Save the best model based on validation IoU
  • Display learning rate and epoch time

Model Checkpoint

The best model is automatically saved to:

{save_dir}/{model_name}

Default: ./checkpoints/best_model.pth


πŸ” Troubleshooting

Paths with Spaces

If your paths contain spaces, wrap them in quotes:

python main.py \
    --dataset levir \
    --train_path "/path/with spaces/train" \
    --test_path "/path/with spaces/test" \
    --val_path "/path/with spaces/val"

CUDA Out of Memory

Reduce batch size:

python main.py --dataset levir ... --batch_size 16

Missing WHU Text Files

For WHU dataset, ensure all three text files are provided:

python main.py \
    --dataset whu \
    --train_path /data/WHU-CD \
    --train_txt train_list.txt \
    --test_txt test_list.txt \
    --val_txt val_list.txt

πŸ’‘ Getting Help

View all available arguments:

python main.py --help

πŸ“§ Contact

If you have any questions, please contact Elman Ghazaei at elman.ghazaei@sabanciuniv.edu


Qualitative Analysis:

Screenshot from 2025-11-03 16-38-52


Results

Screenshot from 2025-11-03 18-02-18
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Paper for ElmanGhazaei/CSSM