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