Original size 1240x1750

KOVËR: дообучение Stable Diffusion

PROTECT STATUS: not protected
34

Концепция проекта

Этот проект родился после моей январской поездки в Стамбул. Прогуливаясь по центральному Гранд-базару, я оказался впечатлён визуальным изобилием ковров: десятки узоров, цвета, симметрии, блеск золота и мягкость приглушённых тонов.

Меня вдохновила идея сохранить и интерпретировать эту эстетику через современный инструмент — генеративную нейросеть

big
Original size 2269x978

Фотографии с поездки в Стамбул

KOVËR — это исследовательский визуальный проект, в котором я обучил генеративную нейросеть Stable Diffusion XL на собственной коллекции ковров. Целью же этого проекта является создание уникального визуального стиля и исследование, как нейросеть может интерпретировать декоративные формы.

Обучение нейросети

big
Original size 2269x1505

Исходные изображения паттернов ковров

Все ковры построены по симметричной схеме — центральный медальон, повторяющийся орнамент по полю и бордюры. Было собрано 43 изображения с ковровыми узорами для анализа и последующего обучения нейросети. Все изображения были вручную приведены к квадратному формату (1:1) и имели хорошее качество, что позволило создать стабильный и выразительный датасет с разнообразными примерами орнаментальных композиций и цветовых решений, характерных для классических ковров.

Original size 2716x986

Сначала я установил все нужные библиотеки, чтобы можно было дообучать нейросеть Stable Diffusion. Подключил Google Диск, где у меня лежат изображения ковров, и скачал готовый скрипт для обучения модели — train_dreambooth_lora_sdxl.py, чтобы с ним работать дальше. Проверил, что файл загрузился.

Original size 2710x1544

Здесь я сначала подключаю папку с изображениями ковров и считаю сколько файлов в ней, визуализирую первые шесть ковров в виде сетки, чтобы убедиться, что всё ок с датасетом. Далее я подключаю модель BLIP от Hugging Face, которая автоматически генерирует подписи к изображениям. Мне это нужно, чтобы потом использовать эти описания как подсказки при обучении модели.

Original size 2724x714

Здесь я создаю файл с описаниями к каждому изображению. Я беру каждую картинку ковра, прогоняю её через модель BLIP, которая генерирует подпись, добавляю к ней префикс «photo of kover pattern, “ и сохраняю результат в формате JSONL. Это нужно, чтобы потом использовать эти подписи как обучающие подсказки для нейросети.

Original size 2720x1392

Здесь я сначала создаю новую папку kover_images_only, куда копирую только изображения (без метаданных), чтобы не было ошибок при обучении. А дальше запускаю команду обучения нейросети через accelerate launch, указывая все параметры: путь к предобученной модели, VAE, датасету, куда сохранить результат, какие подсказки использовать, разрешение, размеры батча и прочее.

Original size 2700x812

Здесь я настраиваю пайплайн генерации изображений: подключаю предобученную модель и VAE, затем загружаю дообученные веса LoRA (kover_lora) и активирую их с масштабом 0.8. После этого переношу пайплайн на видеокарту (cuda), чтобы можно было генерировать новые ковры уже в моем стиле.

А теперь можно и генерировать наши ковры

Полученная генерация

Original size 2893x886

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

Original size 2893x886

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

Original size 2843x886

Особенно интересно, как модель адаптировала палитру, фиолетовый ковер выглядит богато и необычно, а чёрный — классически и выразительно. Получилось разнообразно, но в рамках общего стилистического кода.

Original size 2837x855

Здесь нейросеть выдала особенно выразительные и смелые вариации ковров. Первый ковер синие с концентрическими кругами и сложной сеткой узора напоминает мандалу он выглядит почти гипнотически. Второй зелёный с лабиринтоподобным паттерном получился более графичным и современным. Третий насыщенно-оранжевый с тёмными акцентами отсылает к классическим восточным коврам, но с более смелой палитрой.

post

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

Однако в процессе генерации возникли и некоторые проблемы. Местами нейросеть теряла чёткость или плавила узор, делая его размытым или нечитабельным. Иногда нарушалась симметрия, или вместо орнамента появлялись абстрактные пятна. Это особенно проявлялось на ранних этапах обучения, а также в случаях, когда промпты были слишком сложными или неструктурированными.

Описание применения генеративной модели

1. Stable Diffusion XL Base 1.0 Основная модель генерации изображений https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0 2. VAE-фикс для SDXL от madebyollin Использовал для улучшенного сжатия и декодирования латентного пространства https://huggingface.co/madebyollin/sdxl-vae-fp16-fix 3. BLIP image captioning base от Salesforce Применял для генерации текстовых описаний к изображениям ковров https://huggingface.co/Salesforce/blip-image-captioning-base 4. Diffusers (репозиторий) Библиотека для работы с генеративными моделями, в том числе SDXL и LoRA https://github.com/huggingface/diffusers

В процессе работы над проектом KÖVER активно использовалась языковая модель ChatGPT 4O (от OpenAI). Она применялась для составления текстовых описаний (промптов) к изображениям ковров, используемых на этапе генерации новых визуальных образов с помощью дообученной модели SDXL

Original size 988x70

Пример запроса к Chat GPT для генерации промта.

Работа проводилась в Google Colab с использованием кастомного пайплайна, построенного на базе официального примера Hugging Face, адаптированного под нужды проекта.

Дополнительные материалы

KOVËR: дообучение Stable Diffusion
34