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

Кроме того, существует множество бесплатных источников с картографическими данными, например Openstreetmap и Microsoft Building Footprints. Источники данных более удобны, чем модели. Я рекомендую сначала посмотреть на них.

Метод тестирования модели

Измерение надежности

На самом деле, это боль для каждого реального проекта по отображению ML. Столько разных ландшафтов и разных провайдеров изображений... В большинстве случаев я просто подстраиваю модель под конкретный ландшафт и провайдера изображений, но если я собираюсь использовать только предварительно обученные модели — такой возможности у меня нет.

Я решил сделать одинаковый набор сэмплов для всех моделей и добавить несколько дополнительных семплов для каждой модели. Также я дам небольшое описание и расскажу, что я думаю о результатах.

Я выбрал разные направления, исходя из своего опыта. Каждый образец имеет разные типы зданий с разной архитектурой. Собственно, всего 9 образцов на весь мир — это очень мало. Но больше образцов, к сожалению, переполнит статью.

  • Балтимор, США — типичный район малоэтажной застройки в Америке.
  • Буэнос-Айрес, Аргентина — смесь плотных малоэтажных и среднеэтажных зданий.
  • Франкфурт, Германия — европейский центр средней этажности
  • Киншаса, Конго — невысокая плотная африканская застройка.
  • Минск, Беларусь — здания в советском стиле
  • Доха, Катар — малоэтажные дома в арабском стиле
  • Мумбаи, Индия — смесь высотных, среднеэтажных зданий и трущоб.
  • Далянь, Китай — современный жилой район со среднеэтажной застройкой.
  • Токио, Япония — сочетайте высотные и малоэтажные здания в центре города.

В качестве поставщика изображений я использовал Mapbox, благодаря его лицензии — изображения можно использовать бесплатно в некоммерческих целях.

Часто я буду использовать уровень масштабирования 18, что соответствует разрешению 0,6 м EPSG:3857, но модель будет иметь разрешение 0,3 м, потому что EPSG:3857 значительно искажает размеры. Но из-за того, что это наиболее часто используемая проекция в веб-картографии — я решил не перепроецировать данные.

Большинство не нанесенных на карту регионов по данным http://neis-one.org/2016/06/unmapped-places-osm/ вошли в тестовую выборку: Аравия, Китай, Индия, Африка.

Цель этой статьи не в том, чтобы оценить все доступные модели, а в том, что вам следует ожидать от общедоступных моделей. Моделей слишком много, чтобы оценить их все.

Инструмент для визуального тестирования моделей машинного обучения

Идея состоит в том, чтобы использовать прокси-сервер WMS (TMS), который возвращает тайлы с результатами вывода машинного обучения вместо тайлов аэрофотоснимков. Из-за высоких вычислительных затрат это решение не могло гладко работать в продакшене, но в целях тестирования — выглядит достаточно хорошо.

Исходники https://github.com/aliaksandr960/xyzinferenceproxy.

В качестве ГИС использую QGIS. Также есть самые основные инструменты для захвата, векторизации, упрощения.

Для моделей со значительным объемом постобработки я использовал собственный код без какой-либо адаптации.

Создание моделей обнаружения

1.Модели для дистанционного зондирования (https://github.com/bohaohuang/mrs), модель «ResNet50 UNet Inria Building».

Модель обучена на наборе данных INRIA с разрешением 30 см/пкс. Уровень масштабирования логического вывода равен 18.

Resnet50 и UNet — старые, но проверенные архитектуры. INRIA — хороший набор данных, но не имеет широкого географического распространения.

Удивительно, но даже в США модель могла работать нестабильно — на картинке выше плохие результаты, а на картинках ниже — хорошие. Еще одним сюрпризом является то, что модель плохо работает во Франкфурте и хорошо работает в Вене, несмотря на то, что здания во Франкфурте и Вене выглядят одинаково.

Итак, если вы хотите использовать модели, обратите внимание на территории и качество изображения. Если у вас похожая территория, похожий сезон, похожий инструмент с таким же разрешением — у вас больше шансов получить хороший результат. Но даже в этом случае вы можете попасть в беду.

Даже если вы хотите нанести на карту территории с хорошим качеством, есть и другие проблемы:

  • это модель семантической сегментации, а не сегментация экземпляров — близкие экземпляры часто сливаются
  • если вам нужны красивые полигоны, вам нужно найти способ упростить вывод модели, это сложно сделать только с QGIS

Но самая серьезная проблема заключается в том, что модель ненадежна для использования в глобальном масштабе или для какого-либо разнообразного набора территорий. Но это бесплатно и уже обучено — вам нужно всего пару минут, чтобы попробовать.

2. Точное полигональное картографирование зданий на спутниковых снимках (https://github.com/SarahwXU/HiSup), модель Inria_hrnet48_e5.

Модель обучена на наборе данных INRIA с разрешением 30 см/пкс. Уровень масштабирования логического вывода равен 18.

Эта модель работает более стабильно на малоэтажных зданиях в США, не очень хорошие результаты для Франкфурта, но, как ни странно, может неплохо работать в Австрии, Беларуси и Испании (изображения ниже).

Основное преимущество — этот алгоритм включает в себя хорошую постобработку и полигонизацию. Это довольно редко для общедоступных решений.

В большинстве ГИС-приложений вы не работаете напрямую с растровыми данными и не хотите выводить растр — и вам нужно создавать свои собственные решения для получения вектора из растра, но здесь проблема решается «из коробки».

И это действительно здорово! В последние несколько лет одним из основных преимуществ коммерческих решений является постобработка — полигонизация, упрощение, разделение экземпляров. Разработчики этого решения постарались сократить этот разрыв.

Код и веса стали доступны 1 августа 2022 года (эту статью я пишу 12 августа 2022 года), но другие репозитории старше — от 1 до 4 лет. Подобные решения — это реальный шаг вперед к продуктам, которые до этого были только коммерческими.

3. Семантическая сегментация спутниковых изображений Дубая с использованием глубокого обучения (https://github.com/ayushdabra/dubai-satellite-imagery-segmentation), модель Deeplab Resnet.

Модель обучена на наборе данных Дубая с разрешением около 100 см/пкс. Уровень масштабирования логического вывода равен 17.

Удивительно — у этой модели самый маленький набор данных, но она стала самой надежной во всем мире. Похоже, более низкое разрешение и разнообразные здания в наборе данных могут значительно повысить надежность. Но это, тем не менее, нельзя было считать хорошим решением для глобального использования.

Он довольно стабилен для арабских стран (рисунок ниже), таких как ОАЭ, Катар, Алжир.

Но могут быть проблемы с садами, портовыми районами и трущобами.

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

Это забавно — в некоторых случаях модель могла предсказывать здания в Восточной Европе. Так что интересно попробовать использовать модели даже в тех случаях, когда это не должно работать.

Собственно, ограничения те же, что и у моделей из репозитория «Модели для дистанционного зондирования»: нет сегментации экземпляров, нет полигонизации и модель достаточно надежна только в арабских странах.

Заключение для обнаружения здания

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

Разные модели с разными конвейерами обучения, обученные на одном и том же наборе данных, могут давать разные результаты. Если вы нашли много моделей, хорошо протестировать их все.

Если у вас нет собственных конвейеров постобработки, рекомендуется найти решение, например Точное полигональное картографирование зданий на спутниковых снимках (https://github.com/SarahwXU/HiSup) , со встроенной постобработкой (разделение экземпляров и полигонизация). В последние годы подобные решения стали появляться в открытом доступе.

Другие объекты

1. Сегментация дорог — «Модели для дистанционного зондирования» (https://github.com/bohaohuang/mrs), модель «ResNet34 DLinkNet DeepGlobe Road».

Модель обучена на наборе данных DeepGlobe Challenge с разрешением 30 см/пиксель. Уровень масштабирования логического вывода равен 18.

Resnet34 — хорошая основа для несложной задачи машинного обучения, DLinkNet — архитектура-победитель в вызове DeepGlobe Roads. К сожалению, решение win написано с использованием Python 2.7, поэтому я использовал модель из репозитория «mrs».

Та же проблема, что и с предыдущими моделями — решение недостаточно надежное для глобального использования. Но иногда работает хорошо.

FactSeg: семантическая сегментация малых объектов, управляемая активацией переднего плана, в крупномасштабных изображениях дистанционного зондирования (https://github.com/Junjue-Wang/FactSeg), модель набора данных iSAID.

FactSeg выглядит как еще одна итерация сетей кодер-декодер. Автор утверждает, что он лучше известного UNet.

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

Поскольку большинство этих объектов редки, я буду тестировать модель только на автомобилях, резервуарах для хранения и самолетах.

Для самолетов и резервуаров для хранения я собрал отдельные изображения из тех же городов.

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

2. Автомобили

Модель обучена на наборе данных iSaid с разрешением 30 см/пкс. Уровень масштабирования логического вывода равен 18.

Отдельные автомобили обнаруживаются плохо, но во многих случаях вы не потеряете скопления автомобилей.

3. Гражданские самолеты

Модель обучена на наборе данных iSaid с разрешением 30 см/пкс. Уровень масштабирования логического вывода равен 19.

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

Гражданские самолеты в аэропортах выглядят гораздо более одинаково, чем здания и дороги — проще сделать надежное решение.

4. Резервуары для хранения

Модель обучена на наборе данных iSaid с разрешением 30 см/пкс. Уровень масштабирования логического вывода равен 18.

Только один плохой результат во всей выборке. С некоторыми танками бывают сложности, но в большинстве случаев модель работает неплохо. Похоже на готовое решение.

Кроме того, могут быть большие различия в выводах с разными уровнями масштабирования, поэтому важно настроить его оптимальным образом.

Заключение

К сожалению, я думаю, что в настоящее время (август 2022 года) работа с общедоступными моделями для обнаружения зданий очень непредсказуема — вы можете сэкономить большое количество времени и большие деньги, потратив всего пару часов, но во многих случаях вам нужно будет разработать собственное решение или использовать коммерческое. Я не нашел ни одной модели, которая хорошо работает во всем мире.

Но гораздо перспективнее выглядят модели для обнаружения таких объектов, как автомобили, самолеты, резервуары для хранения. Есть несколько причин:

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

Спасибо Робину, Кариму и Александре за отзыв о черновике статьи. Спасибо компании GeoAlert LLC, моему нынешнему работодателю, за поддержку некоммерческой деятельности.

И не забывайте — если вы попытаетесь воспроизвести результаты с изображениями Mapbox, ваше решение должно соответствовать их лицензии https://docs.mapbox.com/help/getting-started/attribution/