YAML Metadata Warning: empty or missing yaml metadata in repo card (https://huggingface.co/docs/hub/model-cards#model-card-metadata)

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 [email protected]


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