Awesome
Satellite Imagery Semantic Segmentation with CNN
Project Description
Predicting land cover types on remote sensing data using Convolutional Neural Networks. Experimented with U-Net and and U-Net with RestNet50 Encoder backbone architectures to segment satellite imagery.
Sample Predictions
Table of Contents
- How to Run
- Folder Structure
- Datasets
- Neural Network Architectures
- Presentation
- Report
- References
- Licensing
<a name="instructions"></a>
How to Run
- Clone this repository. Navigate to desired directory and use:
git clone git@github.com:justjoshtings/satellite_image_segmentation.git
- The Python notebook is optimized and set up for proper execution in Google Colab. I'd recommend to upload Land_Cover_Segmentation.ipynb and execute from there. Please see Folder Structure section for how to set up the initial folder structure. The Python notebook will move and create new directories to accomodate for certain preprocessing procedures but the initial setup is shown below.
- Download the data from the competition<sup>3</sup> and upload all data into Google Drive workspace based on the prior mentioned folder structure.
- Execute the Python notebook. Note that for training, it is recommended to connect to a GPU enabled runtime for faster training speeds.
<a name="structure"></a>
Folder Structure
Initial Google Drive Folder Setup for Google Colab:
satellite_image_segmentation
│ Land_Cover_Segmentation.ipynb
│
└───data
│ │ class_dict.csv
│ │ metadata.csv
│ │
│ └───test
│ │ │ 1499_sat.jpg
│ │ │ 1500_sat.jpg
│ │ │ ...
│ │
│ └───train
│ │ │ 199_sat.jpg
│ │ │ 199_mask.png
│ │ │ ...
│ │
│ └───valid
│ │ │ 1074_sat.jpg
│ │ │ 1074_sat.jpg
│ │ │ ...
<a name="datasets"></a>
Datasets
DeepGlobe Land Cover Classification Dataset from the Competition<sup>3</sup>
or Kaggle.
<a name="architectures"></a>
Neural Network Architectures
2 types of Fully Convolutional Networks<sup>4</sup> were explored with similar final results on validation and testing data.
<a name="unet"></a>
U-Net Architecture
Ronneberger et al. (2015)'s U-Net<sup>1</sup>
<a name="resnet_unet"></a>
RestNet Encoder Backbone, U-Net Decoder Architecture
<a name="report"></a>
Report
<a name="references"></a>
References
- Ronneberger et al. (2015)'s U-Net
- Neven, Robby & Goedemé, Toon. (2021). A Multi-Branch U-Net for Steel Surface Defect Type and Severity Segmentation. Metals. 11. 870. 10.3390/met11060870.
- DeepGlobe Land Cover Classification Dataset from the Competiton
@InProceedings{DeepGlobe18,
author = {Demir, Ilke and Koperski, Krzysztof and Lindenbaum, David and Pang, Guan and Huang, Jing and Basu, Saikat and Hughes, Forest and Tuia, Devis and Raskar, Ramesh},
title = {DeepGlobe 2018: A Challenge to Parse the Earth Through Satellite Images},
booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR) Workshops},
month = {June},
year = {2018}
}
<a name="license"></a>
Licensing
- The DeepGlobe Land Cover Classification Challenge and hence, the dataset are governed by DeepGlobe Rules, The DigitalGlobe's Internal Use License Agreement, and Annotation License Agreement.
- MIT License