Преодоление разрыва между наблюдением за Землей и машинным обучением

Доступность данных открытого наблюдения Земли (EO) через программы Copernicus и Landsat представляет собой беспрецедентный ресурс для многих приложений EO, начиная от мониторинга землепользования и земного покрова (LULC), мониторинга урожая и прогнозирования урожайности, до борьбы со стихийными бедствиями, служб экстренной помощи и гуманитарная помощь. Учитывая большой объем данных с высоким пространственным разрешением при высокой частоте повторных посещений, требуются структуры, способные автоматически извлекать сложные шаблоны из таких пространственно-временных данных. eo-learn направлен на предоставление набора инструментов, позволяющих сделать прототипирование сложных рабочих процессов EO максимально простым, быстрым и доступным.

Итак, что такое eo-learn? eo-learn - это библиотека Python с открытым исходным кодом, которая действует как мост между наблюдением Земли / дистанционным зондированием и экосистемой Python для науки о данных и машинного обучения (ML). С одной стороны, ее цель - сделать доступ к область дистанционного зондирования для неспециалистов проще. С другой стороны, предоставить экспертам по дистанционному зондированию современные инструменты компьютерного зрения, машинного обучения и глубокого обучения, существующие в экосистеме Python.

eo-learn прост в использовании, имеет модульную конструкцию и поощряет сотрудничество - совместное использование и повторное использование определенных задач в типичном рабочем процессе извлечения значений EO, таких как облачная маскировка, совместная регистрация изображений, извлечение функций, классификация и т. Д. Все свободны использовать любые из доступных задач и рекомендуется улучшать их, разрабатывать новые и делиться ими с остальным сообществом. Библиотека распространяется под лицензией MIT, поэтому ее можно использовать, даже если они не хотят делиться. В дистанционном зондировании так много неиспользованного потенциала, что нас не слишком беспокоит конкуренция с использованием наших инструментов. Кто знает, возможно, кто-то с его помощью спасет Планету. Все выигрывают. При этом мы считаем, что в EO должно быть больше обмена, поэтому мы хотели бы, чтобы это было сделано и здесь.

В двух словах

Библиотека использует массивы NumPy и геометрию Shapely для хранения и обработки данных дистанционного зондирования. В настоящее время он доступен на нашем GitHub и скоро появится в указателе пакетов Python. Вы можете найти документацию на ReadTheDocs.

Строительными блоками eo-learn являются EOPatch, EOTask и EOWorkflow объекты. Все данные хранятся в EOPatch экземплярах, где словари хранят массивы NumPy и геометрию Shapely для зависящей от времени пространственной информации (например, полосы Sentinel-2, Landsat 8 или Sentinel-1, облачные маски и т. Д.), Пространственной информации, не зависящей от времени (например, Цифровая модель рельефа, целевые карты LULC, количество допустимых пикселей и т. Д.), А также зависящая от времени и не зависящая от времени скалярная информация (например, метки для обнаружения изменений, углы солнца и т. Д.). Экземпляр EOPatch однозначно определяется координатами ограничивающего прямоугольника и временным интервалом, к которому относятся сохраненные данные. Информация в любом формате, доступном для чтения пакетами Python, также может храниться в EOPatch объектах.

Любые операции с EOPatch экземплярами выполняются EOTask экземплярами. Задачи сгруппированы по объему и упакованы в отдельные подпакеты Python, которые в настоящее время:

  • eo-learn-core - Основной подпакет, который реализует основные строительные блоки (EOPatch, EOTask и EOWorkflow) и часто используемые функции.
  • eo-learn-io - Подпакет ввода / вывода, который занимается получением данных из Sentinel Hub services и Geopedia.
  • eo-learn-mask - Сборник задач, используемых для маскировки данных и расчета облачных масок.
  • eo-learn-features - Набор задач для извлечения свойств данных и манипулирования функциями. Примеры включают задачи для вычисления пространственно-временных функций и функций Haralick, а также задачи интерполяции.
  • eo-learn-geometry - Подпакет для обработки геометрических преобразований, таких как преобразование вектора в растр и выборка масок меток для создания обучающих наборов для методов машинного обучения.
  • eo-learn-ml-tools - Сборник служебных задач машинного обучения, полезных для настройки или проверки модели машинного обучения.
  • eo-learn-coregistration - Сборник задач, реализующих различные методы совместной регистрации изображений.

Список реализованных в настоящее время EOTask смотрите здесь. Если искомая задача еще не реализована, не волнуйтесь! Создать новый EOTask так же просто:

EOTask классы, созданные пользователями, затем могут быть добавлены в кодовую базу с помощью простого запроса на вытягивание, добавляя новые инструменты и функции, которые могут принести пользу всему сообществу.

Наконец, создается полный конвейер путем соединения задач с помощью EOWorkflow. EOWorkflow позволяет определять рабочий процесс в форме ациклического графа, где EOTask экземпляров являются вершинами графа, а EOPatch экземпляров проходят через ребра, соединяющие вершины. После определения рабочего процесса его можно запускать параллельно с различными EOPatch экземплярами ввода, что позволяет автоматически обрабатывать большие объемы пространственно-временных данных. EOWorkflow также предоставляет отчеты и журналы мониторинга выполнения, такие как входные параметры EOTask, прошедшее время, использование памяти и возникшие исключения, облегчая контроль выполнения и управление версиями полных конвейеров машинного обучения.

Ознакомьтесь с README и документацией для получения дополнительной технической информации о том, как работает eo-learn.

Примеры приложений

eo-learn был разработан для обеспечения наиболее распространенных операций по обработке пространственно-временных данных, которые позволили бы создавать полноценные приложения дистанционного зондирования. Чтобы более подробно продемонстрировать потенциал eo-learn, мы вскоре опубликуем две серии блогов о классификации землепользования и растительного покрова на уровне страны с использованием машинного обучения и о создание полного сервиса для автоматического глобального мониторинга уровня воды, как с использованием eo-learn, так и данных Copernicus. Некоторые материалы, которые помогут вам начать работу с этими вариантами использования, уже можно найти в папке examples.

Учитывая наш хорошо известный интерес к работе с временными рядами и созданию интервалов времени, в этом блоге мы делимся простым EOWorkflow для автоматической генерации интервалов времени с учетом ограничивающего прямоугольника и временного диапазона. Для создания замедленной съемки, подобной показанной ниже, требуются задачи S2L1CWCSInput, AddCloudMaskTask, SimpleFilterTask и пользовательский MakeGIFTask.

И если временной ряд подвержен проблемам ортотрансформирования, как это часто бывает с изображениями Sentinel-2, полученными до 2017 года, можно добавить RegistrationTask для оценки и компенсации несоответствия, существующего между временными рамками, как показано ниже. . Скрипт, используемый для создания этих GIF-файлов, можно найти здесь.

Сообщество

Ключевым ресурсом успеха eo-learn, конечно же, является сообщество экспертов как по дистанционному зондированию, так и по машинному обучению. Поэтому мы приглашаем всех, кто интересуется разработкой крупномасштабных приложений дистанционного зондирования, использующих пространственно-временные спутниковые изображения, попробовать eo-learn, дать нам обратную связь и, возможно, внести свой вклад. Мы приветствуем улучшения кода, новые EOTask классы и новые примеры рабочих процессов. Пользователи уже выполнили некоторые задачи, как в случае с функциями Haralick, созданными разработчиками в Magellium.

Мы постоянно улучшаем новые функции, стабильность и эффективность задач и рабочих процессов, поэтому некоторые вещи могут измениться в будущем по мере роста библиотеки. Однако в будущих выпусках мы постараемся минимизировать критические изменения, насколько это возможно. Первая бета-версия PyPI планируется через пару недель.

Мы будем демонстрировать eo-learn на Международной конференции по открытию знаний и интеллектуальному анализу данных в Лондоне 19–23 августа, поэтому, пожалуйста, зайдите, если вы планируете принять участие. Следите за нашей серией статей о землепользовании и классификации растительного покрова, а также о том, как создать комплексную услугу для глобального мониторинга уровня воды в водохранилищах и водоемах.

eo-learn является побочным продуктом европейского проекта Perceptive Sentinel. Проект получил финансирование от Программы исследований и инноваций Horizon 2020 Европейского Союза в рамках Соглашения о гранте 776115.