shubhamgoel27 / building_footprint_extraction

The project retrieves satellite imagery from Google and performs building footprint extraction using a U-Net.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bfss

Building Footprint Segmentation from Satellite images

1. Problem Statement

Building extraction from satellite imagery has been a labor-intensive task for many organisations. This is specially true in developing nations (like India) where high resolution satellite images are still far from reach.

This project was conducted for extracting building footprints for tire-2 cities in India where the resolution for satellite imagery varies from 50cm to 65cm. As the data is private, the same project flow has been implemented for a public database

2. Project Structure

bfss
  ├── train.py
  ├── config.py
  ├── evaluate.py
  ├── src  
  |   ├── training/
  |   ├── evaluation/
  |   ├── networks/   
  |   └── utils/
  ├── data
  |   ├── datasets/AerialImageDataset/
  |   └── test/

Data:
the data folder is not a part of this git project as it was heavy. The same can be downloaded from below link:

https://project.inria.fr/aerialimagelabeling/

3. Project Setup

To setup the virtual environment for this project do the following steps:

Step 1: cd bfss #Enter the project folder!
Step 2: conda env create -f envs/bfss.yml #create the virutal environment from the yml file provided.
Step 3: conda activate bfss #activate the virtual env.

4. Project description

The training script is train.py

The entire training configuration including the dataset path, hyper-parameters and other arguments are specified in config.py, which you can modify and experiment with. It gives a one-shot view of the entire training process.

The training can be conducted in 3 modes:

  • Training from scratch
  • Training from checkpoint
  • Fine tuning
  • Transfer Learning

Explore config.py to learn more about the parameters you can tweak.

A Notebook has been created for explaining the different training steps:
Jupyter-notebook LINK

5. Salient Features

Infinity Generator Random tile generation at run time. This enables us to explode our dataset as random tiling can (at least theoretically) generate infinite unique tiles.

Weighted Loss map My take on weighted loss map using the concept of signed distance function. Refer to code for implementation.

6. To-Do

  • Data download and EDA.
  • Basic framework for evaluating existing models
  • Complete framework with mulitple models tested
  • Pre and Post Processing techniques (on-going)
  • Transfer Learning framework
  • Model training (On-Going)
  • Conditional Random Field (CRF) for post-processing

About

The project retrieves satellite imagery from Google and performs building footprint extraction using a U-Net.

License:MIT License


Languages

Language:Python 85.0%Language:Jupyter Notebook 15.0%