Este repositorio contiene scripts para descargar los datos presentados en el artículo MMEarth: Exploring Multi-Modal Pretext Tasks For Geospatial Representation Learning. Los scripts se utilizan para descargar datos satelitales a gran escala de diferentes sensores y satélites (Sentinel-2, Sentinel-1, ERA5 - temperatura y precipitación, Aster GDEM, etc.) a los que llamamos modalidades. Los datos se descargan de Google Earth Engine.
Última actualización el 2024.11.07
Los datos de MMEarth se pueden descargar utilizando los siguientes enlaces. Para permitir un desarrollo más sencillo con datos multimodales, también proporcionamos 2 conjuntos de datos "de prueba" más junto con los datos originales de MMEarth. La licencia para los datos es CC BY 4.0.
Conjunto de datos | Tamaño de imagen | Número de mosaicos | Tamaño del conjunto de datos | Enlace de datos | Guión de bash |
---|---|---|---|---|---|
MMTierra | 128x128 | 1,2 millones | 597GB | descargar | intento |
MMTierra64 | 64x64 | 1,2 millones | 152GB | descargar | intento |
MMTierra100k | 128x128 | 100k | 48GB | descargar | intento |
Los 3 conjuntos de datos tienen una estructura similar a la siguiente:
.
├── 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.
Aquí encontrará un ejemplo de Jupyter Notebook que muestra un ejemplo para cargar los datos usando pytorch. Alternativamente, el cargador de datos también se agregó a TorchGeo.
Para comenzar con este repositorio, puede instalar las dependencias y paquetes con este comando
pip install -r requirements.txt
Una vez hecho esto, debes configurar gcloud y Earthengine para que el código funcione. Siga los siguientes pasos:
earthengine authenticate
.earthengine authenticate
no funciona directamente ya que obtendrá varios enlaces en los que hacer clic, y estos enlaces no funcionarán al abrirlos desde el navegador de su máquina local. Por lo tanto, ejecute este comando earthengine authenticate --quiet
. Sigue las instrucciones en tu terminal y todo debería funcionar. Un paso adicional es agregar el nombre del proyecto en cada archivo que tenga earthengine.initialize(project = '$PROJECT_NAME')
. Este repositorio permite descargar datos de varios sensores. Actualmente el código está escrito para descargar los siguientes sensores/modalidades:
La descarga de datos ocurre sólo cuando tienes un archivo geojson con todos los mosaicos que deseas descargar. Aquí los mosaicos representan el ROI (o polígonos) para cada ubicación que desee. Una vez que tenga los mosaicos, las pilas de datos (datos para cada modalidad) se descargan para cada mosaico en el geojson. Los datos se pueden descargar siguiendo esta estructura amplia, y cada uno de estos puntos se explica con más detalle a continuación:
create_tiles_polygon.py
es el archivo utilizado para crear los mosaicos. La configuración correspondiente es config/config_tiles.yaml
. Para una muestra global, las diversas técnicas de muestreo se basan en los biomas y ecorregiones de RESOLVE ECOREGIONES.main_download.py
es el script principal para descargar los datos. La configuración correspondiente es config/config_data.yaml
. El archivo de configuración contiene varios parámetros que se configurarán con respecto a las diferentes modalidades y rutas. Según el archivo geojson creado en el paso anterior, este archivo descarga las pilas de datos para cada mosaico.ee_utils/ee_data.py
contiene funciones personalizadas para recuperar cada modalidad en la pila de datos de GEE. Combina todas estas modalidades en una sola matriz y la exporta como un archivo GeoTIFF. La información de la banda y otra información del mosaico se almacena en un archivo json ( tile_info.json
). post_download.py
realiza 4 operaciones secuencialmente:tile_info.json
(estos archivos se crean cuando se descargan paralelamente usando slurm; se explica con más detalle a continuación)redownload.py
es el archivo que se puede utilizar para volver a descargar cualquier mosaico que no se pudo descargar. A veces, al descargar las pilas de datos, el script puede omitir mosaicos debido a varios motivos (falta de imagen de referencia de Sentinel-2, problemas de red, problemas de GEE). Por lo tanto, si es necesario, tenemos la opción de volver a descargar estos mosaicos. (Una alternativa es simplemente descargar más mosaicos de los necesarios).( NOTA : Los archivos se ejecutan utilizando SLURM. Se proporciona más información sobre esto en la sección Ejecución de Slurm)
Descarga de pilas de datos: GEE proporciona una función llamada getDownloadUrl()
que le permite exportar imágenes como archivos GeoTIFF. Ampliamos esto fusionando todas las modalidades para una única ubicación en una imagen y exportándola como un único archivo GeoTIFF. Para acelerar aún más la descarga de datos, utilizamos el procesamiento paralelo utilizando SLURM. Las cifras anteriores dan una idea de cómo se hace esto. La información del mosaico (tile GeoJSON) contiene información de ubicación y más sobre N mosaicos que debemos descargar. N/40 mosaicos se descargan mediante 40 trabajos de slurm (establecimos el máximo de trabajos en 40, ya que este es el número máximo de solicitudes simultáneas de la API de GEE).
Para ejecutar la descarga paralela de slurm, ejecute el siguiente comando
sbatch slurm_scripts/slurm_download_parallel.sh
Cite nuestro artículo si utiliza este código o cualquiera de los datos proporcionados.
Vishal Nedungadi, Ankit Kariryaa, Stefan Oehmcke, Serge Belongie, Christian Igel y Nico Lang (2024). MMEarth: Exploración de tareas de pretexto multimodales para el aprendizaje de representación geoespacial.
@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}
}