Home
Softono

Building Footprint Segmentation

Open source Apache-2.0 Python
165
Stars
34
Forks
2
Issues
3
Watchers
2 years
Last Commit

 About Building Footprint Segmentation

Building footprint segmentation from satellite and aerial imagery

Platforms

Web Self-hosted

Languages

Python

Need Help Installing Building Footprint Segmentation?

We provide expert installation service for this software. Our team will install, configure, and secure Building Footprint Segmentation on your server. plans start at just $30.

Building Footprint Segmentation

View on GitHub

Building Footprint Segmentation

Library to train building footprint on satellite and aerial imagery.

Python Contributions welcome Licence Downloads

Buy Me a Coffee at ko-fi.com

merge1

Installation

pip install building-footprint-segmentation

Dataset

Training

Visualize Training

Test images at end of every epoch
Visualizing on Tensorboard
from building_footprint_segmentation.helpers.callbacks import CallbackList, TensorBoardCallback
where_to_log_the_callback = r"path_to_log_callback"   
callbacks = CallbackList()

# Ouptut from all the callbacks caller will be stored at the path specified in log_dir
callbacks.append(TensorBoardCallback(where_to_log_the_callback))

To view Tensorboard dash board

tensorboard --logdir="path_to_log_callback"

Defining Custom Callback

from building_footprint_segmentation.helpers.callbacks import CallbackList, Callback

class CustomCallback(Callback):
    def __init__(self, log_dir):
        super().__init__(log_dir)


where_to_log_the_callback = r"path_to_log_callback"   
callbacks = CallbackList()

# Ouptut from all the callbacks caller will be stored at the path specified in log_dir
callbacks.append(CustomCallback(where_to_log_the_callback))

Split the images in smaller sample

import glob
import os

from image_fragment.fragment import ImageFragment

# FOR .jpg, .png, .jpeg
from imageio import imread, imsave

# FOR .tiff
from tifffile import imread, imsave

ORIGINAL_DIM_OF_IMAGE = (1500, 1500, 3)
CROP_TO_DIM = (384, 384, 3)

image_fragment = ImageFragment.image_fragment_3d(
    fragment_size=(384, 384, 3), org_size=ORIGINAL_DIM_OF_IMAGE
)

IMAGE_DIR = r"pth\to\input\dir"
SAVE_DIR = r"pth\to\save\dir"

for file in glob.glob(
    os.path.join(IMAGE_DIR, "*")
):
    image = imread(file)
    for i, fragment in enumerate(image_fragment):
        # GET DATA THAT BELONGS TO THE FRAGMENT
        fragmented_image = fragment.get_fragment_data(image)

        imsave(
            os.path.join(
                SAVE_DIR,
                f"{i}_{os.path.basename(file)}",
            ),
            fragmented_image,
        )

Inference

Segmentation for building footprint

  • binary
  • building with boundary (multi class segmentation)

Weight File

Refer gtkit for commonly used utility task when working with Geotiff