Skip to content

Experiments on Flood Segmentation on Sentinel-1 SAR Imagery with Cyclical Pseudo Labeling and Noisy Student Training

License

Notifications You must be signed in to change notification settings

sidgan/ETCI-2021-Competition-on-Flood-Detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.


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.

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}
}