Dieses Repository enthält Skripte zum Herunterladen der im Artikel „MMEarth: Exploring Multi-Modal Pretext Tasks For Geospatial Representation Learning“ vorgestellten Daten. Die Skripte werden verwendet, um umfangreiche Satellitendaten von verschiedenen Sensoren und Satelliten (Sentinel-2, Sentinel-1, ERA5 – Temperatur und Niederschlag, Aster GDEM usw.) herunterzuladen, die wir Modalitäten nennen. Die Daten werden von Google Earth Engine heruntergeladen.
Zuletzt aktualisiert am 07.11.2024
Die MMEarth-Daten können über die folgenden Links heruntergeladen werden. Um eine einfachere Entwicklung mit multimodalen Daten zu ermöglichen, stellen wir neben den ursprünglichen MMEarth-Daten auch zwei weitere „Schnupper“-Datensätze zur Verfügung. Die Lizenz für die Daten lautet CC BY 4.0.
Datensatz | Bildgröße | Anzahl der Kacheln | Datensatzgröße | Datenverbindung | Bash-Skript |
---|---|---|---|---|---|
MMEarth | 128x128 | 1,2 Mio | 597 GB | herunterladen | bash |
MMEarth64 | 64x64 | 1,2 Mio | 152 GB | herunterladen | bash |
MMEarth100k | 128x128 | 100.000 | 48 GB | herunterladen | bash |
Alle 3 Datensätze haben eine ähnliche Struktur wie unten:
.
├── 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.
Ein Beispiel für ein Jupyter-Notebook, das ein Beispiel zum Laden der Daten mit Pytorch zeigt, finden Sie hier. Alternativ wurde der Dataloader auch zu TorchGeo hinzugefügt.
Um mit diesem Repository zu beginnen, können Sie die Abhängigkeiten und Pakete mit diesem Befehl installieren
pip install -r requirements.txt
Sobald dies erledigt ist, müssen Sie gcloud und Earthengine einrichten, damit der Code funktioniert. Befolgen Sie die folgenden Schritte:
earthengine authenticate
aus.earthengine authenticate
nicht direkt, da Sie mehrere Links zum Klicken erhalten und diese Links nicht funktionieren würden, wenn Sie sie über den Browser auf Ihrem lokalen Computer öffnen. Führen Sie daher diesen Befehl earthengine authenticate --quiet
aus. Befolgen Sie die Anweisungen auf Ihrem Terminal und alles sollte funktionieren. Ein zusätzlicher Schritt besteht darin, den Projektnamen in jede Datei einzufügen, die earthengine.initialize(project = '$PROJECT_NAME')
enthält. Dieses Repository ermöglicht das Herunterladen von Daten verschiedener Sensoren. Derzeit ist der Code zum Herunterladen der folgenden Sensoren/Modalitäten geschrieben:
Das Herunterladen der Daten erfolgt nur, wenn Sie über eine GeoJSON-Datei mit allen Kacheln verfügen, die Sie herunterladen möchten. Hier stellen Kacheln den ROI (oder Polygone) für jeden gewünschten Standort dar. Sobald Sie die Kacheln haben, werden die Datenstapel (Daten für jede Modalität) für jede Kachel im Geojson heruntergeladen. Die Daten können heruntergeladen werden, indem Sie dieser allgemeinen Struktur folgen. Jeder dieser Punkte wird im Folgenden näher erläutert:
create_tiles_polygon.py
ist die Datei, die zum Erstellen der Kacheln verwendet wird. Die entsprechende Konfiguration ist config/config_tiles.yaml
. Für eine globale Stichprobe basieren die verschiedenen Stichprobentechniken auf den Biomen und Ökoregionen aus den RESOLVE ECOREGIONS.main_download.py
ist das Hauptskript zum Herunterladen der Daten. Die entsprechende Konfiguration ist config/config_data.yaml
. Die Konfigurationsdatei enthält verschiedene Parameter, die bezüglich der verschiedenen Modalitäten und Pfade eingestellt werden können. Basierend auf der im obigen Schritt erstellten GeoJSON-Datei lädt diese Datei die Datenstapel für jede Kachel herunter.ee_utils/ee_data.py
enthält benutzerdefinierte Funktionen zum Abrufen jeder Modalität im Datenstapel von GEE. Es führt alle diese Modalitäten in einem Array zusammen und exportiert es als GeoTIFF-Datei. Die Bandinformationen und andere Kachelinformationen werden in einer JSON-Datei ( tile_info.json
) gespeichert. post_download.py
führt nacheinander vier Vorgänge aus:tile_info.json
-Dateien (diese Dateien werden beim parallelen Herunterladen mit Slurm erstellt – mehr unten erklärt)redownload.py
ist die Datei, die zum erneuten Herunterladen aller Kacheln verwendet werden kann, deren Download fehlgeschlagen ist. Manchmal kann das Skript beim Herunterladen der Datenstapel aus verschiedenen Gründen (fehlendes Sentinel-2-Referenzbild, Netzwerkprobleme, GEE-Probleme) Kacheln überspringen. Daher haben wir bei Bedarf die Möglichkeit, diese Kacheln erneut herunterzuladen. (Eine Alternative besteht darin, einfach mehr Kacheln herunterzuladen, als benötigt werden.)( HINWEIS : Die Dateien werden mithilfe von SLURM ausgeführt. Weitere Informationen hierzu finden Sie im Abschnitt Slurm-Ausführung.)
Herunterladen von Datenstapeln: GEE bietet eine Funktion namens getDownloadUrl()
, mit der Sie Bilder als GeoTIFF-Dateien exportieren können. Wir erweitern dies, indem wir alle Modalitäten für einen einzelnen Standort in einem Bild zusammenführen und dieses als einzelne GeoTIFF-Datei exportieren. Um das Herunterladen der Daten weiter zu beschleunigen, nutzen wir die Parallelverarbeitung mit SLURM. Die obigen Abbildungen geben einen Eindruck davon, wie dies geschieht. Die Kachelinformationen (Kachel GeoJSON) enthalten Standortinformationen und mehr über N Kacheln, die wir herunterladen müssen. N/40 Kacheln werden von 40 Slurm-Jobs heruntergeladen (wir legen die maximale Anzahl an Jobs auf 40 fest, da dies die maximale Anzahl gleichzeitiger Anfragen durch die GEE-API ist).
Um den Slurm-Parallel-Download auszuführen, führen Sie den folgenden Befehl aus
sbatch slurm_scripts/slurm_download_parallel.sh
Bitte zitieren Sie unser Dokument, wenn Sie diesen Code oder andere der bereitgestellten Daten verwenden.
Vishal Nedungadi, Ankit Kariryaa, Stefan Oehmcke, Serge Belongie, Christian Igel und Nico Lang (2024). MMEarth: Erkundung multimodaler Vorwandaufgaben für das Lernen der georäumlichen Darstellung.
@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}
}