Идея проекта
Проект направлен на обучение модели Stable Diffusion генерации изображений в стиле, основанном на живописи Каспара Давида Фридриха.
Основная задача — проверить, насколько нейросеть способна воспроизводить характерные черты его художественного языка и создавать новые визуально цельные изображения с узнаваемой атмосферой.
Я выбрала именно это направление, потому что Каспар Давид Фридрих — один из моих любимых художников. Мне хотелось попробовать перенести в генеративную модель его мрачную, меланхоличную и созерцательную эстетику, а также посмотреть, сможет ли нейросеть уловить настроение его работ, построенное на туманных пейзажах, руинах, холодном свете и ощущении одиночества.

«Зимний пейзаж», 1811 г., Каспар Давид Фридрих
В качестве обучающего материала использовались изображения произведений художника. В выборку вошли как пейзажные сцены с одинокими фигурами, так и композиции с готическими руинами, зимними мотивами, морскими берегами и туманными пространствами.
Обучение
Сначала у меня идёт техническая часть: в ячейке 1 выполняется проверка графического процессора. Это нужно для того, чтобы убедиться, что обучение будет проходить на GPU, а не на CPU, поскольку обучение Stable Diffusion XL на процессоре занимает слишком много времени.
Далее в ячейке 2 устанавливаются необходимые библиотеки для работы со Stable Diffusion XL, DreamBooth и LoRA. Здесь загружаются основные зависимости, которые нужны для запуска обучения, работы с моделями, сохранения весов и последующей генерации изображений.
После этого в ячейке 3 загружается обучающий скрипт train_dreambooth_lora_sdxl.py. Это основной скрипт DreamBooth для SDXL, который используется для запуска обучения LoRA на моём наборе изображений.
Затем в ячейке 4 задаются основные параметры проекта: путь к папке с датасетом, путь для сохранения обученных весов, специальный токен стиля и текстовый prompt, который описывает обучаемую концепцию. Именно здесь определяется, что модель должна усвоить стиль, основанный на живописи Каспара Давида Фридриха.
После этого в ячейке 5 происходит загрузка изображений для обучения. В эту папку добавляются подготовленные изображения, которые используются как датасет. Ячейка также умеет распаковывать .zip-архив, если изображения загружены архивом. Далее в ячейке 6 выполняется проверка загруженных изображений. Она показывает, сколько файлов было найдено, а также выводит несколько примеров изображений и их размеры. Это нужно для визуального контроля датасета перед обучением.
Основной этап происходит в ячейке 7. Здесь запускается обучение LoRA на основе Stable Diffusion XL и DreamBooth. В этой ячейке модель обучается на моём наборе изображений и начинает усваивать характерные особенности выбранного художественного стиля. Во время выполнения именно эта ячейка отвечает за сам процесс тренировки и сохранение результата в указанную папку.
После завершения обучения в ячейке 8 выполняется проверка содержимого выходной папки. Это позволяет убедиться, что веса модели действительно были сохранены и что обучение завершилось корректно.
Затем в ячейке 9 загружается базовая модель Stable Diffusion XL и подключаются обученные LoRA-веса. На этом этапе создаётся pipeline, который уже может использовать дообученный стиль для генерации новых изображений.


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


Сгенерированный результат
Негативный промпт во всех генерациях оставался одинаковым: «photo, realistic, 3d, render, modern, blurry, low quality».


Основной промпт строился вокруг обученного стилевого токена: «friedrichmood dark romantic landscape».


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


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


Итог
Нейросеть достаточно хорошо справилась с передачей общей атмосферы, цветовой гаммы и характерного настроения, связанного с живописью Каспара Давида Фридриха. Лучше всего ей удалось воспроизвести туманные пейзажи, холодный свет, мрачные пространства, мотив одиночества и романтическую меланхолию. При этом в более сложных композициях нейросеть иногда упрощала детали, делала формы менее точными или смешивала отдельные элементы пейзажа.
Были использованы: — Photoshop (для обрезки изображений и подготовки датасета) — Google Colab (для работы с кодом и обучения модели) — Stable Diffusion XL + DreamBooth LoRA (для обучения генеративной модели и последующей генерации изображений)






