Skip to main content

Semantic Segmentation ecosystem for GeoSpatial Imagery

Project description

Semantic Segmentation ecosystem for GeoSpatial imagery buildings segmentation from Imagery


  • DataSet Quality Analysis
  • Change Detection highlighter
  • Features extraction and completion

Main Features:

  • Provides several command line tools, you can combine together to build your own workflow
  • Follows geospatial standards to ease interoperability and data preparation
  • Build-in cutting edge Computer Vision model and loss implementations (and allows to replace by your owns)
  • Support either RGB or multibands imagery (as multispectral or hyperspectral)
  • Allows Data Fusion (from imagery or rasterized vectors)
  • Web-UI tools to easily display, hilight or select results
  • High performances



Config file:


  • rsp cover Generate a tiles covering, in csv format: X,Y,Z
  • rsp download Downloads tiles from a remote server (XYZ, WMS, or TMS)
  • rsp extract Extracts GeoJSON features from OpenStreetMap .pbf
  • rsp rasterize Rasterize vector features (GeoJSON or PostGIS), to raster tiles
  • rsp subset Filter images in a slippy map dir using a csv tiles cover
  • rsp tile Tile raster coverage
  • rsp train Trains a model on a dataset
  • rsp export Export a model to ONNX or Torch JIT
  • rsp predict Predict masks, from given inputs and an already trained model
  • rsp compare Compute composite images and/or metrics to compare several XYZ dirs
  • rsp vectorize Extract simplified GeoJSON features from segmentation masks

Presentations slides:


With PIP:

pip3 install                                     # For latest stable version


pip3 install git+     # For current dev version

With Conda, using a virtual env:

conda create -n robosat_pink python=3.6 && conda activate robosat_pink
pip install                                      # For latest stable version        

With Ubuntu 18.04, from scratch:

sudo sh -c "apt update && apt install -y build-essential python3-pip"
pip3 install && export PATH=$PATH:~/.local/bin
pip3 install
sudo sh -a -q --ui=none

With CentOS 7, from scratch:

sudo sh -c "yum -y update && yum install -y python36 wget && python3.6 -m ensurepip"
pip3 install --user
pip3 install --user
sudo sh -a -q --ui=none


  • Requires: Python 3.6 or later
  • GPU is not strictly mandatory, but rsp train would be -that- slower without.
  • To test install, launch in a terminal: rsp -h
  • Upon your pip PATH setting, you may have to update it: export PATH=$PATH:.local/bin
  • PyTorch release published on PyPI is binded with CUDA 9. For CUDA 10, grab a wheel from PyTorch web site, e.g pip3 install


A Minimal example

Minimal Example
  1. Configuration:
echo '

  name   = "images"
  bands = [1, 2, 3]

  title = "Building"
  color = "deeppink"

  nn = "Albunet"
  da = "Strong"
  loss = "Lovasz"
  loader = "SemSegTiles"
  metrics = ["iou"]

' > ~/.rsp_config
  1. Data Preparation:
rsp cover --bbox 4.8,45.7,4.83,45.73 --zoom 18 ds/cover
rsp download --type WMS '{xmin},{ymin},{xmax},{ymax}&FORMAT=image/jpeg' ds/cover ds/images

wget -nc -O ds/lyon_roofprint.json ',45.69,4.84,45.74&outputFormat=application/json; subtype=geojson'
rsp rasterize --type Building --geojson ds/lyon_roofprint.json --cover ds/cover ds/labels

rsp cover --dir ds/images --splits 70/20/10 ds/training/cover ds/validation/cover ds/prediction/cover
rsp subset --dir ds/images --cover ds/training/cover ds/training/images
rsp subset --dir ds/labels --cover ds/training/cover ds/training/labels
rsp subset --dir ds/images --cover ds/validation/cover ds/validation/images
rsp subset --dir ds/labels --cover ds/validation/cover ds/validation/labels
  1. Model Training and Prediction:
rsp train  --epochs 5 --lr 0.000025 --bs 4 ds ds/models
rsp subset --dir ds/images --cover ds/prediction/cover ds/prediction/images
rsp predict --checkpoint ds/models/checkpoint-00005.pth ds/prediction ds/prediction/masks
rsp compare --images ds/prediction/images ds/prediction/masks --mode side ds/prediction/compare


  • Training and validation datasets have to be tiled, using XYZ tiles format.
  • A Dataset directory, so containing XYZ tiles, can be split as:
├── training
│   ├── images
│   └── labels
└── validation
    ├── images
    └── labels
  • Tiles images formats could be any able to be read by GDAL.
  • Tiles labels are expected to be PNG with single band.
  • Tools producing XYZ tiles directory, generate also a web map client, for visual inspection.

Data Preparation

Several ways to create your own training dataset, upon input data type:

Data Preparation

NOTA: several inputs connected to a single arrow point means a logical OR (e.g. WMS or XYZ or TMS).


Stacks use cherry-picked Open Source libs among Deep Learning, Computer Vision and GIS stacks.

Related resources:


Contributions and Services:

  • Pull Requests are welcome ! Feel free to send code... Don't hesitate either to initiate a prior discussion via gitter or ticket on any implementation question. And give also a look at Makefile rules.

  • If you want to collaborate through code production and maintenance on a long term basis, please get in touch, co-edition with an ad hoc governance can be considered.

  • If you want a new feature, but don't want to implement it, DataPink provide core-dev services.

  • Expertise and training on are also provided by DataPink.

  • And if you want to support the whole project, because it means for your own business, funding is also welcome.


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date (32.4 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page