Skip to content

Experimented with a U-Net variant to perform pixel wise multi-class classification to segment high resolution satellite imagery into land use types with potential applications in deforestation and flood monitoring. Developed with TensorFlow framework.

License

Notifications You must be signed in to change notification settings

justjoshtings/satellite_image_segmentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Sample Prediction Masks

Table of Contents

  1. How to Run
  2. Folder Structure
  3. Datasets
  4. Neural Network Architectures
  5. Presentation
  6. Report
  7. References
  8. Licensing

How to Run

  1. Clone this repository. Navigate to desired directory and use:
git clone git@github.com:justjoshtings/satellite_image_segmentation.git
  1. 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.
  2. Download the data from the competition3 and upload all data into Google Drive workspace based on the prior mentioned folder structure.
  3. Execute the Python notebook. Note that for training, it is recommended to connect to a GPU enabled runtime for faster training speeds.

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
│    │    │ ...

Datasets

DeepGlobe Land Cover Classification Dataset from the Competition3

or Kaggle.

Neural Network Architectures

2 types of Fully Convolutional Networks4 were explored with similar final results on validation and testing data.

U-Net Architecture

U-Net

Ronneberger et al. (2015)'s U-Net1

RestNet Encoder Backbone, U-Net Decoder Architecture

ResNet Backbone 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.2

Report

References

  1. Ronneberger et al. (2015)'s U-Net
  2. Neven, Robby & Goedemé, Toon. (2021). A Multi-Branch U-Net for Steel Surface Defect Type and Severity Segmentation. Metals. 11. 870. 10.3390/met11060870.
  3. 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}
}
  1. Long et al. (2015)'s Fully Convolutional Network (FCN)

Licensing

About

Experimented with a U-Net variant to perform pixel wise multi-class classification to segment high resolution satellite imagery into land use types with potential applications in deforestation and flood monitoring. Developed with TensorFlow framework.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published