Идея проекта
В данном проекте я исследовала, как генеративная нейросеть может считать и воспроизвести визуальный язык, построенный на мягких формах, ярких плоских фонах и полупрозрачном голографическом слеклянном материале. Я хотела узнать какие признаки стиля модель запоминает лучше всего и как она начинает их комбинировать в новых изображениях.
За основу я взяла собственную серию квадратных изображений, в которых повторяются несколько устойчивых признаков: blob-формы, круглые и аморфные силуэты, кислотные фоны, иридесцентные стеклянные круги, а также персонажи с предельно простой, почти детской графикой глаз. Больше всего меня интересовал переход от абстрактной формы к персонажу, где заканчивается абстрактный объект и начинается персонаж. Также хотелось увидеть насколько точно модель может выучить цвета и их сочетания, научиться генерировать множественные вариации blob-форм.
Итогом проекта стала серия изображений, в которой один и тот же визуальный язык проявляется в трех направлениях: как материал, как объект и как персонаж. Таким образом проект показывает, что нейросеть может интерпретировать стиль как набор повторяющихся правил и превращает их в собственный.
Исходные изображения
Исходный стиль
Для обучения я собрала собственный датасет из изображений 1:1, которые создавала вручную. Из чего состоит стиль: — мягкие blob-формы на ярком плоском фоне; — теклянные и голографические сферы и круги; — композиции из одного или двух-трех круглых элементов; — персонажи с крупными глазами, необычной офрмой и упрощенной пластикой; — изображения, в которых сочетаются плоская графика и стеклянный материал;
При отборе датасета для меня была важна повторяемость пластики, цветовой логики и материала. Поэтому я собирала изображения, которые принадлежат одному визуальному языку, но отличаются по степени абстракции (от сферы до персонажа).
Исходный стиль
Применения генеративной модели
В качестве базовой модели использовалась Stable Diffusion XL. Дообучение выполнялось методом DreamBooth LoRA с использованием библиотеки diffusers и инструмента accelerate (GPU T4).
Модель обучалась через скрипт train_dreambooth_lora_sdxl.py. В процессе использовались параметры:
— разрешение: 256 — batch size: 1 — gradient accumulation — ограниченное число шагов обучения (50)
В результате обучения были получены LoRA-веса, которые затем подключались к базовой модели для генерации изображений.
После обучения я использовала текстовый промпт (такой как «mew style holographic glass blob character»), чтобы управлять генерацией и получать изображения в нужном стиле.
Процесс обучения
В процессе обучения я загрузила датасет через Kaggle, а также использовала следующие настройки:
Также использовалась fp16 точность
Параметры оптимизации:
Параметры обучения: Скорость обучения LoRA-слоев: --learning_rate=1e-4
Дополнительный параметр стабилизации: --snr_gamma=5.0
Неизменная скорость: --lr_scheduler="constant»
Ограничение было 250 шагов, поскольку обучение уже прерывалось на 256 шаге из-за лимита GPU. Исходных изображений было 20 штук, поэтому данного количества train_steps было достаточно. --max_train_steps=250
Промежуточные веса сохранялись каждые 100 шагов: --checkpointing_steps=100
Что изменила в шаблоне: — перенесла в Kaggle, так как в Colab не хватило GPU — Использовала свой instance prompt — Настроила свои параметры обучения — Исправляла возникающие в процессе ошибки
Обучение модели заняло примерно 8 минут. После завершения обучения я подключала полученные LoRA-веса к базовой модели Stable Diffusion XL. Сначала поставила lora_scale=0.2, но не понравился результат, решила увеличить до среднего значения:
Итоговые серии
В эту серию вошли изображения, где главным становится сам материал стиля. Это сферические стеклянные формы с иридесцентными переливами. Хорошо видно, что модель отлично усвоила световую логику исходного датасета, мягкие градиентные переходы между цветами, а также эффект стекла.
Модель лучше всего считала именно материал и цветовую палитру. Однако фон чаще был не однотонным, а также градиентным, в отличие от исходных фото.
Здесь появились композиции из нескольких сфер, перекрывающихся кругов и стеклянных слоев. Эта серия показывает, что модель смогла перенести в генерацию не только отдельные признаки материала, но и композиционный принцип исходных изображений, например, крупная форма, чистый фон, минимум деталей, сильный акцент на одном-двух объектах.
Потом я начала генерировать персонажей на основе стиля. песронажи отличаются изменением формы: в одной сериии сохранена исходная blob-пластика, а в другой более сложных существа с ушами, хвостами и читаемой пластикой тела.
Именно здесь лучше всего видно, что нейросеть интерпретирует стиль как переходную зону между «формой» и «характером». Глаза, маленький рот и минимальная анатомия делают персонажей эмоциональными, но все еще не реалистичных животных. Они остаются объектами из того же материала, что и сферы и стеклянные круги.
Отдельно хочу выделить цветовые вариации персонажей. В датасете доминировали розовые и голубые сочетания, поэтому модель по умолчанию стремилась в эту палитру. Однако в процессе инференса мне пару раз удалось вывести ее и в лаймовый, и в красно-оранжевый цвета. Это показало, что цвет в модели частично является жестко запомненным паттерном, но им можно управлять управляемым в рамках одного стиля. Однако без намеренной генерации объектов с другими цветами из исходной палитры модель генерировала преимущественно розово-голубые фигуры.
Пример промпта для генерации
Что получилось лучше всего
Материал стекла и голографический эффект. Практически во всех удачных генерациях присутствует ощущение полупрозрачного голографического стекла, мягкие переливы и световые переходы. Это самый устойчивый признак.
Пластику мягкой формы. Даже когда модель ошибалась в персонаже или слишком упрощает композицию, она все равно держится за округлость и форму.
Цветовой режим. Основная цветовая гамма считывается очень стабильно. Это особенно видно в серии персонажей и в абстрактных сферах.
Что получилось не очень
Сильнее всего модель упростила сложные композиции, различия между объектом и персонажем. Если исходная картинка содержала несколько одновременных уровней, например, плоский фон, стеклянный круг, blob-форму и графическую деталь, то модель часто редуцировала это до одного доминирующего объекта. Чаще всего этим объектом становилась сфера или стеклянный blob-персонаж.
Из-за этого слишком абстрактный prompt вел к бесформенным сферам, слишком конкретный к мультяшной игрушке.
Где-то материал доминирует над формой, где-то работает только как оболочка для персонажа. Также модель слишком восприняла стекло как главенствующий материал. Более графические элементы становились объемными и стеклянными.
Соответствие идее
Изначально мне было интересно посмотреть, как из простых форм могут получаться персонажи.
В процессе модель генерировала просто стеклянные blob-объекты. Но после того, как я немного поменяла запрос, те же самые формы стали персонажами, появлявились глаза, силуэт, иногда даже эмоция.
Описание применения генеративной модели
Помимо обученной нейросети Stable Diffusion XL, в проекте использовался ChatGPT (OpenAI) как вспомогательный инструмент. Он применялся для анализа результатов генерации, так как я хотела минимизировать субъективность. При возникновении ошибок в процессе написания кода я иногда обращалась к ChatGPT за объяснением ошибки.




