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 EOPatch
es, which can be read with eo-learn
The forest map is available on the eo-learn examples repository.
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.
This data set was collected with the
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.
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
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.
ExampleEOPatch
:
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.
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.
The land cover data set can be accessed here. It contains EOPatch
es with Sentinel-2 data and land cover labels for the whole region of Slovenia for the year 2017.