Ce référentiel contient des scripts pour télécharger les données présentées dans l'article MMEarth : Exploring Multi-Modal Pretext Tasks For Geospatial Representation Learning. Les scripts sont utilisés pour télécharger des données satellitaires à grande échelle provenant de différents capteurs et satellites (Sentinel-2, Sentinel-1, ERA5 - température et précipitations, Aster GDEM, etc.), que nous appelons modalités. Les données sont téléchargées depuis Google Earth Engine.
Dernière mise à jour le 2024.11.07
Les données MMEarth peuvent être téléchargées en utilisant les liens suivants. Pour permettre un développement plus facile avec des données multimodales, nous fournissons également 2 ensembles de données « de dégustation » supplémentaires ainsi que les données MMEarth originales. La licence pour les données est CC BY 4.0.
Ensemble de données | Taille de l'image | Nombre de tuiles | Taille de l'ensemble de données | Liaison de données | Script bash |
---|---|---|---|---|---|
MMTerre | 128x128 | 1,2 M | 597 Go | télécharger | frapper |
MMEarth64 | 64x64 | 1,2 M | 152 Go | télécharger | frapper |
MMTerre100k | 128x128 | 100k | 48 Go | télécharger | frapper |
Les trois ensembles de données ont une structure similaire à celle ci-dessous :
.
├── data_1M_v001/ # root data directory
│ ├── data_1M_v001.h5 # h5 file containing the data
│ ├── data_1M_v001_band_stats.json # json file containing information about the bands present in the h5 file for each data stack
│ ├── data_1M_v001_splits.json # json file containing information for train, val, test splits
│ └── data_1M_v001_tile_info.json # json file containing additional meta information of each tile that was downloaded.
Un exemple de bloc-notes Jupyter qui montre un exemple de chargement des données à l'aide de pytorch est ici. Alternativement, le chargeur de données a également été ajouté à TorchGeo.
Pour démarrer avec ce référentiel, vous pouvez installer les dépendances et les packages avec cette commande
pip install -r requirements.txt
Une fois cela fait, vous devez configurer gcloud et earthengine pour que le code fonctionne. Suivez les étapes ci-dessous :
earthengine authenticate
.earthengine authenticate
ne fonctionne pas directement car vous obtiendrez plusieurs liens sur lesquels cliquer, et ces liens ne fonctionneraient pas lorsque vous les ouvririez à partir du navigateur sur votre ordinateur local. Exécutez donc cette commande earthengine authenticate --quiet
. Suivez les instructions sur votre terminal et tout devrait fonctionner. Une étape supplémentaire consiste à ajouter le nom du projet dans chaque fichier contenant earthengine.initialize(project = '$PROJECT_NAME')
. Ce référentiel permet de télécharger les données de différents capteurs. Actuellement, le code est écrit pour télécharger les capteurs/modalités suivants :
Le téléchargement des données n'a lieu que lorsque vous disposez d'un fichier geojson avec toutes les tuiles que vous souhaitez télécharger. Ici, les tuiles représentent le retour sur investissement (ou les polygones) pour chaque emplacement souhaité. Une fois que vous avez les tuiles, les piles de données (données pour chaque modalité) sont téléchargées pour chaque tuile du geojson. Les données peuvent être téléchargées en suivant cette structure générale, et chacun de ces points est expliqué plus en détail ci-dessous :
create_tiles_polygon.py
est le fichier utilisé pour créer les tuiles. La configuration correspondante est config/config_tiles.yaml
. Pour un échantillon global, les différentes techniques d’échantillonnage s’appuient sur les biomes et écorégions des RESOLVE ECOREGIONS.main_download.py
est le script principal pour télécharger les données. La configuration correspondante est config/config_data.yaml
. Le fichier de configuration contient divers paramètres à définir concernant les différentes modalités et chemins. Basé sur le fichier geojson créé à partir de l'étape ci-dessus, ce fichier télécharge les piles de données pour chaque tuile.ee_utils/ee_data.py
contient des fonctions personnalisées permettant de récupérer chaque modalité de la pile de données depuis GEE. Il fusionne toutes ces modalités en un seul tableau et l'exporte sous forme de fichier GeoTIFF. Les informations sur la bande et d'autres informations sur les tuiles sont stockées dans un fichier json ( tile_info.json
). post_download.py
effectue 4 opérations séquentiellement :tile_info.json
(ces fichiers sont créés lors d'un téléchargement parallèle à l'aide de slurm - expliqué plus en détail ci-dessous)redownload.py
est le fichier qui peut être utilisé pour retélécharger toutes les vignettes dont le téléchargement a échoué. Parfois, lors du téléchargement des piles de données, le script peut ignorer les vignettes pour diverses raisons (manque d'image de référence Sentinel-2, problèmes de réseau, problèmes GEE). Par conséquent, si nécessaire, nous avons la possibilité de retélécharger ces vignettes. (Une alternative consiste simplement à télécharger plus de tuiles que nécessaire).( REMARQUE : les fichiers sont exécutés en utilisant SLURM. Plus d'informations à ce sujet sont fournies dans la section Exécution Slurm)
Téléchargement de piles de données : GEE fournit une fonction appelée getDownloadUrl()
qui vous permet d'exporter des images sous forme de fichiers GeoTIFF. Nous étendons cela en fusionnant toutes les modalités pour un seul emplacement en une seule image et l'exportons sous la forme d'un seul fichier GeoTIFF. Pour accélérer davantage le téléchargement des données, nous utilisons un traitement parallèle utilisant SLURM. Les chiffres ci-dessus donnent une idée de la manière dont cela est réalisé. Les informations sur les tuiles (tuile GeoJSON) contiennent des informations de localisation et plus sur les N tuiles que nous devons télécharger. Les tuiles N/40 sont téléchargées par 40 tâches slurm (nous fixons le nombre maximum de tâches à 40 car il s'agit du nombre maximum de requêtes simultanées par l'API GEE).
Pour exécuter le téléchargement parallèle slurm, exécutez la commande suivante
sbatch slurm_scripts/slurm_download_parallel.sh
Veuillez citer notre article si vous utilisez ce code ou l'une des données fournies.
Vishal Nedungadi, Ankit Kariryaa, Stefan Oehmcke, Serge Belongie, Christian Igel et Nico Lang (2024). MMEarth : Exploration des tâches de prétexte multimodales pour l'apprentissage de la représentation géospatiale.
@misc{nedungadi2024mmearth,
title={MMEarth: Exploring Multi-Modal Pretext Tasks For Geospatial Representation Learning},
author={Vishal Nedungadi and Ankit Kariryaa and Stefan Oehmcke and Serge Belongie and Christian Igel and Nico Lang},
year={2024},
eprint={2405.02771},
archivePrefix={arXiv},
primaryClass={cs.CV}
}