Awesome
Flood Detection Challenge
This repository contains code for our submission to the ETCI 2021 Competition on Flood Detection (Leaderboard, Homepage) (Winning Solution #2).
Accompanying paper: Flood Segmentation on Sentinel-1 SAR Imagery with Semi-Supervised Learning.
by Sayak Paul*, Siddha Ganju*.
(*) equal contribution.
<div align="center"> <img src="https://i.ibb.co/X7chPyT/pipeline.png" width=600/> </div><br>Update (May 17, 2022): Orange Business Services, France optimized our public code and made it 2.5 times faster for inference, now inference takes 1.22 seconds over a 63,000 square kilometers tile! Together with Balcony Labs, Oakland, California, an integrated solution was developed which can deliver notifications to mobile devices for early warning and disaster management and has been operationally deployed in Afghanistan, Bangladesh, Mexico, Haiti, and Ukraine. Read here
Update (May 1, 2022): NVIDIA Deep Learning Institute leveraged this code and produced a new, free, educational course called Disaster Risk Monitoring Using Satellite Imagery, where one can learn to build and deploy a deep learning model to automate the detection of floods using satellite imagery. Check it out here
Update (April 23, 2022): We got a shoutout from PyTorch.
Update (December 11, 2021): We are releasing a presentation deck, a presentation video, and a poster of our work.
Update (October 26, 2021): Our work made it to the following NeurIPS 2021 workshops: AI for Science: Mind the Gaps, Tackling Climate Change with Machine Learning, Women in ML, and Machine Learning and the Physical Sciences.
Team
Executing the code
We executed the scripts and notebooks on a Vertex AI Notebook instance. The instance has four
Tesla V100 GPUs and its base configuration is n1-standard-16
.
We use Python 3.8 and PyTorch 1.9. Apart from the requirements specified in requirements.txt
you'd need to install the following
as well to run the scripts and notebooks:
$ pip install git+https://github.com/qubvel/segmentation_models.pytorch
$ pip install git+https://github.com/lucasb-eyer/pydensecrf.git
Our scripts and notebooks make use of mixed-precision training (via torch.cuda.amp
) and distributed training (via torch.nn.parallelDistributedDataParallel
). With this combination we are able to achieve significant boosts in the overall model training time.
Execution instructions for the scripts (src
) and notebooks (notebooks
) are provided in their respective directories. Download the data from the website after agreeing to their license agreements.
Pre-trained weights
For complete reproducibility, we provide the pre-trained weights here. With these weights and the workflow depicted in the notebooks and scripts one should be able to get an IoU of ~0.76 (as per the competition leaderboard) on the test set provided at the competition.
Results
You can verify the reported results here. Just switch to "Test (Phase 2)" after clicking the link.
<div align="center"> <img src="https://i.ibb.co/q7RWwZB/image.png"/> </div>FAQ
Acknowledgements
- We are grateful to the ML-GDE program for providing GCP credits to support our experiments.
- Thanks to Charmi Chokshi, and domain experts Shubhankar Gahlot, May Casterline, Ron Hagensieker, Lucas Kruitwagen, Aranildo Rodrigues, Bertrand Le Saux, Sam Budd, Nick Leach, and, Veda Sunkara for insightful discussions.
Citation
@inproceedings{paul2021flood,
title = {Flood Segmentation on Sentinel-1 SAR Imagery with Semi-Supervised Learning},
author = {Sayak Paul and Siddha Ganju},
year = {2021},
URL = {https://arxiv.org/abs/2107.08369},
booktitle = {NeurIPS Tackling Climate Change with Machine Learning Workshop}
}