Este repositório contém scripts para baixar os dados apresentados no artigo MMEarth: Exploring Multi-Modal Pretext Tasks For Geospatial Representation Learning. Os scripts são usados para baixar dados de satélite em grande escala de diferentes sensores e satélites (Sentinel-2, Sentinel-1, ERA5 - temperatura e precipitação, Aster GDEM etc) que chamamos de modalidades. Os dados são baixados do Google Earth Engine.
Última atualização em 2024.11.07
Os dados do MMEarth podem ser baixados usando os links a seguir. Para permitir um desenvolvimento mais fácil com dados multimodais, também fornecemos mais 2 conjuntos de dados "testadores" junto com os dados MMEarth originais. A licença para os dados é CC BY 4.0.
Conjunto de dados | Tamanho da imagem | Número de peças | Tamanho do conjunto de dados | Link de dados | Script Bash |
---|---|---|---|---|---|
MMTerra | 128x128 | 1,2 milhão | 597 GB | download | festa |
MMEarth64 | 64x64 | 1,2 milhão | 152 GB | download | festa |
MMEarth100k | 128x128 | 100 mil | 48 GB | download | festa |
Todos os 3 conjuntos de dados têm uma estrutura semelhante à abaixo:
.
├── 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.
Um exemplo de Jupyter Notebook que mostra um exemplo para carregar os dados usando pytorch está aqui. Alternativamente, o dataloader também foi adicionado ao TorchGeo.
Para começar com este repositório, você pode instalar as dependências e pacotes com este comando
pip install -r requirements.txt
Feito isso, você precisa configurar o gcloud e o earthengine para fazer o código funcionar. Siga as etapas abaixo:
earthengine authenticate
.earthengine authenticate
não funciona diretamente, pois você obterá vários links para clicar, e esses links não funcionariam ao abri-los no navegador em sua máquina local. Portanto, execute este comando earthengine authenticate --quiet
. Siga as instruções do seu terminal e tudo deverá funcionar. Uma etapa adicional é adicionar o nome do projeto em cada arquivo que possui earthengine.initialize(project = '$PROJECT_NAME')
. Este repositório permite baixar dados de vários sensores. Atualmente o código está escrito para baixar os seguintes sensores/modalidades:
O download dos dados acontece somente quando você tem um arquivo geojson com todos os blocos que deseja baixar. Aqui, os blocos representam o ROI (ou polígonos) para cada local desejado. Depois de obter os blocos, as pilhas de dados (dados para cada modalidade) são baixadas para cada bloco no geojson. Os dados podem ser baixados seguindo esta estrutura ampla, e cada um desses pontos é explicado com mais detalhes abaixo:
create_tiles_polygon.py
é o arquivo usado para criar os blocos. A configuração correspondente é config/config_tiles.yaml
. Para uma amostra global, as diversas técnicas de amostragem baseiam-se nos biomas e ecorregiões do RESOLVE ECOREGIONS.main_download.py
é o script principal para baixar os dados. A configuração correspondente é config/config_data.yaml
. O arquivo de configuração contém vários parâmetros a serem definidos em relação às diferentes modalidades e caminhos. Com base no arquivo geojson criado na etapa acima, esse arquivo baixa as pilhas de dados para cada bloco.ee_utils/ee_data.py
contém funções customizadas para recuperar cada modalidade na pilha de dados do GEE. Ele mescla todas essas modalidades em um array e o exporta como um arquivo GeoTIFF. As informações da banda e outras informações do bloco são armazenadas em um arquivo json ( tile_info.json
). post_download.py
executa 4 operações sequencialmente:tile_info.json
(esses arquivos são criados durante o download paralelo usando slurm - explicado mais abaixo)redownload.py
é o arquivo que pode ser usado para baixar novamente quaisquer blocos cujo download falhou. Às vezes, ao baixar as pilhas de dados, o script pode pular blocos devido a vários motivos (falta de imagem de referência do sentinela-2, problemas de rede, problemas de GEE). Portanto, se necessário, temos a opção de baixar novamente esses blocos. (Uma alternativa é apenas baixar mais blocos do que o necessário).( NOTA : Os arquivos são executados usando SLURM. Mais informações sobre isso são fornecidas na seção Execução do Slurm)
Baixando pilhas de dados: GEE fornece uma função chamada getDownloadUrl()
que permite exportar imagens como arquivos GeoTIFF. Estendemos isso mesclando todas as modalidades de um único local em uma imagem e exportando-a como um único arquivo GeoTIFF. Para agilizar ainda mais o download dos dados, utilizamos o processamento paralelo utilizando SLURM. Os números acima dão uma ideia de como isso é feito. As informações do bloco (tile GeoJSON) contêm informações de localização e mais sobre os N blocos que precisamos baixar. N/40 blocos são baixados por 40 trabalhos slurm (definimos o máximo de trabalhos como 40, pois este é o número máximo de solicitações simultâneas pela API GEE).
Para executar o download paralelo do slurm, execute o seguinte comando
sbatch slurm_scripts/slurm_download_parallel.sh
Por favor, cite nosso artigo se você usar este código ou qualquer um dos dados fornecidos.
Vishal Nedungadi, Ankit Kariryaa, Stefan Oehmcke, Serge Belongie, Christian Igel e Nico Lang (2024). MMEarth: Explorando tarefas de pretexto multimodais para aprendizagem de representação 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}
}