CityClass project #2

выводы и планы на будущее

изображение со свёрточного слоя нейросети

CityClass — часть #1

К моему удовольствию, проект CityClass был с интересом воспринят как среди урбанистов, так и в среде IT специалистов. Большой удачей оказалось попасть в тренд, связанный с машинным обучением. Об этом в частности, можно прочитать в статье Института Стрелка “Машины могут видеть”.

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

Город + Data Science = :)

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


Выводы и дополнения

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

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

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

В глубоком машинном обучении (deep machine learning) используется не один, а множество внутренних слоёв, благодаря которым формируется классификатор. Моя нейросеть состоит из 3-х свёрточных слоев следующим образом:

#Keras  CNN-model
model = Sequential()
model.add(Convolution2D(32, 3, 3, input_shape=(3, 300, 300)))#1 conv
model.add(Activation('relu')) #2 activation
model.add(MaxPooling2D(pool_size=(2, 2)))#3 MaxPooling
model.add(Convolution2D(64, 3, 3)) #4 conv
model.add(Activation('relu')) #5 activation
model.add(MaxPooling2D(pool_size=(2, 2))) #6 MaxPooling
model.add(Convolution2D(64, 3, 3)) #7 conv
model.add(Activation('relu')) #8 activation
model.add(MaxPooling2D(pool_size=(2, 2))) #9 MaxPooling
model.add(Flatten()) 
model.add(Dense(128)) #all connected layers
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(nb_classes)) #7 classes
model.add(Activation('softmax'))

На интуитивном уровне обработку изображения нейросетью можно описать следующим образом:

  • на первом свёрточном слое (1.conv) сеть воспринимает получаемое изображение, выявляет в нем характерные контуры;
  • на последующих слоях (2–6) выявляются отдельные структуры, в данном случае дороги, дома;
  • на последнем свёрточном слое (7.conv) происходит сборка отдельных структур в некоторые комплексы, характерные для того или иного класса, на основе которых изображение в дальнейшем классифицируется.

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

Нейросеть помогает визуализировать скрытые закономерности, эвристики.
1,2, 4, 7 — номера слоев в сети

Новый инструмент для анализа агломераций

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

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

Анализ агломераций при помощи машинного обучения

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

Планы на будущее

  • охват и анализ городов миллионников;
  • отход от клеточной сетки, разбиение и классификация на основе уличной сети;
  • тренировка моделей на основе других критериев;
  • выявление отдельных объектов / object detection;
  • переход на TensorFlow.
Проект CityClass показал значительный потенциал использования машинного обучения как нового инструмента для работы с городом и агломерацией.

Полную презентацию проекта CityClass можно увидеть по ссылке.


Роман Кучуков / Roman Kuchukov —

архитектор, урбанист и исследователь города;
основатель студии aitecture