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 MaxPoolingmodel.add(Convolution2D(64, 3, 3)) #4 conv
model.add(Activation('relu')) #5 activation
model.add(MaxPooling2D(pool_size=(2, 2))) #6 MaxPoolingmodel.add(Convolution2D(64, 3, 3)) #7 conv
model.add(Activation('relu')) #8 activation
model.add(MaxPooling2D(pool_size=(2, 2))) #9 MaxPoolingmodel.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) происходит сборка отдельных структур в некоторые комплексы, характерные для того или иного класса, на основе которых изображение в дальнейшем классифицируется.
Анализируя отдельные изображения, можно заметить характерные закономерности, не всегда ясные при рассмотрении исходного изображения.
Нейросеть помогает визуализировать скрытые закономерности, эвристики.
Новый инструмент для анализа агломераций
На основе данных, полученных в первой части, можно получить обобщающие схемы градостроительной ситуации рассматриваемых городов. Важно подчеркнуть, что анализируется область, выходящая за рамки административных границ. Таким образом, появляется инструмент для анализа и фиксации агломерационных процессов, происходящих в крупнейших городах.
В дальнейшем такие схемы могут быть использованы для разработок схем территориального планирования, генеральных планов городов и других документов.
Возможные сценарии использования машинного обучения в проектировании и градостроительстве приведены на слайде:
Планы на будущее
- охват и анализ городов миллионников;
- отход от клеточной сетки, разбиение и классификация на основе уличной сети;
- тренировка моделей на основе других критериев;
- выявление отдельных объектов / object detection;
- переход на TensorFlow.
Проект CityClass показал значительный потенциал использования машинного обучения как нового инструмента для работы с городом и агломерацией.
Полную презентацию проекта CityClass можно увидеть по ссылке.
Роман Кучуков / Roman Kuchukov —
архитектор, урбанист и исследователь города;
основатель студии aitecture