

Цель данной работы заключается в применении возможностей генеративной нейросети Stable Diffusion для создания визуальных концептов в контексте дизайна интерьера. В частности, акцент будет сделан на разработку изображений в советском стиле. Поскольку я обучаюсь на направлении «Дизайн интерьера», то для меня было бы интересно разработать метод для генерации концептов, который позволит упростить и ускорить формирование общей картины проекта.

СОВЕТСКИЙ СТИЛЬ
Советский стиль в дизайне часто вызывает чувство ностальгии, поскольку он воплощает элементы эпохи, которые сегодня встречаются довольно редко. Однако благодаря цикличности моды, элементы этого стиля могут вновь стать актуальными.
ИЗОМЕТРИЯ КАК МЕТОД ВИЗУАЛИЗАЦИИ
Изометрия, как способ отображения объектов и пространства, представляет собой форму проекции, где сохраняются пропорции, и можно увидеть пространство в объеме. Этот подход идеально подходит для создания интерьеров, так как позволяет точно представить, как различные элементы — мебель, текстуры, декоративные акценты — взаимодействуют между собой в ограниченном пространстве. Используя нейросеть для генерации изометрических изображений, можно получить точные и детализированные концепты, которые помогут на ранних этапах разработки интерьера «примерить» различные дизайнерские решения и их комбинации.
ПРИМЕНЕНИЕ В ДИЗАЙНЕ ИНТЕРЬЕРА
Совмещение советского стиле в изометрии может привести к уникальным результатам в проектировании интерьера. Например, создание интерьера в духе советской эпохи с использованием современных технологий визуализации позволит воссоздать атмосферу прошлого в современных рамках. Изометрические изображения, в свою очередь, могут служить инструментом для точной деталировки всех элементов, от размещения мебели до декоративных объектов.
Таким образом, данная работа будет не только исследованием возможностей Stable Diffusion для генерации изображений в специфических стилях, но и практическим проектом, направленным на внедрение инновационных методов в сферу дизайна интерьера.


В первую очередь, загрузим нужные библиотеки и изображения в Colab


Далее посмотрим полученные изображения и создадим для них разметку


Проделаем ту же работу, но уже для другого набора изображений


Теперь можно запускать обучение модели
По завершении обучения, можно приступать к генерации изображений. Загрузим полученную модель в советском стиле
prompt = «photo collage in SOVIET style, bedroom» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


Попробуем сгенерировать спальную комнату. На сгенериованных изображениях прослеживается советский стиль, но присутствует много фотографий, попробуем убрать из промта «photo collage»
prompt = «SOVIET style, bedroom» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Теперь на полученном изображении, нету большого количества фотографий, стиль сразу прослеживается и выглядит как надо
prompt = «photo collage in SOVIET style, kitchen» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Перейдем к другой комнате, попробуем воссоздать кухню, вернем в промт «photo collage»
На удивление, модель не попыталась «завалить» кухню фотографиями, возможно, «photo collage» в промте влияет на комнаты, в которых модель считает, что фото будет уместно. Сейчас сгенерируем кухню без «photo collage»
prompt = «SOVIET style, kitchen» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Получилось хорошее изображение в советском стиле. Модель правильно определила ряд поверхностей передав блики и отражение поверхности. Снова вернем «photo collage» и попробуем еще раз
prompt = «photo collage in SOVIET style, kitchen» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Изображение вновь показывает отличную передачу советского стиля, но есть ощущение, что если использовать в промте «photo collage», появляется больше объектов, хоть и не фотографии как на примере со спальней, но это создает шум, поэтому опустим «photo collage» в последующий промтах.
prompt = «SOVIET style, children’s bedroom» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Данное изображение ближе к началу 2000-х, но общий стиль все еще выдержан. Возможно, помогло бы более гармонично передать стиль, добавив примеры детских спален.
prompt = «SOVIET style, main room» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


Теперь попробуем сгенерировать гостиную
По этим изображениям можно сказать, что модель хорошо научена гененрировать изображения в советском стиле. Гостиная получилась гармонично, мебель хоть и выглядит порой немного странно, но суть передана правильно.
prompt = «SOVIET style, corridor» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Теперь давайте сгенерируем коридор
Тут сложно сказать точно, советский ли это коридор, но в целом, атмосфера соответсвует заявленой.
prompt = «SOVIET style, refrigerator» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Интересно попробовать сгенерировать конкретный объект, например, холодильник
Теперь протестируем модель, обученную для рисования изометрических изображений комнат. Пройдемся по аналогичному набору помещений
prompt = «photo collage in ISOMETRIC style, bedroom» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
prompt = «ISOMETRIC style, bedroom» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


Все же, при работе с комнатами, где чаще всего можно встретить фото, при использовании в промте «photo collage», модель пытается обогатить изображение как можно большим количеством фото.
prompt = «ISOMETRIC style, children’s bedroom» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
prompt = «ISOMETRIC style, kitchen» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


prompt = «ISOMETRIC style, main room» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
prompt = «ISOMETRIC style, main room» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


По результату, модель отлично справилась с передачей изометрии
Теперь опробуем обе модели вместе
prompt = «SOVIET style, ISOMETRIC style bedroom» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


prompt = «SOVIET style, ISOMETRIC style, children’s bedroom» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
prompt = «SOVIET style, ISOMETRIC style, kitchen» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


prompt = «SOVIET style, ISOMETRIC style, corridor» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


prompt = «SOVIET style, ISOMETRIC style, main room» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
В ряде изображений, получилось добиться смешения советского стиля с изометрией. Изометрия передана в полном объеме, а вот советский стиль теряется, особенно это видно на кухне. Коридор же и вовсе, словно не содержит советский стиль, все напоминает некий офис, нежели заявленное помещение.
prompt = «SOVIET style, ISOMETRIC style, refrigerator» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Холодильник получился правильно, в изометрии, но советский стиль прослеживается с трудом
Прежде чем подводить итоги, хочется попробовать сгенерировать то, чему мы не обучали свои модели, посмотим, что получится. Отойдем от темы интерьера и попробуем сгенерировать изображение, например, космический корабль.
prompt = «SOVIET style, ISOMETRIC style, spaceship» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
prompt = «SOVIET style, ISOMETRIC style, a car» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


prompt = «SOVIET style, ISOMETRIC style, a plant» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
prompt = «SOVIET style, ISOMETRIC style, a cat» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


prompt = «SOVIET style, ISOMETRIC style, a cow» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
prompt = «SOVIET style, ISOMETRIC style, house» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


По итогу, модель точно передает изометрию, а советский стиль проявляется слабо, порой его просто нет, либо невозможно понять, в чем он заключается. Думаю, проблема в том, что изометрия довольно проста, она строится именно на построении кадра, а не на объектах, как в советском стиле.
prompt = «SOVIET style, a cow» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Попробуем убрать из промта изометрию и снова нарисовать корову
Все же, это просто корова, советский стиль тут не ощущается, но ему и не откуда взяться, мы обучали нашу модель только на интерьер. Есть подозрение, что базовая модель Stable Diffusion воспринимает советский стиль, как некий цветовой фильтр. Попробуем сгенерировать котика.
prompt = «SOVIET style, a cat» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
Да, по всей видимости, модель принимает советский стиль, как фильтр, но надо отдать должное, кот получился здорово! Была мысль, что модель нарисует пародию на кота, но получилось очень натурально, а ведь мы не обучали наши модели на рисование котов. Выходит, порой базовой модели Stable Diffusion может хватить для ряда задач. В любом случае, если задействовать промт по назначению, начинает работать наша модель, которую мы тренировали для интерьера, что доказывает, что обучение прошло успешно.
Обучив свои модели, можно сказать, чем сложнее стиль, на который мы хотим натренировать модель, тем больше нужно изображений в датасете. Лучше всего получился именно изометрический стиль, он получался всегда, когда его применяли, советский же стиль не всегда был явным.
Подводя итог, можно сказать, что используя генеративную нейросеть Stable Diffusion, можно получить интересный опыт, попробовать придумать что-то новое, взглянуть на вещи в комбинации тех стилей, которые тебе интересны здесь и сейчас. Это может помочь для придумывания новых идей, набросок скетчей для последующей работы, дать вектор своему креативу.
prompt = «photo collage in SOVIET style, ISOMETRIC STYLE, space room» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image
prompt = «photo collage in SOVIET style, ISOMETRIC STYLE, air-conditioned room with panoramic window» # @param
image = pipe (prompt=prompt, num_inference_steps=25).images[0] image


И несколько генераций для души
Ссылка на блокнот с кодом: https://colab.research.google.com/drive/1z42uQBq6HWJfC-4ZIfoAENzqn0Ay3fnb?usp=sharing