🌾 PASTIS 🌾 Panoptic Agricultural Satellite TIme Series

Overview

🌾 PASTIS 🌾 Panoptic Agricultural Satellite TIme Series (optical and radar)

The PASTIS Dataset

  • Dataset presentation

PASTIS is a benchmark dataset for panoptic and semantic segmentation of agricultural parcels from satellite time series. It contains 2,433 patches within the French metropolitan territory with panoptic annotations (instance index + semantic labelfor each pixel). Each patch is a Sentinel-2 multispectral image time series of variable lentgh.

We propose an official 5 fold split provided in the dataset's metadata, and evaluated several of the top-performing image time series networks. You are welcome to use our numbers and to submit your own entries to the leaderboard!

  • Dataset in numbers
▶️ 2,433 time series ▶️ 124,422 individual parcels ▶️ 18 crop types
▶️ 128x128 pixels / images ▶️ 38-61 acquisitions / series ▶️ 10m / pixel
▶️ 10 spectral bands ▶️ covers ~4,000 km² ▶️ over 2B pixels
  • 🔥 NEW: Radar extension (PASTIS-R)

We also propose an extended version of PASTIS which contains all radar observations of Sentinel-1 for all 2433 patches in addition to the Sentinel-2 images. For each patch, approximately 70 observations of Sentinel-1 in ascending orbit, and 70 observations in descending orbit are added to the dataset. The PASTIS-R extension can thus be used to evaluate optical-radar fusion methods for parcel-based classification, semantic segmentation, and panoptic segmentation.
For more details on PASTIS-R, refer to our recent paper on multi-modal fusion with attention-based models (link coming soon).

Usage

  • Download

The dataset can be downloaded from zenodo in different formats:

  1. PASTIS (29 GB zipped) : The original PASTIS dataset for semantic and panoptic segmentation on Sentinel-2 time series (format used for the ICCV 2021 paper). DOI
  2. PASTIS-R (54 GB zipped) : The extended version with Sentinel-1 observations. DOI
  3. PASTIS-R (pixel-set format) (27 GB zipped) : The PASTIS-R dataset prepared in pixel-set format for parcel-based classification only. See this repo and paper for more details on this format. DOI
  • Data loading

This repository also contains a PyTorch dataset class in code/dataloader.py that can be readily used to load data for training models on PASTIS and PASTIS-R. For the pixel-set dataset, use the dataloader in code/dataloader_pixelset.py. The time series contained in PASTIS have variable lengths. The code/collate.py contains a pad_collate function that you can use in the pytorch dataloader to temporally pad shorter sequences. The demo.ipynb notebook shows how to use these classes and methods to load data from PASTIS.

  • Metrics

A PyTorch implementation is also given in code/panoptic_metrics.py to compute the panoptic metrics. In order to use these metrics, the model's output should contain an instance prediction and a semantic prediction. The first one allocates an instance id to each pixel of the image, and the latter a semantic label.

Leaderboard

Please open an issue to submit new entries. Do mention if the work has been published and wether the code accessible for reproducibility. We require that at least a preprint is available to present the method used.

Semantic Segmentation

Optical only (PASTIS)

Model name #Params OA mIoU Published
U-TAE 1.1M 83.2% 63.1% ✔️ link
Unet-3d* 1.6M 81.3% 58.4% ✔️ link
Unet-ConvLSTM* 1.5M 82.1% 57.8% ✔️ link
FPN-ConvLSTM* 1.3M 81.6% 57.1% ✔️ link
Models that we re-implemented ourselves are denoted with a star (*).

Optical+Radar fusion (PASTIS-R)

Model name #Params OA mIoU Published
Late Fusion (U-TAE) + Aux + TempDrop 1.7M 84.2% 66.3% ✔️ link
Early Fusion (U-TAE) + TempDrop 1.6M 83.8% 65.9% ✔️ link

Panoptic Segmentation

Optical only (PASTIS)

Model name #Params SQ RQ PQ Published
U-TAE + PaPs 1.3M 81.3 49.2 40.4 ✔️ link

Optical+Radar fusion (PASTIS-R)

Model name #Params SQ RQ PQ Published
Early Fusion (U-TAE + PaPs) + Aux + TempDrop 1.8M 82.2 50.6 42.0 ✔️ link
Late Fusion (U-TAE + PaPs) + TempDrop 2.4M 81.6 50.5 41.6 ✔️ link

Documentation

The agricultural parcels are grouped into 18 different crop classes as shown in the table below. The backgroud class corresponds to non-agricultural land, and the void label for parcels that are mostly outside their patch. drawing

Additional information about the dataset can be found in the documentation/pastis-documentation.pdf document.

References

If you use PASTIS please cite the related paper:

@article{garnot2021panoptic,
  title={Panoptic Segmentation of Satellite Image Time Series
with Convolutional Temporal Attention Networks},
  author={Sainte Fare Garnot, Vivien  and Landrieu, Loic },
  journal={ICCV},
  year={2021}
}

For the PASTIS-R optical-radar fusion dataset, please also cite this paper:

@article{garnot2021mmfusion,
  title={Multi-Modal Temporal Attention Models for Crop Mapping from Satellite Time Series},
  author={Sainte Fare Garnot, Vivien  and Landrieu, Loic and Chehata, Nesrine },
  journal={arxiv},
  year={2021}
}

Credits

  • The satellite imagery used in PASTIS was retrieved from THEIA: "Value-added data processed by the CNES for the Theia www.theia.land.fr data cluster using Copernicus data. The treatments use algorithms developed by Theia’s Scientific Expertise Centres. "

  • The annotations used in PASTIS stem from the French land parcel identification system produced by IGN, the French mapping agency.

  • This work was partly supported by ASP, the French Payment Agency.

  • We also thank Zenodo for hosting the datasets.

Comments
  • Dataset

    Dataset

    How to make own time-series dataset for semantic segmentation? How do you generate datasets that can be used for training from satellite images and corresponding labels

    opened by long123524 7
  • Instance[ParcelID] and Semantic[Target] questions

    Instance[ParcelID] and Semantic[Target] questions

    Hi @VSainteuf , how is it going?

    I have been studying the code related in terms of training with different datasets. And one question that I have faced based on the data that you have used is about the labels created into semantic $TARGET_{}.npy$ and $ParcelIDs_{}.npy$. I have attached a figure of patch 10006:

    instance_semantic_chs_

    As you can see, in instance annotation before mapping with semantic channel 0 ($ParcelIDs_{}.npy$), we have a set IDs that isn't related with semantic annotations (in terms of background class, specially). Besides of that, in channel 2 of $TARGET_{}.npy$ we have a set of regions, related with background class, that isn't labelled as in channels 0 and 1.

    So, I would like to better understand what was the methodology applied in labelling instances ($ParcelIDs_{}.npy$) and semantic label at channel 2 ($TARGET_{}.npy$).

    Thanks a lot!

    opened by GustavoMourao 6
  • Loading dataset into RAM

    Loading dataset into RAM

    I am struggling with very low/non-existent GPU usage when trying out PSETAE on the pixel-set dataset. Because of this, I am seeing if this can be fixed by using the cache=True option to load the dataset into memory. Unfortunately this is taking a long time, >1 hour!

    Please may I check a) how good the GPU utilisation can be without preloading and b) what reasonable times one can expect it to take to load into memory?

    Thanks

    Sam

    opened by Spiruel 5
  • Bands order

    Bands order

    Hello. I want to use your dataset in my project, but first I need to know the order of the spectral bands in your data. Is the following the correct order of the 10 bands (channels) in your data? Blue, Green, Red, Red Edge 1, Red Edge 2, Red Edge 3, NIR, Red Edge 4, SWIR 1, SWIR 2

    opened by Sina-Mohammadi 2
  • Select Mono_date not work

    Select Mono_date not work

    Hi, I want only to select the particular date of images rather than a series. By setting attribute mono_date = "2018-09-02" on PASTIS_Dataset(). It raises

    Unsupported operand types(s) for -: 'dict' and 'int' error

    opened by ron8520 2
  • Data visualization

    Data visualization

    Hi, May I know how to visualize multi-spectral image (cube)? The code shows to visualize RGB images, however, if I want to show multi-band, how can I do that? Thanks in advance.

    opened by deepai-lab 2
  • Maybe there is a bug about the initialization of self.mono_date?

    Maybe there is a bug about the initialization of self.mono_date?

    Dear Vivien, Thank you so much for your generous sharing pastisR datasets, However, when I try to load the dataset, I found maybe there is a bug of the dataloader.py about self.mono_date. Beacause in the demo.ipynb, the default mono_date = None, thus there will be:

         89 self.mono_date = (
         90         datetime(*map(int, mono_date.split("-")))
    ---> 91         if "-" in mono_date
         92         else int(mono_date))
    
    TypeError: argument of type 'NoneType' is not iterable
    

    I think it's caused by your correction in #14, To fix this problem, I make a simple alteration:

    if mono_date != None:
                self.mono_date = (
                    datetime(*map(int, mono_date.split("-")))
                    if "-" in mono_date
                    else int(mono_date))
    else:
                self.mono_date = None
    

    Then it worked, my idea is not necessarily correct, just for your reference. Thank you for your sharing again! ^_^

    opened by DavidZhang88 1
  • metadata.geojson

    metadata.geojson

    PASTIS_Dataset seems to require a metadata.geojson file, however it doesn't seem to be anywhere in the repository or available for download on the zenodo page.

    https://github.com/VSainteuf/pastis-benchmark/blob/5710fe2933d21c035970b40ff261516ed760c1dd/code/dataloader.py#L105

    Could you please upload this file?

    opened by isaaccorley 1
  • Band description

    Band description

    Hi, I have a few questions on the Sentinel 2 bands. I would like to know in which order are they stored. Looking at the input bands, it looks like they are stored in order of wavelength. However, I have some doubts on the Sentinel 2 band 8 (stored at index 6, I think). Indeed, this band from Sentinel 2 is at 10 m resolution. However, on some patch time series, the band 8 has an odd aspect. I have displayed two examples : This example is a “normal” patch time series. The band at the index 6 appears at 10m resolution. In this image (each column is a different band)

    ex_6

    In the second image, the band at index 6 has an odd aspect, like it was over sampled by a KNN :

    ex_2

    I was wondering what could cause this effect. Best regards,

    opened by irisdum 0
  • What is the license of this code?

    What is the license of this code?

    Hi,

    I was just wondering what the license of this code is. I didn't find any LICENSE.md or similar in the project.

    Thanks for this wonderful benchmark dataset!

    opened by psteinb 1
  • PASTIS file's description

    PASTIS file's description

    Hi Thanks for sharing your code. Very nice code and paper. I read your paper carefully and analyzed your code. There are some files which I dont understand in the dataset. In your data loader function you are loading four different types of npy files for panoptic segmentation. Among them some files are named as ZONES_id.npy, what are these files are for. When I randomly checked one of them I found that they are very similar to instance_id.npy files. I think if you can explain a little bit more of your dataset and what data files represents what, that would be easier for serious reader and researches.

    kind regards

    opened by nazib 1
Owner
null
AgML is a comprehensive library for agricultural machine learning

AgML is a comprehensive library for agricultural machine learning. Currently, AgML provides access to a wealth of public agricultural datasets for common agricultural deep learning tasks.

Plant AI and Biophysics Lab 1 Jul 7, 2022
CLDF dataset derived from Robbeets et al.'s "Triangulation Supports Agricultural Spread" from 2021

CLDF dataset derived from Robbeets et al.'s "Triangulation Supports Agricultural Spread" from 2021 How to cite If you use these data please cite the o

Digital Linguistics 2 Dec 20, 2021
Time-series-deep-learning - Developing Deep learning LSTM, BiLSTM models, and NeuralProphet for multi-step time-series forecasting of stock price.

Stock Price Prediction Using Deep Learning Univariate Time Series Predicting stock price using historical data of a company using Neural networks for

Abdultawwab Safarji 7 Nov 27, 2022
Implementation for Panoptic-PolarNet (CVPR 2021)

Panoptic-PolarNet This is the official implementation of Panoptic-PolarNet. [ArXiv paper] Introduction Panoptic-PolarNet is a fast and robust LiDAR po

Zixiang Zhou 126 Jan 1, 2023
Pixel Consensus Voting for Panoptic Segmentation (CVPR 2020)

Implementation for Pixel Consensus Voting (CVPR 2020). This codebase contains the essential ingredients of PCV, including various spatial discretizati

Haochen 23 Oct 25, 2022
[CVPR 2021] Exemplar-Based Open-Set Panoptic Segmentation Network (EOPSN)

EOPSN: Exemplar-Based Open-Set Panoptic Segmentation Network (CVPR 2021) PyTorch implementation for EOPSN. We propose open-set panoptic segmentation t

Jaedong Hwang 49 Dec 30, 2022
[CVPR 2021] Forecasting the panoptic segmentation of future video frames

Panoptic Segmentation Forecasting Colin Graber, Grace Tsai, Michael Firman, Gabriel Brostow, Alexander Schwing - CVPR 2021 [Link to paper] We propose

Niantic Labs 44 Nov 29, 2022
A PyTorch implementation of the baseline method in Panoptic Narrative Grounding (ICCV 2021 Oral)

A PyTorch implementation of the baseline method in Panoptic Narrative Grounding (ICCV 2021 Oral)

Biomedical Computer Vision @ Uniandes 52 Dec 19, 2022
[ICRA2021] Reconstructing Interactive 3D Scene by Panoptic Mapping and CAD Model Alignment

Interactive Scene Reconstruction Project Page | Paper This repository contains the implementation of our ICRA2021 paper Reconstructing Interactive 3D

null 97 Dec 28, 2022
An unofficial personal implementation of UM-Adapt, specifically to tackle joint estimation of panoptic segmentation and depth prediction for autonomous driving datasets.

Semisupervised Multitask Learning This repository is an unofficial and slightly modified implementation of UM-Adapt[1] using PyTorch. This code primar

Abhinav Atrishi 11 Nov 25, 2022
PanopticBEV - Bird's-Eye-View Panoptic Segmentation Using Monocular Frontal View Images

Bird's-Eye-View Panoptic Segmentation Using Monocular Frontal View Images This r

null 63 Dec 16, 2022
Code and model benchmarks for "SEVIR : A Storm Event Imagery Dataset for Deep Learning Applications in Radar and Satellite Meteorology"

NeurIPS 2020 SEVIR Code for paper: SEVIR : A Storm Event Imagery Dataset for Deep Learning Applications in Radar and Satellite Meteorology Requirement

USAF - MIT Artificial Intelligence Accelerator 46 Dec 15, 2022
A large dataset of 100k Google Satellite and matching Map images, resembling pix2pix's Google Maps dataset.

Larger Google Sat2Map dataset This dataset extends the aerial ⟷ Maps dataset used in pix2pix (Isola et al., CVPR17). The provide script download_sat2m

null 34 Dec 28, 2022
Amazon Forest Computer Vision: Satellite Image tagging code using PyTorch / Keras with lots of PyTorch tricks

Amazon Forest Computer Vision Satellite Image tagging code using PyTorch / Keras Here is a sample of images we had to work with Source: https://www.ka

Mamy Ratsimbazafy 360 Dec 10, 2022
1st place solution to the Satellite Image Change Detection Challenge hosted by SenseTime

1st place solution to the Satellite Image Change Detection Challenge hosted by SenseTime

Lihe Yang 209 Jan 1, 2023
Train a deep learning net with OpenStreetMap features and satellite imagery.

DeepOSM Classify roads and features in satellite imagery, by training neural networks with OpenStreetMap (OSM) data. DeepOSM can: Download a chunk of

TrailBehind, Inc. 1.3k Nov 24, 2022
Satellite labelling tool for manual labelling of storm top features such as overshooting tops, above-anvil plumes, cold U/Vs, rings etc.

Satellite labelling tool About this app A tool for manual labelling of storm top features such as overshooting tops, above-anvil plumes, cold U/Vs, ri

Czech Hydrometeorological Institute - Satellite Department 10 Sep 14, 2022
Amazon Forest Computer Vision: Satellite Image tagging code using PyTorch / Keras with lots of PyTorch tricks

Amazon Forest Computer Vision Satellite Image tagging code using PyTorch / Keras Here is a sample of images we had to work with Source: https://www.ka

Mamy Ratsimbazafy 359 Jan 5, 2023
Multiband spectro-radiometric satellite image analysis with K-means cluster algorithm

Multi-band Spectro Radiomertric Image Analysis with K-means Cluster Algorithm Overview Multi-band Spectro Radiomertric images are images comprising of

Chibueze Henry 6 Mar 16, 2022