Городское картирование: 54+ миллиона зданий по всей России

Мы реализовали 0.0.1 версию нашего пока что самого амбициозного проекта по применению нейросетей для обработки спутниковых снимков. 54 364 789 контуров зданий по всей России, вся база доступна через API платформы ГеоАлерт. Создавая демо приложение для просмотра данных, мы перевели контуры в точки (центроиды) и добавили слой с данными Openstreetmap для сравнения. Оба слоя показываются с помощью заранее подготовленных векторных тайлов.

Image for post
Image for post
https://geoalert.github.io/urban-mapping/ Find project description on Github.

Для тех, кому интересно, краткий рассказ о том что было сделано в этом проекте.

Как посчитать людей из Космоса?

Если вы задумывались о том, как делаются глобальные оценки численности населения, например в репортажах ООН (7.7+млрд людей на планете… еще +2 млрд к 2050 году и т.д.), вы возможно задавались вопросом — откуда берутся исходные данные, насколько они точны и как часто обновляются?

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

Но и спутниковые снимки имеют свои ограничения — исследователи указывают на проблему использования Landsat 30м для сельских территорий. Недостаточность разрешения приводит к отрицательному результату там, где объекты жилой инфраструктуры не сосредоточены в одном месте, а разбросаны по обширной области. Несколько лет назад в глобальных моделях стали применять данные ночной съемки Земли для выделения границ поселений (например, Global Rural Urban Mapping Project), но это в свою очередь приводит к ошибкам.
На хорошо известном примере Корейского полуострова (съемка 2012 года) можно сделать вывод что там никто не живет, в отличие от Российской Сибири и Ханты-Мансийского округа.

Image for post
Image for post
The nightlights: left — Korean Peninsula; right — Russian Siberia, Tyumen region

Новые глобальные проекты

Около года назад команда Facebook AI презентовали свой алгоритм генерации высокодетальных карт населения на основе спутниковых снимков с разрешением 0.5м. К нынешнему моменту были опубликованы карты населения около 30 стран, в основном по африканскому континенту.
(https://ai.facebook.com/blog/mapping-the-world-to-help-aid-workers-with-weakly-semi-supervised-learning)

Еще один большой проект по автоматическому дешифрированию объектов на снимков — MS buildings. (https://github.com/microsoft/USBuildingFootprints)
Буквально на днях в последнюю версию Facebook’s RapID (https://github.com/facebookincubator/RapiD), разработанную на основе популярного редактора Openstreetmap, была добавлена поддержка датасетов от Майкрософт. Слой автоматических зданий показывается без наложения на Openstreetmap, как разница между двумя слоями. Доступность датасетов Facebook и Microsoft по странам отображена на этой карте — https://github.com/facebookmicrosites/Open-Mapping-At-Facebook/blob/master/data/rapid_releases.geojson

Автоматическое картирование с точностью до здания

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

  • Значительный размер территории, что ставило амбициозную задачу перед нашей программной платформой по обработке.
  • Надежда, что в будущем данные пригодятся для инвентаризации жилого фонда и других больших инфраструктурных задач:
    “Оценки размера самого фонда также существенно разнятся. По данным Росстата, всего в России 2 125 211 многоквартирных домов, на портале «Реформа ЖКХ» — 1 009 696 домов, а на ГИС ЖКХ — 1 586 048 домов…”

Разумеется, необходимо было оптимизировать обработку на низком разрешении (~ 14 zoom в терминах “пирамид тайлов”), поэтому сперва проводилась бинарная классификация тайлов на “населенные” и “ненаселенные” территории по снимкам низкого разрешения. Это примерно в 30 раз сократило объем тайлов 256x256 для “высокодетальной” сетки. Оптимизированная выборка все равно составила значительную цифру около 130 млн тайлов. Существенной инженерной задачей стало масштабирование потоков обработки. Для этих целей был использован GPU кластер на основе высокопроизводительных вычислительных ресурсов Сколковского института науки и технологий. (https://www.skoltech.ru/en/2019/01/zhores-supercomputer-presented-at-skoltech/)

Image for post
Image for post
Маска зданий на фоне мозаики ночных снимков Black Marble

Основные наши направления работы с первичными полученными данными:

  • Валидация данных. Это тема, которая заслуживает отдельного изложения. Основными источниками автоматической валидации для нас являются Росреестр, Openstreetmap и Реформа ЖКХ. Будем признательны за компетентные отзывы о том какие ресурсы стоит также использовать. Для задач, связанных с профессиональной картографией и кадастром, мы переобрабатываем контуры зданий со сдвигом к основанию. Высот зданий также возможно вычислять на основе разнонаправленной спутниковой съемки и восстановление по теням. (Подробнее — https://medium.com/geoalert-platform-urban-monitoring/buildings-height-estimation-7babe6420893)
  • Остается много вопросов связанных с пост-обработкой для получения правильных геометрических форм объектов, чего мы пока не добились в полной мере.

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

Мы будем рады комментариям и новым идеям. Чтобы быть в курсе новостей проекта — подпишитесь на Github или на рассылку наших новостей:

Written by

We apply Machine learning to automated analysis over Earth observation data

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store