Как машинное обучение спасает деревья в Екатеринбурге


Привет, Хабр! Мы сотрудники екатеринбургского офиса NAUMEN. Делимся интересным проектом – интерактивной картой деревьев на основе нейросетевых алгоритмов. В ее создании также участвуют студенты УрФУ и волонтеры нашего города.


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


Проводить опись зеленых насаждений вручную – долго и неэффективно. На помощь приходят современные технологии: аэрофотосъемка, изображения Street View, съемка LiDAR-систем и дронов. Среди многообразия источников данных для получения информации об объектах городской среды наиболее доступными и относительно дешевыми являются панорамные фотографии со Street View. С их помощью можно обучить нейросеть распознавать на снимках деревья, определять их геолокацию и наносить их на карту города. Как проходил этот процесс и каких результатов удалось добиться – читайте в статье.



Зачем Екатеринбургу интерактивная карта деревьев


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



По оценке качества городской среды Екатеринбург набрал меньше всего баллов за озеленение пространства


Практика подсчета деревьев реализована во многих городах мира. Открытые реестры зеленых насаждений есть в Вене, Амстердаме, Праге. Наиболее удачный пример – карта деревьев центрального района Нью-Йорка. Свыше 2200 сотрудников муниципалитета и волонтеров за один год нанесли на нее порядка 700 000 деревьев и указали их вид. Теперь, подтвердив навыки ухода за насаждениями, любой человек может взять опеку над деревом. Каждый житель Нью-Йорка может пожаловаться на состояние дерева или проблемы с ним.


О создании подобного сервиса в Екатеринбурге давно задумывались в сообществе волонтеров «Парки и скверы», куда входят Илья Котельников и Борис Оводов, сотрудники компании NAUMEN. Ребята решили помочь создать интерактивную карту деревьев Екатеринбурга, ориентируясь на данные которой жители смогут влиять на озеленение города и предотвращать незаконные вырубки.



По задумке, все деревья Екатеринбурга можно будет увидеть на интерактивной карте


В январе 2020 года сообщество волонтеров выполнило первоначальную настройку системы на ресурсе ekbtrees.ru. За две недели они нанесли на карту 150 деревьев, растущих в саду Вайнера. Собирать данные вручную оказалось очень долго, и оперативное обновление информации в будущем представлялось невозможным. Поэтому пришли к решению использовать технологии машинного обучения.


Илья Котельников:


«Используя интеллектуальные алгоритмы, мы хотим создать систему, которая посчитает, сколько деревьев в Екатеринбурге. Базовая задача − защитить то, что есть, а потом раз в 3−5 лет проводить инвентаризацию.
В идеале создать такой механизм, с помощью которого горожане смогут получать полезные сервисы: заказывать высадку зеленых насаждений или уход за ними, жаловаться на поваленные и сломанные деревья, сообщать о незаконных действиях».


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


Создание интерактивной карты с использованием нейросети


Чтобы ускорить процесс сбора информации о деревьях города, Илья обратился к Татьяне Зобниной, специализирующейся на разработке систем машинного обучения. Он предложил ей попробовать реализовать интерактивную карту с помощью нейросетевых алгоритмов. Изучив накопленный опыт в области распознавания деревьев и определения геопозиции объектов по данным Street View и других источников, Татьяна убедилась, что задача решаема. В январе 2020 года она разместила проект на сайте «Проектного практикума» УрФУ, чтобы привлечь к разработке студентов.


Татьяна Зобнина:


«Я стараюсь выстраивать работу со студентами в рамках «Проектного практикума» так, чтобы они успели прийти к какому-то результату за семестр. Для меня важно, чтобы им было интересно, чтобы они умели взаимодействовать в команде, распределять роли, укладывались в тайминг: в задачах, связанных с машинным обучением, с этим могут возникать проблемы. Получается такая игровая учебная практика. Также реализация проекта с использованием нейронных сетей даст студентам несомненное профессиональное преимущество при поиске работы после завершения учебы в университете».



Созданием интерактивной карты деревьев при помощи алгоритмов машинного обучения заинтересовались 4 студента Радиотехнического факультета: Егор Дёмин, Егор Кипелов, Александр Черных и Георгий Шишкин. Все они в прошлом семестре уже проходили у Татьяны курс «Распознавание эмоций по звуку» и имели достаточно высокий уровень технологических знаний и навыков, чтобы реализовать этот проект.


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


  • детектирование деревьев по аэрофотоснимкам;
  • использование фотографий со Street View.

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


По итогам исследования оказалось, что несмотря на все преимущества аэрофотосъемки качественных данных по Екатеринбургу в открытом доступе нет. От этого решения на данном этапе развития проекта пришлось отказаться. Тогда обе группы вместе приступили к реализации варианта со Street View.


Ребятам предстояло:


  1. Написать код для выгрузки данных со Street View.
  2. Разметить выгруженные фотографии – выделить на них деревья.
  3. Обучить нейронную сеть распознавать деревья на фотографиях.
  4. Написать код для преобразования фотографии со Street View, на которых выделено дерево, в координаты, оценить их точность.
  5. Загрузить данные на интерактивную карту деревьев Екатеринбурга.
  6. Проверить точность расположения деревьев на карте с помощью волонтеров.

Первая гипотеза: обучить нейросеть с помощью карты деревьев NY и снимков со Street View


Google и Yandex предоставляют доступ к огромному количеству городских панорам. При этом существует обширная база деревьев Нью-Йорка с геопозицией каждого растения, но без снимков. Появилась гипотеза, что можно обогатить базу фотографиями и с ее помощью обучить нейросеть по картинке определять координаты, а также другие параметры деревьев: высоту, диаметр, видовую принадлежность. После можно будет использовать обученную нейросеть, чтобы распознать деревья на панорамах Екатеринбурга и указывать их характеристики, включая геолокацию.


Однако у этого метода есть свои минусы. Дело в том, что карта деревьев Нью-Йорка была создана в 2015 году, а съемка Street View содержит более актуальную информацию. Соответственно, данные на карте и на фотографиях могут не совпадать, из-за чего в системе могут возникать ошибки. Тем не менее, это было лучшим решением для обучения нейросети на данном этапе, и ребята приступили к его реализации.


Для работы над проектом компания NAUMEN предоставила вычислительные мощности на одном из своих серверов. Студенты написали код для выгрузки данных со Street View, оптимизировали его на своих ноутбуках и перенесли на сервер.


Дальше нужно было определиться с подходящей для проекта нейросетью. Ребята остановили свой выбор на Open Source решении – сверточной нейросети YOLOv3. Основная задача, которую студенты ставили перед ней, – классифицировать размеченные данные и распознавать деревья на снимках со Street View.


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


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



С помощью телеграм-бота каждый может поучаствовать в обучении нейросети


Помимо этого, нашими наработками заинтересовались в МГТУ им. Н.Э. Баумана. Оказалось, что Михаил Ухов, участвовавший в сборе данных для карты деревьев Нью-Йорка в качестве волонтера, реализует подобный проект в Москве. Чтобы помочь коллегам, Татьяна поделилась дообученной YOLOv3.


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



Искажение на снимках со Street View мешает нейросети точно определять геопозицию деревьев


Вторая гипотеза: определение геопозиции по снимкам Street View Екатеринбурга


Чтобы понять, как точнее определять координаты деревьев по фотографиям и в каком направлении двигаться вместе со студентами дальше, Татьяна снова приступила к исследованию. Оказалось, что есть готовое решение, описанное нашим соотечественником, который преподает в университете Дублина, Владимиром Крыловым. В статье он описал алгоритм, позволяющий точно распознавать геопозицию столбов электропередач и светофоров по Street View, и разместил ссылку на GitHub с кодом алгоритма.


Гипотетически описанный Владимиром алгоритм мог подойти для распознавания деревьев. На летней стажировке в NAUMEN студенты занялись доработкой и компоновкой кода и настроек. Также подключили к работе дообученную нейросеть YOLOv3.


Получился пайплайн из трёх нейросетей и алгоритма, работающий следующим образом:


  1. Система собирает снимки со Street View.
  2. Первая нейросеть сегментирует деревья, выделяя их силуэт на фотографии.
  3. YOLOv3 уточняет сегмент, выделяя дерево в квадратную рамку.
  4. Третья нейросеть определяет расстояние от машины, с которой шла съемка Street View, до нужного объекта – в нашем случае до дерева.
  5. Далее алгоритм геотегирования определяет координаты дерева.

Этот метод позволяет сразу определять координаты деревьев на снимках Екатеринбурга, пропустив этап обучения нейросети с помощью карты деревьев Нью-Йорка.


В результате первого теста таким способом удалось распознать по снимкам Street View 68 деревьев по улице Сурикова и определить их координаты.



Так на карте обозначаются метки распознанных деревьев на одной из улиц Екатеринбурга


Следующим шагом планируется подключить волонтеров и оценить точность полученных данных. По итогам проверки студенты УрФУ и сотрудники NAUMEN продолжат работу над проектом в следующем семестре.


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

NAUMEN
Приближаем цифровое будущее

Комментарии 12

    +1
    1. Проект есть на github?
    2. Какова погрешность измерения расстояния до объектов?
    3. Как часто обновляются данные?
    4. Есть ли какие-то результаты кроме учебного процесса? Какие цели были поставлены и каких удалось достичь?
      +1
      Привет! Отвечу коротко по пунктам:
      1. Есть, но пока закрыт от публики. Почему — смотри ниже :)
      2. Плановая точность, которую мы ожидаем на текущем этапе может гибко изменяться. Чем большую точность устанавливаешь в алгоритмах, тем меньше разметки получаешь на выходе. Алгоритмически мы пока выбрали 8 метров. Реальную точность сейчас изучаем (отсканировали одну улицу и проводим сверку «на местности»). Собственно, из-за того, что всё пока выглядит очень далеко от промышленного результата, мы и не делаем проект открытым.
      3. Пока нет автообновления, всё вручную. На прогон всего пайплайна по не слишком длинной улице (до 1 км) на среднем компе в ручном режиме уходит пара часов.
      4. На этом этапе была поставлена главная цель — проверка гипотезы, что данные панорам могут быть использованы для позиционирования деревьев на улицах с точностью, достаточной для планирования работ по инвентаризации деревьев волонтёрами. То есть понять где и сколько деревьев. Сейчас мы на этапе проверки.
      Если проверка даст положительный результат, будем заниматься следующими целями — распознавание дополнительных параметров дерева (высота, диаметр кроны, род, вид). Понятно, что полностью заменить ручную инвентаризацию вряд ли получится, но хотя бы поднять качество планирования инвентаризации, дать общее понимание «зелёной» картины города — вполне достижимо.

      По-хорошему, статью стоило писать после проверки качества алгоритма на улице. Это тот случай, когда желание рассказать о социально-значимом проекте оказалось сильнее, чем выдержка :)
      0
      На скриншотах — OpenStreetMap. В статье про этот проект — ни слова. Как и про NextGIS.
      Прокомментируете?
        +1
        Привет! Статья про самую «интеллектуальноёмкую» часть проекта.

        Если же рассказывать про весь проект целиком, то:
        1. Есть целиком волонтёрский проект создания городской карты деревьев Екатеринбурга, ведущийся группой волонтёров, входящих в сообщество «Парки и скверы Екатеринбурга». Его основная идея — волонтёрскими силами при помощи мобильных телефонов «паспортизировать» городские насаждения. В первую очередь те из них, над которыми завис топор городской администрации.
        2. В рамках проекта мы ознакомились с разным софтом и пока остановились на NextGiS-е, но не могу сказать, что целиком всем удовлетворены.
        3. Пока выбор не был сделан, мы вели инвентаризацию в открытом софте, в том числе пробовали OpenStreetMaps, где есть открытые регистры деревьев разных городов мира. Там мы нанесли на карту «Сад Вайнера» — это небольшой городской сквер, который попадает под угрозу тотальной вырубки для расширения городской филармонии (прошу прощения за оффтоп). Но в OSM не поддерживается привязка к объектам фотографий, тем более, к таким массовым, как «дерево». Поэтому решили эксперимент с OSM прекратить, но между собой пока договорились, что все подтвержденные данные должны выгружаться в OpenStreetMap.
        4. Как боковое ответвление проекта родилась идея упростить работу волонтёров, заранее разметив по открытым данным столько объектов, сколько возможно. Именно про это ответвление рассказывается в статье.
          0

          У вас немного странное представление об OSM. База OSM действительно не хранит фотографии. Но если вы будете добавлять своим объектам какой-то ID, вы можете связывать по нему объект в базе с любыми метаданными, хранимыми где-то ещё. Нужно всего-навсего задокументировать собственные теги в wiki проекта. Кроме того, подмножество ваших данных можно просто выгружать в базу.

            0
            У меня действительно не самые глубокие знания в ОСМ, я вообще с GIS-ами познакомился только ради деревьев. Да, я знаю, что можно связать любой объект с внешней фоткой посредством ссылки в описании или другом теге, но встроенной интеграции с фотографическим сервисом нет. Есть интеграция с викимапией, которая поддерживает фотки, но что-то подсказывает мне, что тысячам деревьев там не будут рады.
            Отсутствие встроенной функции хранения фоток означает, что если я хочу сконструировать форму добавления дерева удобную для волонтёра, на которой он быстро добавит дерево, заполнит нужные параметры и загрузит 3-5-7 фотографий, то мне нужно прилично потанцевать с бубном. Именно поэтому мы выбрали в итоге NextGiS — там подобное доступно «из коробки».

            Но при всём при этом я считаю, что OSM — отличная система и мы планируем дублировать данные в неё.
        +1
        Звучит круто!!! Я чем-то могу помочь?
        0
        Базовая задача − защитить то, что есть, а потом раз в 3−5 лет проводить инвентаризацию.

        Или ишак, или падишах…
        Простите за пессимизм.
        Но как pet проект прикольно.

          0
          Я так полагаю, что скептицизм вызван сложностью задачи проведения инвентаризаций? В таком случае это не пессимизм, здравый взгляд на вещи — задача периодической инвентаризации зелёных насаждений в масштабах города действительно очень сложна. Прежде всего, если расчитывать только на волонтёрские сообщества, эта задача очень долгая, а значит, есть риск потери волонтёрской мотивации, если делать её на целиком некоммерческих рельсах. Но, если хотя бы выборочную инвентаризацию удастся запустить, и система проживёт пару лет, то повторная инвентаризация ранее посчитанных кусков города не выглядит такой же крупной задачей.
          0
          было бы идеально открыть код для тех, кто хочет повторить такое же, но в своем городе.
            0
            Привет! Мы заинтересованы в этом, но открыть планируем после проверки. Когда откроем, напишем :)

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

          Самое читаемое