Оцифровка контуров строений с помощью нейросетей

На сайте ArcGIS Developers есть интересный пример автоматической генерации контуров строений по космическим снимкам.

Проделаем те же операции на территории России. Для этого потребуется ArcGIS Pro (минимальная версия 2.5) с модулем Image Analyst. Также, желательно наличие производительной видеокарты. Для начала работы нужно будет установить дополнительные библиотеки.

В качестве исходных информации о строениях будем использовать сервис World Imagery на территорию г. Москвы. Нужно отметить, что снимки сервиса World Imagery на территорию г. Москвы и большинства других городов мира не являются ортофотопланами. Это означает, что контура верхней части строений как правило будут смещены относительно их истинного положения на местности в ту или иную сторону. Величина смещения зависит от угла съемки и высоты здания. Для получения относительно точных контуров зданий нужно использовать ортотрансформированные снимки.

В случае Москвы задача распознавания контуров зданий несколько упрощается за счет того, что в Москве не такая плотная застройка, как в исходном примере, и много типовых зданий.

Первым этапом работ работы будет создание обучающей выборки. В качестве обучающей выборки в данном случае будет использовать полигональный слой с контурами зданий. Их можно оцифровать вручную или взять из имеющейся базы. В обучающей выборке у нас будут один класс объектов — строения. В этом слое также необходимо наличие поля (цифрового или текстового) с названием classvalue, в котором будет записано название класса.

Обучающая выборка должна быть по возможности большой и разнообразной. Если в обучающей выборке будет только определенный тип строений, нейронная сеть будет находить в основном такие строения. Чем разнообразнее выборка, тем лучше будет работать итоговая нейросеть. Также, надо понимать, что чем более разнообразные типы строений вы хотите найти с помощью нейросети, тем сложнее будет ее обучить и тем выше будет количество ошибок. Здесь нужно найти компромисс между специализацией и универсальностью. Возможно, в какие-то случаях лучше создать несколько специализированных нейросетей, обученных на определенные типы строений, чем пытаться обучить одну универсальную. В данном случае в выборку попали в основном многоэтажные жилые дома и отчасти здания в промзонах. Количество зданий в обучающей выборке — 1157.

С помощью инструмента Export Training Data for Deep Learning создаем обучающую выбору для нейросети. В качестве выходного формата метаданных обучающей выборки указываем RCNN Masks, формат растра TIFF, размер ячейки растра — 0.5 метров. Сохраняем результаты в нужную директорию.

Из доступных архитектур нейросетей выберем MaskRCNN, как в исходном примере на сайте ArcGIS Developers.

Далее выполняются циклы обучения, запуска обученной нейросети и проверки результатов. Подробности и образцы кода можно найти в исходном примере. Большой плюс библиотеки ArcGIS Python API заключается в том, что процесс создания обучающей выборки и обучения сети максимально прост и автоматизирован. Для пользователя подобраны самые распространенные архитектуры нейросетей и сделано все для максимально легкой интеграции мира Deep Learning с миром ГИС-систем.

После того, как получены более менее подходящие результаты, с помощью инструмента Detect Objects Using Deep Learning обрабатываем большой участок города Москвы с целью поиска контура зданий. Этот процесс может занять достаточно много времени, в зависимости от производительности компьютера и видеокарты. Ниже пример контуров, которые вычислила обученная нейросеть MaskRCNN.

Следующий этап — регуляризация контуров с помощью стандартного инструмента ArcGIS Pro, которые называется Regularize Building Footprints. Это инструмент придает полигонам правильные геометрические формы с прямыми линиями и углами 90 и 45 градусов. После обработки полигонов этим инструментом, получаем конечный результат.

Конечный результат вычислений можно посмотреть по ссылке.

Безусловно, эти контура требуют проверки человеком и корректировки. Но существенная часть монотонной и механической работы уже сделана. Данная модель была обучена за несколько дней. Большая часть времени ушла на создание обучающей выборки. Это не максиум того, что можно получить от данной технологии, можно увеличивать выборку, подбирать параметры, найти снимки более высокого разрешения и так далее. Этот не более чем пример, сделанный для демонстрации возможностей применения алгоритмов Deep Learning в ArcGIS.

Если вы хотите узнать больше про возможности ArcGIS в части распознавания объектов с помощью алгоритмов Deep Learning, присылайте свои вопросы по адресу: market@esri-cis.ru.