Semantic Segmentation of Floodwater in the Cloud to Street -Microsoft Floods Dataset

Tools Used: Python, Pytorch, Optuna, Radiant-MLhub API, Flask

Description
In this project, a custom Pytorch dataset class was created which is able to ingest both Sentinel-1 and Sentinel-2 satellite imagery from the Radiant Machine Learning Hub API. The model implemented for this project was a UNet model which detects flood water in the Sentinel-2 test dataset with an MIoU score of 0.74, after upsampling the training dataset.

The model was finally deployed with the help of Flask and the Swagger UI for accessibility and usage for new image samples.

Processes followed
1. Data download and extraction from the radiant-mlhub api
2. Basic data exploration
3. Creation of a custom pytorch dataset class(FloodDataset) to ingest either Sentinel-1 or Sentinel-2 data from the api
4. Creation of dataloaders in preparation for model training
5. UNet model implementation and training
6. Visualization of UNet model predictions
7. Evaluation metrics
8. Saving and deploying the model

Results
UNet model MIoU : 0.74
The model is able to detect areas in the image which are covered with water, seen in the image below



Kaggle notebook
Github link for model deployment