Классификация городских ландшафтов с помощью инструментов Deep Learning

Исходной задачей было получение карты древесной растительности Астаны, Алматы и Ташкента, а также тестирование возможностей различных нейросетевых архитектур. Все работы выполнены с помощью ArcGIS Pro.

Пример классификации ладшафтов (Land Cover) для города Астаны с использованием архитектуры Mask2Former.

Mask2Former

Ссылка на веб-карту c результатом классификации

Также была выполнена классификация снимков для г. Ташкент. Использовалась нейросеть архитектуры DeepLab.

DeepLab v2

Ссылка на веб-карту с результатом классификации

Как были получены эти результаты?

Первое, что требуется для решение этой задачи — обучающая выборка в виде тематического растра или векторного слоя. Поскольку создание качественной обучающей выборки обычно является самой трудоемкой частью процесса, было принято решение использовать в качестве основы результаты классификации, полученные с помощью готовой модели, выложенной на сайте Living Atlas. Для этого был выбран небольшой фрагмент сервиса World Imagery, далее он был классифицирован с помощью этой модели. Полученный растр содержал ошибки классификации, поэтому для того, чтобы превратить его в (относительно) качественную обучающую выборку, потребовалось ручное редактирование.

Тематический растр на базе которого будет происходить обучение нейросети.

Ручное редактирование тематического растра удобно выполнять с помощью инструментов Pixel Editor (пример в начале ролика).

После редактирования растра была сгенерирована обучающая выборка. Для этого использовался инструмент Export Training Data For Deep Learning.

В качестве входного изображения (Input Raster) для классификации  использовался сервис World Imagery Wayback (архив изображений).

Размер тайла (Tile Size) — 256 x 256 пикселей, шаг нарезки тайлов (Stride) — 128 пикселей (перекрытие 50%).

Формат тайлов (Image Format) — TIFF, можно использовать для большинства моделей

Параметр Reference System можно оставить по умолчанию (Map Space)

Формат обучающей выборки (Metadata Format) — Classified Tiles (один из самых универсальных, подходящий для большинства архитектур)

Пространственное разрешение — 0.5 метров, устанавливается в закладке Environments в параметре Cell size.

Далее полученная выборка использовалась для обучения моделей на основе разных архитектур, таких как Unet, DeepLab и некоторых архитектур проекта MMSegmentation. Обучить модель можно как с помощью ArcGIS Python API (код на языке Python), так и с помощью инструмента ArcToolbox, который называется Train Deep Learning Model.

В параметре Input Training Data нужно указать директорию с обучающей выборкой.

Параметр Max Epochs — количество эпох обучения. Когда вся обучающая выборка обрабатывается нейросетью, это считается одной эпохой. В данном случае задано 30 эпох обучения.

Параметр Model Type — архитектура нейросети. Можно попробовать разные варианты.

Параметры Model Arguments — зависят от архитектуры, но большая часть параметров стандартна для большинства архитектур.

Параметр ignore_classes — игнорировать класс 0 (пустые значения), важный параметр, если у вас в обучающей выборке присутствуют участки, которые не относятся ни к одному классу.

Подробную справку по параметрам Model Arguments можно найти в документации ArcGIS Python API.

Backbone Model — предобученная сверточная сеть (иногда  трансформер) которая используется как основной компонент модели, который кодирует и декодирует данные. Как правило, чем больше цифра в названии, тем больше параметров у этой сети. Чем больше параметров у backbone сети, тем в теории выше точность классификации, но за это приходится платить увеличением количества вычислительных операций. Может получиться так, что за счет более «тяжелой» backbone-сети точность классификации увеличится на 2%, но при этом потребуется два раза больше времени на обучение модели и классифицировать данные она будет в два раза медленнее, т.е. нужен разумный компромисс между сложностью backbone и производительностью модели.

Параметр Freeze model — если флажок установлен (значение по умолчанию), backbone model не обучается, обучается вся остальная часть нейросети. Это нормальный режим, рекомендуется оставлять флажок включенным. После того, как показатели сети перестали улучшаться, можно попробовать снять флажок и обучить уже всю модель, включая backbone. Но не факт, что это существенно улучшит результаты.

После завершения процесса обучения можно просмотреть отчет помощью инструмента Review Deep Learning Model. В отчете будет график уменьшения ошибок на обучающей (train) и контрольной (validation) выборке.

Ось Y — величина ошибки (loss), ось X — количество обработанных тайлов

А также на примеры классификации отдельных тайлов обучающей выборки. Слева обучающий образец, справа — результат классификации с помощью нейросети.

Также, в директории с обученной моделью, есть файл model_metrics.html, который можно открыть в браузере и вы увидите тот же самый отчет, который показывает инструмент Review Deep Training Model.

Следующим этапом является классификация интересующей вас территории с помощью инструмента Classify Pixels Using Deep Learning.

В качестве входного растра (Input Raster) можно использовать сервис World Imagery, хотя лучше классифицировать космические снимки высокого разрешения с ИК каналом, которого нет в сервисе.

Параметр Model Definition — путь к файлу emd или dlpk, который находится в директории сохраненной (обученной) модели.

Параметр padding — размер буферной зоны по краям тайла, которая не будет использоваться для классификации. Слишком большое значение приведет к снижению качества классификации, слишком маленькое к увеличению времени расчетов. Если не знаете, какое значение установить, оставьте значение по умолчанию.

Параметр tile_size — размер тайла, он должен быть такой же, какой использовался при обучении модели.

Полный список аргументов конкретной модели можно найти в справке.

Если вы не укажете область, которую хотите классифицировать, то по умолчанию будет классифицированы все входные данные. В случае, если вы в качестве входных данных указали сервис, то процесс классификации затянется на неопределенное время. Поэтому нужно зайти в свойства среды инструмента и указать Extent.

Также желательно установить нужное разрешение, которое не обязательно совпадает с разрешением исходных данных. Лучше всего классифицировать изображения с тем же разрешением, которое использовалось в обучающей выборке. За разрешение отвечает параметр Cell Size.

Опционально можно указать GPU в качестве основного инстурмента для вычислений. Но в последних версиях ArcGIS Pro как правило GPU используется по умолчанию, если он установлен.

 

Для начала лучше протестировать обученную модель на сравнительно небольшом фрагменте. Если качество классификации не устраивает, найти ошибки, сгенерировать дополнительную обучающую выборку, которая укажет модели как правильно классифицировать конкретные участки. Снова обучить модель уже на более полном наборе данных, протестировать результат и так далее. Можно попробовать разные параметры моделей, разные модели. Процесс может повторяться до получения нужного результата.

Для тех, кто захочет попробовать поработать с этими данными:
Исходные данные для обучения и примеры обученных моделей можно скачать по ссылке (928 Мб)

Упражнения для самостоятельного обучения:
Извлечение данных высокого разрешения почвенно-растительного покрова с помощью GeoAI
Extract informal settlements with SAMLoRA

Для работы с инструментами Deep Learning вам потребуется ArcGIS Pro (любого уровня лицензии) и модуль Image Analyst. Если у вас нет ArcGIS Pro или модуля Image Analyst, вы можете оформить демо-версию ArcGIS Pro, в которую входят все основные модули. Очень желательно наличие видеокарты с 6+ Гб видеопамяти (минимум) и процессором поддерживающим Cuda Compute Capability 5.0. Если у вас не установлены библиотеки Deep Learning для ArcGIS Pro (они по умолчанию не входят в дистрибутив), их нужно скачать и установить.

Как использовать архитектуры из набора MMSegmentation?

Например, архитектуру Mask2Former. MMSegmentation, это open source проект, с помощью которого разные архитектуры доступны в рамках общего интерфейса. Например, есть архитектура Mask2Former, которая показывает достаточно неплохие результаты (см. классификация Астаны) и использует так назывемые «трансформеры с механизмами внимания» вместо привычных сверточных сетей.  Архитектуры проекта MMSegmentation можно использовать в ArcGIS Pro, для этого не потребуется написание кода, все можно сделать с помощью графического интерфейса. Как обучить модель архитектуры Mask2Former? Откройте инструмент Train Deep Learning Model.

В качестве параметра Model Type нужно выбрать MMSegmentation. Это набор архитектур, описание которых можно найти по ссылке.

В качестве параметра model укажите mask2former.

Параметр ignore_classes лучше сделать равным 0.

Все остальное стандартно для обучения моделей с помощью этого инструмента.

Данная модель основана на трансформерах, а не на сверточных сетях, как большинство моделей, использующихся для задач компьютерного зрения.

Список архитектур проекта MMSegmentation, которые поддерживаются в текущей версии ArcGIS, можно найти в справке (пункт «supported models»).

 


Добавить комментарий