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

Несмотря на коронавирус, пока всё идёт к тому, что главной эпидемией XXI века станут психические расстройства. Уже сегодня основной причиной утраты трудоспособности в возрасте 15-45 в США является депрессия. Каждый пятый в возрасте 60+ принимает антидепрессанты, более половины населения США за последние пятнадцать лет хотя бы раз принимала антидепрессанты.

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

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

Самым точным и наглядным способом отобразить "зелёнку" будет её детальная карта, составленная не по документам, а по реальным изображениям. Да и деревья бывают разные, начиная от молодых саженцев и голых тополей до раскидистых дубов. Для наглядности и контрастности можно нарисовать карту деревьев в чёрно-зелёном цвете, где зелёным обозначены кроны деревьев, чёрным — всё остальное. Для упрощения ориентирования в правой части приведена обычная карта Москвы из Яндекс.карт:

Центру Москвы не хватает озеленения, чернеют транспортные артерии. Однако за пределами третьего транспортного кольца (ТТК) жилые кварталы уже утопают в зелени, а до многочисленных парков от центра 5-7 километров.

Например, крупным планом территория спорт-комплекса "Лужники" с чёрной дугой Москвы-реки и парком Воробьёвых гор:

Чтобы количественно оценить "утопание в зелени" отдельных районов, можно составить тепловую карту деревьев столицы. По сути это будет карта сомкнутости крон:

Чем теплее цвет, тем больше плотность деревьев. В центре зелень формирует 0-30% по площади — от чёрного до голубого цветов. Спальные районы вне ТТК окрашены преимущественно в зелёный цвет, что соответствует покрытию в 40-60%. Мало какой мировой столице по силам превысить этот показатель.

Ближе к окраинам много красного и белого цветов и несмотря на названия это не парки, а скорее сплошные леса с сомкнутостью крон 90-100%. Этим непросто гордиться, так как значительные площади окраинных "парков" необустроены и недоступны для прогулок. 

Нью-Йорк

Интересно посмотреть как обстоят дела с озеленением в других городах. Успехи заокеанских коллег по урбанистике можно оценить по Нью-Йорку:

Манхеттен выглядит совсем пустовато, как и центр Москвы. Его легко опознать по прямоугольнику Центрального Парка. С юга Бруклин - сомкнутость крон небольшая, 0-30% за исключением нескольких зелёных кварталов и парка с кладбищем. Отчасти дело в том, что в Бруклине плотная застройка и места под зелень осталось немного. Довольно зелено выглядит Бронкс [на севере по центру] и северо-восточная часть Куинса. Лесной верхний левый угол картинок это уже не Нью-Йорк, а пригород — Нью-Джерси.

Париж

Административно столица Франции небольшая, поэтому есть смысл добавить пригород:

Город контрастен. Во время Наполена III в середине XIX века Париж украсили несколько крупных парков — эти пятна видны на всех картах. От Триумфальной арки до Булонского леса всего один километр. Жилая часть Парижа и пригородов не привлекла бы дендрологов — тесные улочки, к которым примыкают фасады домов, не способны вместить достаточное количество зелени и основная часть деревьев расположена внутри незастроенных дворов. Запад и юго-запад радуют высокой долей деревьев, но как и в случае Москвы это необлагороженные леса, зато без болот.

Шанхай

Особая нелюбовь к озеленению у азиатских мегаполисов:

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

Каунас

Города поменьше не выглядят лучше мегаполисов, например:

Шарлотт

Каким мог бы быть по-настоящему "зелёный" город? Для контраста один из самых зеленых городов США — Шарлотт:

Шарлотт это лес, в котором люди построили дома.

Технические детали

В задаче использовалась нейросетка EfficientNet-B7. Это самая большая нейросетка в линейке с 66 млн. параметров, предобученная под картинки размером 600х600 пикселей. Не самый оптимальный выбор, но хотелось поиграться с большими нейросетками, так как для продакшена обычно актуальны поменьше. Минус такого большого размера — требуется больше данных для обучения, плюсы — будет меньше склеек на результирующей картинке, так как изначальный размер картинки для инференса нейросеткой составлял ~1 гигапиксель. EfficientNet-B7 влезает в 12 ГБ видеопамяти, то есть можно обучать и в Google Colab, и на чём-нибудь домашне-игровом вроде GeForce 3060. На мой взгляд минусы сильно перевешивают и в дальнейшем сторонился версии B7. Для аугментации обучающего датасета использовалась albumentations.

В качестве бэкэнда поначалу использовался TensorFlow, всё-таки EfficientNet это детище Google и через TF было проще, но со временем появились и отличные реализации под PyTorch. При этом "из коробки" при инференсе реализация на TensorFlow потребляет в разы больше видеопамяти. Личные впечатления по TF vs PT сходятся с сообществом:

Ещё интересная эмпирика по TensorFlow vs PyTorch тут. Точность моделей можно сравнить тут.

Ну и ради чего всё затевалось: полновесная карта "зелёнки" Москвы тут (осторожно, 308 мегабайт).

Пример в колабе тут.

Комментарии (4)


  1. Bo_K_S
    12.04.2022 20:51

    привет! спасибо за статью. есть пара вопросов:

    1. какие архитектуры исследовались под задачу и можно ли чекнуть сравнение качества?

    2. датасет закрыт?

    3. я так понимаю, модель не тюнилась и просто дообучалась?


    1. 150Rus Автор
      12.04.2022 22:14

      1. Не стал изобретать велосипед и просто выбрал самую лучшую архитектуру из тестов ImageNet. На тот момент это была EfficientNet. Так как она полностью удовлетворила потребности и была лучшей в ImageNet, то решил что дальше экспериментировать с архитектурами нет особого смысла. И была проблема в обучающем датасете - маски для деревьев раскрашивались вручную и он был мал. В этом случае бутылочным горлышком при сравнении могла стать не архитектура, а датасет. Тем не менее, есть жалобы на EfficientNet, что она не такая уж и efficient и готов в какой-то степени их поддержать: https://gist.github.com/rwightman/ccbba19a21a4e6c6c9d54c0de64c0e64. В самом конце текущей статьи есть ссылка на сравнение разных PyTorch-версий моделей CV и вот ещё сравнение: https://paperswithcode.com/sota/image-classification-on-imagenet, но тут больше по рисёчам, которые часто далеки от продакшена и эмпирики.

      2. Не знаю, я занимался только нейронкой =(

      3. Мне кажется оба термина тут вполне уместны, и fine tuning, и дообучение. Так как дообучающий датасет был как раз по задаче — маска для деревьев.


  1. Sercius
    13.04.2022 16:16

    Обучение было на каких материалах? Аэро или космо? И как модель будет обучаться на снимках например с зимы, где нет крон?


    1. 150Rus Автор
      13.04.2022 19:42

      1. Космо

      2. Если в обучающем датасете не будет зелёных крон, то обучить модель распознавать зелёные кроны на таком датасете не получится =)

      3. Если предположить, что нужно работать с тем что есть, а именно с зимней съёмкой... Как-то обучал нейросетку распознавать засохшие кроны/деревья на летней аэрофотосъёмке с дрона и всё работало отлично. Когда из интереса нейросетке подсунули зимние фотки, то она тоже справилась. То есть можно распознавать голые зимние кроны и по ним экстраполировать зелёные кроны.