Forest map Germany

QueryPlanet: AI meets EO

Document Contents

Overview

This public bucket collects open-source data and models developed under the QueryPlanet project funded by ESA.

The project aims at providing users with tools and data to apply machine learning in Earth observation applications.

The data is provided as EOPatches, which can be read with eo-learn

Bucket Content

The contents of this AWS S3 bucket are the following:

Forest map

The forest map is available on the eo-learn examples repository.

Forest map Germany

HIECTOR: HIErarchical object deteCTOR

The HIECTOR package is publicly available on GitHub. . There is also the end to end inference notebook which is available in the eo-learn examples repository.


Hiector logo
Hiector concept

Water segmentation data set

This data set was collected with the Water-Body Segmentation Correction campaign on the ClassificationApp.

Example EOPatch

The data set contains 7671 patches of size 64x64 with Sentinel-2 L1C images, Sentinel-1 IW images, Mapzen Digital Elevation Model and manual binary labels (1-water, 0-not water).

Information about each EOPatch is summarised in data-info as follows.

Data info head

All patches contain Sentinel-2, DEM and label data, while Sentinel-1 images are present in some patches only, depending on their acquisition date.

Sentinel-1 images are split into ascending and descending orbits.

If Sentinel-1 data is present in the EOPatch, the time difference between the Sentinel-2 acquisition date and the Sentinel-1 date is stored as datetime.timedelta.

Sentinel-1 images were added only if their acquisition date was within 5 days of the Sentinel-2 acquisition date.

Example EOPatch:
EOPatch(
     data: {
      BANDS-S2-L1C: numpy.ndarray(shape=(1, 64, 64, 13), dtype=float32)
      TRUE-COLOR-S1-IW-ASC: numpy.ndarray(shape=(1, 64, 64, 3), dtype=float32)
      TRUE-COLOR-S1-IW-DES: numpy.ndarray(shape=(1, 64, 64, 3), dtype=float32)
     }
     mask: {
      IS_DATA: numpy.ndarray(shape=(1, 64, 64, 1), dtype=bool)
      IS_DATA_S1_IW_ASC: numpy.ndarray(shape=(1, 64, 64, 1), dtype=bool)
      IS_DATA_S1_IW_DES: numpy.ndarray(shape=(1, 64, 64, 1), dtype=bool)
     }
     data_timeless: {
      DEM: numpy.ndarray(shape=(64, 64, 1), dtype=float32)
     }
     mask_timeless: {
      water_label: numpy.ndarray(shape=(64, 64, 1), dtype=uint8)
     }
     meta_info: {
      TRUE-COLOR-S1-IW-ASC: datetime.timedelta(-2, 59489)
      TRUE-COLOR-S1-IW-DES: datetime.timedelta(-2, 16767)
      maxcc: 1.0
      service_type: 'wms'
      size_x: 64
      size_y: 64
      time_difference: datetime.timedelta(1)
      time_interval: (datetime.datetime(2018, 11, 15, 0, 0), datetime.datetime(2018, 11, 16, 0, 0))
      timestamp: '2018-11-15'
     }
     bbox: BBox(((21.490423875388704, 37.91001375292825), (21.496513782211654, 37.91479352806062)), crs=EPSG:4326)
     timestamp: [datetime.datetime(2018, 11, 15, 9, 29, 51)]
    )

Given the data info, patches can be split spatially and temporally, such that patches belonging to the same water-body acquired at the same acquisition date are clustered into the same training/validation/test sub-set, therefore limiting data leakage when training and validating your model.

Water Segmentation U-net model

To get you started with deep learning, we trained a U-net model that can be used for transfer learning, or for deployment of a water segmentation algorithm using all 13 Sentinel-2 L1C bands.

You can find the TensorFlow model and info on how it was created here.

Land Cover data set

The land cover data set can be accessed here. It contains EOPatches with Sentinel-2 data and land cover labels for the whole region of Slovenia for the year 2017.

See our Land Cover Classification blog posts!