Этот репозиторий содержит сценарии для загрузки данных, представленных в документе MMEarth: изучение многомодальных предтекстовых задач для обучения геопространственным представлениям. Скрипты используются для загрузки крупномасштабных спутниковых данных с различных датчиков и спутников (Sentinel-2, Sentinel-1, ERA5 - температура и осадки, Aster GDEM и т. д.), которые мы называем модальностями. Данные загружаются из Google Earth Engine.
Последнее обновление: 2024.11.07.
Данные MMEarth можно загрузить по следующим ссылкам. Чтобы упростить разработку с использованием мультимодальных данных, мы также предоставляем еще два «тестовых» набора данных вместе с исходными данными MMEarth. Лицензия на данные — CC BY 4.0.
Набор данных | Размер изображения | Количество плиток | Размер набора данных | Канал передачи данных | Баш-скрипт |
---|---|---|---|---|---|
ММЗемля | 128x128 | 1,2 млн. | 597 ГБ | скачать | бить |
MMEarth64 | 64х64 | 1,2 млн. | 152 ГБ | скачать | бить |
MMEarth100k | 128x128 | 100 тыс. | 48 ГБ | скачать | бить |
Все три набора данных имеют аналогичную структуру, как показано ниже:
.
├── 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.
Образец блокнота Jupyter, в котором показан пример загрузки данных с помощью pytorch, находится здесь. В качестве альтернативы в TorchGeo также был добавлен загрузчик данных.
Чтобы начать работу с этим репозиторием, вы можете установить зависимости и пакеты с помощью этой команды
pip install -r requirements.txt
Как только это будет сделано, вам необходимо настроить gcloud и Earthengine, чтобы код работал. Выполните следующие шаги:
earthengine authenticate
.earthengine authenticate
не работает напрямую, поскольку вы получаете несколько ссылок, на которые можно щелкнуть, и эти ссылки не будут работать при открытии их из браузера на вашем локальном компьютере. Следовательно, запустите команду earthengine authenticate --quiet
. Следуйте инструкциям на вашем терминале, и все должно работать. Дополнительным шагом является добавление имени проекта в каждый файл, содержащий earthengine.initialize(project = '$PROJECT_NAME')
. Этот репозиторий позволяет загружать данные с различных датчиков. В настоящее время написан код для загрузки следующих датчиков/модальностей:
Загрузка данных происходит только тогда, когда у вас есть файл geojson со всеми тайлами, которые вы хотите загрузить. Здесь плитки представляют рентабельность инвестиций (или многоугольники) для каждого желаемого местоположения. Когда у вас есть плитки, стеки данных (данные для каждой модальности) загружаются для каждой плитки в geojson. Данные можно загрузить, следуя этой широкой структуре, и каждый из этих пунктов подробно описан ниже:
create_tiles_polygon.py
— это файл, используемый для создания плиток. Соответствующая конфигурация — config/config_tiles.yaml
. Для глобальной выборки различные методы выборки основаны на биомах и экорегионах из RESOLVE ECOREGIONS.main_download.py
— основной скрипт для загрузки данных. Соответствующая конфигурация — config/config_data.yaml
. Файл конфигурации содержит различные параметры, которые необходимо установить для различных модальностей и путей. На основе файла geojson, созданного на предыдущем этапе, этот файл загружает стеки данных для каждого тайла.ee_utils/ee_data.py
содержит пользовательские функции для получения каждой модальности в стеке данных из GEE. Он объединяет все эти модальности в один массив и экспортирует его как файл GeoTIFF. Информация о полосе и другая информация о плитке хранится в файле json ( tile_info.json
). post_download.py
последовательно выполняет 4 операции:tile_info.json
(эти файлы создаются при параллельной загрузке с помощью slurm — подробнее описано ниже)redownload.py
— это файл, который можно использовать для повторной загрузки любых плиток, которые не удалось загрузить. Иногда при загрузке стеков данных скрипт может пропускать тайлы по разным причинам (отсутствие эталонного изображения Sentinel-2, проблемы с сетью, проблемы GEE). Следовательно, при необходимости у нас есть возможность повторно загрузить эти плитки. (Альтернатива — просто загрузить больше плиток, чем необходимо).( ПРИМЕЧАНИЕ . Файлы выполняются с использованием SLURM. Дополнительная информация об этом представлена в разделе «Выполнение Slurm»).
Загрузка стеков данных: GEE предоставляет функцию getDownloadUrl()
, которая позволяет экспортировать изображения в виде файлов GeoTIFF. Мы расширяем это, объединяя все модальности для одного места в одно изображение и экспортируя его как один файл GeoTIFF. Для дальнейшего ускорения загрузки данных мы используем параллельную обработку с помощью SLURM. Приведенные выше цифры дают представление о том, как это делается. Информация о плитке (плитка GeoJSON) содержит информацию о местоположении и дополнительную информацию о N плитках, которые нам необходимо загрузить. N/40 тайлов загружаются 40 заданиями slurm (мы установили максимальное количество заданий равным 40, поскольку это максимальное количество одновременных запросов со стороны GEE API).
Чтобы запустить параллельную загрузку slurm, выполните следующую команду
sbatch slurm_scripts/slurm_download_parallel.sh
Пожалуйста, цитируйте нашу статью, если вы используете этот код или любые предоставленные данные.
Вишал Недунгади, Анкит Карирья, Стефан Оемке, Серж Белонги, Кристиан Игель и Нико Ланг (2024). MMEarth: изучение мультимодальных предтекстовых задач для обучения геопространственным представлениям.
@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}
}