Awesome
Landslide mapping from Sentinel-2 imagery through change detection
Code repository for the paper "Landslide mapping from Sentinel-2 imagery through change detection" (accepted at IGARSS 2024)
Get started
To run code in this repository, you first have to install required libraries
pip install -r requirements.txt
Then, you have to download the S2 image dataset for each inventory by running the Jupyter Notebooks in processing/
.
To train a model, you can run train.py
specifying hyperparameters as arguments. Arguments can be given either as command line arguments (e.g. python train.py --encoder="resnet50"
) or specified in a YAML configuration file (e.g. python train.py --yaml="configs/bbunet.yaml"
), or even both. If both a YAML config and command line arguments are specified in the command, command line arguments eventually override YAML arguments. If an argument is not specified, a default value is used, as specified in src/arg_parser.py
).
To specify a pretrained backbone through the --pretrained_encoder_weights
argument, you have to manually download the corresponding "full checkpoint" from the SSL4EO-S12 repository first.
In configs/
you can find hyperparameters used to train the models reported in the paper. Thus, the experiments in the paper can be run simply by:
python train.py --yaml="configs/model.yaml"
Checkpoints
The models trained in the paper can be found at this link. The following code is used to load a model:
import torch
from argparse import Namespace
from src.model_utils import make_model
# load trained checkpoint
ckpt_path = "path/to/model.pt"
ckpt = torch.load(ckpt_path, map_location='cpu')
hparams = ckpt['hparams']
# load model architecture
model = make_model(hparams)
# load trained weights into model
model.load_state_dict(ckpt['state_dict'])