


🚨 🚨 🚨
master-precomputed-results
: The current branch is designed for users who want to replicate the results presented in the paper by running the experiments from scratch or directly generating the figures from the paper with precomputed results.
We introduce the recursive Bayesian classifier (RBC), which converts any instantaneous classifier into a robust online method through a probabilistic framework that is resilient to non-informative image variations.
This repository contains the official implementation and resources for the paper: 'Recursive Classification of Satellite Imaging Time-Series: An Application to Land Cover Mapping', published in ISPRS Journal of Photogrammetry and Remote Sensing (2024).

For users looking for a simpler version of the code, we recommend checking out the main
branch of this repository. This branch is ideal for researchers aiming for a minimal setup to run the RBC framework with:
- Their own data for experimentation, with or without labels:
- With labels: The framework computes error maps and classification accuracy by comparing the labels to the classification results.
- Without labels: The framework simply plots the classification maps.
- Our data, by downloading Version 3 of the Zenodo dataset, which contains only the images and labels necessary for running the experiments.
This branch is designed for users who want to replicate the results presented in the paper using our dataset, available in Zenodo Versions 3 and 4. Here’s how it works:
-
Zenodo Version 3:
- Contains the necessary Sentinel-2 images and data for running experiments from scratch.
-
Zenodo Version 4:
- Includes everything from Version 3, plus precomputed results. These results allow for faster reproduction of the figures and findings presented in the paper without requiring computationally expensive simulations.
This branch supports both approaches:
- Run experiments from scratch using our data from either Version 3 or 4.
- Directly regenerate paper figures by leveraging the precomputed results included in Zenodo Version 3.
Begin by completing the steps outlined in the Installation section to set up the required environment and dependencies.
Edit the configuration.py
file to customize the parameters for your specific use case. Here’s what you need to adjust:
- Set the Zenodo Path: update
Config.path_zenodo
to point to the folder where you stored the downloaded Zenodo dataset. - Download DeepWaterMap Checkpoints from DeepWaterMap GitHub Repository and set the path in
Config.path_checkpoints_deepwatermap
. - Choose the Test Site by modifying
Config.test_site
to specify which test site you want to evaluate. Example: - Look for areas in the
Config
class marked withTODO
comments to customize training or evaluation. Specify whether you want to:- Generate results again: Perform training and evaluation from scratch.
- Reproduce figures with precomputed results: Use precomputed results in Zenodo (Version 3).
Execute the main script to perform training and evaluation.
GDAL is a required dependency for this project. Follow one of these methods to install it:
-
Windows Users: Follow this guide to install GDAL with pip.
-
Anaconda Users (Windows, Linux, macOS): Follow this guide. Use the following command in the Anaconda Prompt to install GDAL:
conda install -c conda-forge gdal
-
This project requires additional Python libraries. To install them, run the following command from the repository's root directory:
pip install -r requirements.txt
-
If you encounter issues with unrecognized modules, consider installing problematic packages separately as suggested in the Installation via pip and conda section from this guide. For example:
python -m pip install -U pip python -m
pip install -U scikit-image
-
Install TensorFlow for macOS (M1/M2 chips): Follow this detailed guide. Using Miniconda is highly recommended for compatibility.
The dataset RBC-SatImg: Sentinel-2 Imagery and WatData Labels for Water Mapping is available for download from Zenodo. Version 3 of this dataset supports the replication of results presented in the paper and includes:
-
Sentinel-2 time-series imagery:
- Oroville Dam (CA, USA) and Charles River (Boston, MA, USA) for water mapping.
- Amazon Rainforest (Brazil) for deforestation detection.
-
RBC-WatData dataset:
- Manually generated water mapping labels for Oroville Dam and Charles River regions.
- Suited for multitemporal land cover and water mapping research, accounting for dynamic label evolution over time.
-
Pre-computed results for reproduction of paper figures:
- Instantaneous classification results for various methods (e.g., GMM, LR, SIC, WN, DWM).
- Posterior results using the Recursive Bayesian Classifier (RBC) framework.
- Sensitivity analysis results.
-
Amazon Rainforest imagery and labels from the MultiEarth Challenge dataset for deforestation experiments.
-
Download the dataset:
- Retrieve the dataset from the Zenodo link and extract the
.zip
file.
- Retrieve the dataset from the Zenodo link and extract the
-
Configure paths:
- Update the
path_zenodo
attribute in theConfig
class withinconfiguration.py
to point to the extracted folder location.
- Update the
-
Dataset Usage:
- Sentinel-2 imagery is used for training and evaluation.
- Pre-computed results in
./evaluation_results/
allow reproducing figures and findings in the paper without re-running computationally expensive simulations.
The paper examines three geographical regions using Sentinel-2 satellite data to test the Recursive Bayesian Classifier (RBC) framework:
- Oroville Dam, California, USA
- Focus: Water mapping of a reservoir and downstream river.
- Challenges: Seasonal water level changes, ripples, and solar angle variations that create artifacts in imagery.
- Labels: Manually generated water mapping labels were created for evaluation due to the lack of pre-existing labeled time-series data.
- Charles River Basin, Massachusetts, USA
- Focus: Water mapping of urban rivers and harbor areas.
- Challenges: Cyanobacterial blooms, reflective surfaces from buildings, and seasonal variations affecting classification accuracy.
- Labels: Manually generated water mapping labels were also created here for evaluation.
- Amazon Rainforest, Brazil
- Focus: Deforestation detection.
- Challenges: High cloud coverage and significant temporal spectral variability of vegetated and deforested areas.
- Labels: Existing deforestation labels were available from the MultiEarth Challenge dataset, removing the need for manual label generation in this case.
While the deforestation labels for the Amazon rainforest were sourced from the MultiEarth dataset, we manually generated water mapping labels for the Oroville Dam and Charles River areas. These labels are included in the publicly available Zenodo dataset to address the lack of open-source labeled data for time-series satellite analysis.
This work has been partially supported by the National Geographic Society under grant NGS-86713T-21, the National Science Foundation under Awards ECCS-1845833 and CCF-2326559, and the National Aeronautics and Space Administration under Award 80NSSC20K0742.
We welcome your contributions! Here are some ways to get involved:
- Run the RBC Framework with Your Data: Use the simpler
main
branch to test the framework with your own labeled or unlabeled datasets. - Try Your Instantaneous Classifiers: Convert your classifiers into robust recursive ones using the RBC framework, which adapts dynamically to non-informative image variations.
- Improve and Extend: Optimize the code, fix bugs, or share unique use cases.
If you do so, don't hesitate to contact us to share your results or discuss your contributions!
If you use this code or dataset in your research, please cite our paper:
@article{calatrava2024recursive,
title={Recursive classification of satellite imaging time-series: An application to land cover mapping},
author={Calatrava, Helena and Duvvuri, Bhavya and Li, Haoqing and Borsoi, Ricardo and Beighley, Edward and Erdo{\u{g}}mu{\c{s}}, Deniz and Closas, Pau and Imbiriba, Tales},
journal={ISPRS Journal of Photogrammetry and Remote Sensing},
volume={218},
pages={447--465},
year={2024},
publisher={Elsevier}
}
[1] Helena Calatrava, Bhavya Duvvuri, Haoqing Li, Ricardo Borsoi, Edward Beighley, Deniz Erdoğmuş, Pau Closas, Tales Imbiriba. "Recursive classification of satellite imaging time-series: An application to land cover mapping." ISPRS Journal of Photogrammetry and Remote Sensing, Volume 218, Pages 447-465, 2024. Publisher: Elsevier.
The open source codes of the DeepWaterMap and WaterNet algorithms, used for benchmarking, were provided by their respective authors:
[2] DeepWaterMap (see the GitHub repository), by L. F. Isikdogan, A.C. Bovik and P. Passalacqua. This algorithm for water mapping is proposed in the publications Seeing Through the Clouds With DeepWaterMap, and Surface Water Mapping by Deep Learning.
[3] WatNet (see the GitHub repository), by Xin Luo, Xiaohua Tong and Zhongwen Hu. This algorithm for water mapping is proposed in the publication An applicable and automatic method for earth surface water mapping based on multispectral images.
For inquiries regarding the code, please use the email address below:
Helena Calatrava1, Bhavya Duvvuri2, Haoqing Li1, Ricardo Borsoi3, Tales Imbiriba1,4, Edward Beighley2, Deniz Erdogmus1, Pau Closas1
1 SPIRAL (Signal Processing, Imaging, Reasoning, and Learning)
Northeastern University, Boston, MA, USA
2 The Beighley Lab (Sustainable Water Resources & Resilient Wet Infrastructure)
Northeastern University, Boston, MA, USA
3 CRAN, University of Lorraine, CNRS
Vandoeuvre-les-Nancy, F-54000, France
4 University of Massachusetts Boston (Department of Computer Science)
Boston, MA, USA