
Процесс обучения модели Stable Diffusion XL (SDXL) с использованием LoRA (Low-Rank Adaptation) для создания изображений в стиле цифрового художника Tuukzs.

Изображения художника, включенные в датасет
Tuukzs, настоящее имя которого Артур Мачадо, — это талантливый бразильский художник, завоевавший признание благодаря своим вдохновляющим абстрактным и психоделическим произведениям.


Изображения художника, включенные в датасет
Основные особенности стиля художника Tuukzs — это яркие цвета и абстрактность, соединённая с фигуративностью. В его работах исследуются темы абстракции и психоделии. Поэтому основной задачей было сохранить цветовую гамму в сочетании с размытыми образами.

Изображения, сгенерированные обученной моделью
Первое, что следует сделать, чтобы начать обучать модель, — это установить библиотеки: bitsandbytes, transformers, accelerate, peft — для эффективного обучения. diffusers — библиотека от Hugging Face для работы с диффузионными моделями. Загрузка скрипта train_dreambooth_lora_sdxl.py для обучения LoRA.

Изображения художника, включенные в датасет
Второе, подготовка данных: Собрав 50 изображений с сайта художника, создается папка ./tuukzs/, куда загружаются изображения. Изображения предпросматриваются в виде сетки.


Изображения художника, включенные в датасет
Третье, генерация подписей (капчей) к изображениям: Используется модель BLIP (Salesforce/blip-image-captioning-base) для автоматического описания загруженных изображений. К подписям добавляется префикс «photo collage in TUUKZS style,». Метаданные сохраняются в metadata.jsonl.
import requests
from transformers import AutoProcessor, BlipForConditionalGeneration
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
blip_processor = AutoProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
blip_model = BlipForConditionalGeneration.from_pretrained(
"Salesforce/blip-image-captioning-base",
torch_dtype=torch.float16
).to(device)


Изображения, сгенерированные обученной моделью
В процессе обучения модели были выделены несколько тем для генерации изображений, включая портреты девушек, птиц, цветы и пейзажи. Эти темы также являются ключевыми для художника Tuukzs.
Изображение, сгенерированные обученной моделью
Изображения, сгенерированные обученной моделью
Четвертое, обучение LoRA: Запускается обучение с помощью train_dreambooth_lora_sdxl.py. Используется предобученная модель Stable Diffusion XL 1.0. Применяется 8-bit Adam для оптимизации памяти. Разрешение изображений — 512×512, batch size = 2, 500 шагов обучения. LoRA обучается для адаптации SDXL под стиль «TUUKZS».


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


Изображения, сгенерированные обученной моделью
Пятое, сохранение и загрузка модели: Обученная LoRA сохраняется в папку tuukzs_style_LoRA. Модель загружается на Hugging Face Hub.
!ls tuukzs_style_LoRA
from huggingface_hub import whoami
from pathlib import Path
output_dir = "tuukzs_style_LoRA"
username = whoami(token=Path("/root/.cache/huggingface/"))["name"]
repo_id = f"{username}/{output_dir}"
from train_dreambooth_lora_sdxl import save_model_card
from huggingface_hub import upload_folder, create_repo
repo_id = create_repo(repo_id, exist_ok=True).repo_id
Изображения, сгенерированные обученной моделью
В процессе преодоления вышеперечисленных трудностей удалось достичь важных целей: удалось сохранить первоначальную цветовую палитру, заложенную в стиле художника, и почти неизменную размытость образов.


Изображения, сгенерированные обученной моделью
Изображение, сгенерированные обученной моделью


Изображения, сгенерированные обученной моделью
Шестое, генерация изображений: В конце загружается обученная LoRA и применяется к SDXL для генерации изображений в стиле «TUUKZS».
import torch
from diffusers import DiffusionPipeline, AutoencoderKL
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
vae=vae,
torch_dtype=torch.float16,
variant="fp16",
use_safetensors=True
)
pipe.load_lora_weights(repo_id)
_ = pipe.to("cuda")
Изображение, сгенерированные обученной моделью
Изображения, сгенерированные обученной моделью
Изображение, сгенерированные обученной моделью


Изображения, сгенерированные обученной моделью
Изображение, сгенерированные обученной моделью


Изображения, сгенерированные обученной моделью
Изображения, сгенерированные обученной моделью
Изображение, сгенерированные обученной моделью
В заключение исследования можно утверждать, что несмотря на значительные достижения в области нейросетевых технологий и их способности генерировать визуальные произведения искусства, они все же не могут в полной мере воспроизвести уникальный стиль художника. Нейросети способны анализировать и имитировать определенные элементы стиля, такие как цветовые палитры, композиционные решения и текстуры. Однако полностью скопировать стиль художника очень тяжело.
Изображения, сгенерированные обученной моделью
Использованные нейросетевые инструменты и модели:
Stable Diffusion — генерация изображений BLIP — генерация описаний для изображений в датасете Hugging Face — сохранение обученной LoRA-модели AirBrush — улучшение качества изображений художника Tuukzs