Сегодня в Яндекс Картах появилось более 4 миллионов 3D–моделей деревьев. Реалистичные зелёные зоны теперь есть на карте Москвы в пределах МКАД и Петербурга, включая Петергоф. Это поможет пользователям выбрать место для прогулки или оценить район при покупке квартиры.
Чтобы не тратить ресурсы картографов на разметку тысяч парков, дворов и улиц, мы обучили ML-модель. Она умеет определять координаты и основные характеристики дерева по аэрофотоснимку, что позволяет по клику найти и «высадить» растения во всем городе.
Распознавание деревьев по аэрофото
ML-модель анализирует кроны, которые видны на аэрофото местности, и получает три вида данных о деревьях:
Координаты. Модель фактически создает тепловую карту местности, на которой самые яркие точки — это координаты верхушек деревьев.
Тип листьев. По кроне модель умеет классифицировать деревья и определять, какое именно дерево стоит в этой точке: лиственное или хвойное.
Размер. Также по кроне модель определяет ширину и присваивает дереву высоту. Предполагается, что чем дерево шире, тем оно выше.
Пример того, как модель видит деревья
После определения этих параметров проводится автоматическая фильтрация. Мы убираем те деревья, которые точно не нужны на карте: например, посреди воды или на крышах. А также те, что находятся слишком близко к дорожному полотну или тропинкам в парках, чтобы они они не закрывали обзор дороги и не мешали навигации. Кроме того, алгоритм «прореживает» массив растительности в местах, где деревьев много и они растут слишком плотно друг к другу. Это позволяет не перегружать приложение излишними данными.
Используя информацию о местоположении и параметрах дерева, алгоритм ставит на карту нужную 3D-модель. Всего их 12: шесть лиственных и шесть хвойных. Они различаются по высоте, ширине ствола и кроны. Также при расстановке алгоритм специально поворачивает каждое дерево и немного меняет его размер. Это позволяется сделать картинку более «живой» и не заполнять карты абсолютно идентичными макетами.
Всего ML-модель добавила на карту 24 тысячи хвойных и около 4 миллионов лиственных деревьев. Их 3D-модели теперь есть в 2000 парках и скверах Москвы и Петербурга, а также во дворах и на улицах обоих городов.
Датасет для обучения ML-модели
Модель обучалась на данных, которые разметили пользователи в «Народной карте» Яндекса. Используя спутниковые и панорамные снимки, народные картографы добавили координаты, тип листьев, класс высоты и ширины почти у 160 000 деревьев в Москве и Санкт-Петербурге. Деревья «сажало» более 350 пользователей, самый активный из них создал на карте 37 тысяч растений.
Разметка деревьев в Народной карте
В Москве и Петербурге оказалось слишком мало ёлок и, соответственно, данных о них. Поэтому пришлось дополнительно обучать модель распознавать хвойные деревья. Для этого мы выбрали регион с большой плотностью таких растений — Казань. Сначала просили модель разметить ёлки самостоятельно, а потом — картографов уточнить ее данные: удалить лишнее или добавить недостающее.
Ещё одним вызовом для ML-модели стали скопления деревьев, в которых сложнее определить по кронам отдельностоящие. Поэтому мы также доразмечали данные в зелёных зонах с большой плотностью растений. Так модель научилась учитывать факторы, свойственные именно для этих областей.
Могу ли я тоже посадить дерево в Яндекс Картах?
Да, посадить дерево на карту можно в Москве или Санкт-Петербурге. Для этого нужно ознакомиться с правилами разметки, зайти в «Народную карту» и добавить информацию о своем растении. Если оно будет соответствовать правилам и пройдет модерацию, то в течение недели появится в Яндекс Картах.
Источник: habr.com