Desertification Change Detection in Mali using Siamese Networks
# Desertification Detection in Mali using Siamese Networks
## Overview
This project applies a standard Siamese Network (SN) to detect desertification in Mali using Sentinel-2 satellite imagery. The model is trained to identify land cover changes between 2020 and 2025, utilizing labeled image pairs. The primary goal is to showcase AI-based change detection capabilities within remote sensing as part of my portfolio.
## Installation
### Prerequisites
Ensure you have Python (>=3.10) installed along with the necessary dependencies.
```bash
# Clone the repository
git clone
github.com
cd desertification-mali
# Install the package and its dependencies
pip install -e .
```
This will install the project in editable mode and automatically handle dependencies defined in `setup.py`.
## Usage
### Preprocessing
First, you'll have to download Sentinel-2 images for a selected region and years (the model has been trained on 2020 & 2025 in an area around Nara, Mali, so if you're using one of my trained models and just want to do inference, you'll have to make sure you select a similar region).
Run preprocessing with:
```bash
python scripts/run_preprocessing.py
```
This is going to execute four steps:
- It will merge the tiles you have selected together using nearest neighbour resampling
- Calculate the NDVI, and store an RGB and NDVI image of both time stamps
- Create 512x512 patches from the outputs
- Augment the patches using flipping, rotating and active learning
If you're training from scratch, you'll have to label a part of these 512x512 patches to train your model.
### Training the Model
Train the Siamese Network with:
```bash
python scripts/run_training.py --epochs 50 --batch_size 16 --num_trials 2 --use_multiprocessing
```
All of these parameters on the run_training.py script are optional.
The training of this Siamese network is using random search for the setting the learning rate and the L2 regularization. I ch …