Исходный размер 554x768

LoRA НЕВИДАЛИ?

Проект принимает участие в конкурсе

Приветствую, путник! Шлю тебе лучи энергии такой же кислотно-слепящей, как солнца в наших Неви-Далях

big
Исходный размер 2264x1427

идея

Неви-дали — это идея нарративной RPG с открытым миром, построенная по принципам настольных ролевых игр (D&D). Игра разворачивается во вселенной, вдохновленной древним китайским трактатом «Каталог Гор и Морей» в переосмыслении Анри Волохонского («Горы и реки»). Открытый мир, множество проработанных персонажей и уникальных локаций создают идеальную среду для обучения модели ИИ выдержанной стилистике.

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

подготовка среды

Для подготовки к обучению модели я выполнила команду nvidia-smi, чтобы проверить, какая видеокарта доступна, и убедиться, что среда готова к тяжелым вычислениям. Затем я установила все необходимые библиотеки: bitsandbytes для эффективного использования памяти, transformers и accelerate для работы с моделями, а также peft (Parameter-Efficient Fine-Tuning) — библиотеку, которая реализует метод LoRA. Отдельно я установила diffusers из репозитория GitHub и скачала специальный скрипт train_dreambooth_lora_sdxl.py, который будет управлять всем процессом обучения.

работа с датасетом

post

Каталог «Гор и морей» описывает реальную и мифическую географию Китая и соседних земель и обитающих там созданий (также и существующих и вымышленных). Я собрала датасет на основе своих рисунков, разработанных по описаниям из этого каталога. Получился набор из 19 изображений с различными персонажами. Изображения были обрезаны под формат 1:1.

Исходный размер 5262x3149

изображения из датасета

Датасет с моими изображениями получил имя nevidali_dataset. Я создала эту директорию в среде Colab, чтобы иметь место для хранения данных. Затем я загрузила туда изображения и написала простую функцию image_grid, которая позволила мне визуально оценить датасет. Я вывела сетку из 10 изображений, чтобы убедиться, что все файлы загрузились корректно и качество исходников соответствует моим ожиданиям.

Для обучения нейросети недостаточно просто скормить ей картинки. Нужно объяснить, что именно на них изображено. Ручное подписывание 50-100 изображений — дело утомительное. Поэтому я автоматизировала этот процесс, использовав модель BLIP (Bootstrapping Language-Image Pre-training). Я загрузила эту модель на GPU и написала функцию caption_images, которая принимает путь к изображению и возвращает его текстовое описание. Это позволило мне быстро и единообразно описать весь датасет.

Я придумала специальный префикс, который описывает мой стиль. Далее я написала скрипт, который прошелся по всем файлам в папке nevidali_dataset, сгенерировал для каждого из них описание с помощью BLIP и соединил его с моим префиксом. В итоге для каждого изображения получился промпт вида: префикс [описание от BLIP]». Все эти пары (имя файла и промпт) были сохранены в файл metadata.jsonl, который стал инструкцией для модели во время обучения.

Исходный размер 1270x144

обучение

Я запустила скрипт train_dreambooth_lora_sdxl.py с рядом тщательно подобранных параметров. В качестве основы была выбрана мощная модель stabilityai/stable-diffusion-xl-base-1.0. Я указала путь к моему датасету и сказал скрипту искать промпты в колонке «prompt» файла metadata.jsonl. Я выбрала разрешение 512×512, размер батча 4 и скорость обучения 1e-4. Ключевым параметром здесь было max_train_steps=800 — именно столько шагов оптимизации достаточно, чтобы модель усвоила стиль, но не переобучилась. После 50 минут ожидания (зависящих от GPU) процесс завершился.

Финальный тест. Чтобы проверить, насколько хорошо модель усвоила стиль, я придумала 5 самых необычных и абстрактных промптов, которые не имеют аналогов в обучающем датасете. Это были описания странных животных. Я сгенерировала изображения в высоком разрешении 768×768. Результат превзошел ожидания — нейросеть не просто изобразила описанных существ, но и сделала это в моем уникальном стиле: яркие, контрастные цвета, абстрактные формы и характерная текстура. Все сгенерированные картинки были сохранены и выведены на экран для финального обзора.

результат

5 тестовых промтов для проверки:

a snail smoking a cigar a dog with a feathered head a rubber whale a snail smoking a cigar a dog with a feathered tail

0

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

Далее для финальных промтов я использовала переводы описаний из «Гор и рек» Анри Волохонского.

Для этих промтов были использованы описания:

  1. Шмели там с острым завершением. Язык у них выворочен/ Bumblebees there with pointed ends. Their tongues are turned out.
  2. Или Совы с тремя глазами и ушами, которых свист напоминает хрип/ Or Owls with three eyes and ears, whose whistle resembles a rasp.

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

Исходный размер 768x768

Но если промпт четкий, не абсурдный (ну может совсем чуть-чуть), то персонаж выходит также четко и даже соответствует описанию:

Там Ежи, цветом словно огонь/ There are Hedgehogs the color of fire

Рыба, похожая на лягушку. Голова у ней рыбья, а тело свиное/ A Fish resembling a frog. Its head is fish-like, body pig-like// Пятнистый бык или жирный гепард/ A spotted bull or fat cheetah

промты

А Заяц с птичьим клювом обладает глазами совы и хвостом змеи/ And a Hare with a bird’s beak has owl eyes and a snake’s tail

Три зеленых зверя. Туловища их срослись. Называют их поэтому «Сроши»/ Three green beasts. Their bodies are fused. That’s why they’re called «Sroshi

А Заяц с птичьим клювом обладает глазами совы и хвостом змеи/ And a Hare with a bird’s beak has owl eyes and a snake’s tail//

Промты:

Особая рыба: зовется «Лосось» потому что сосет лосей/ A special fish: called «Salmon» because it sucks elk

Зверь с конским телом, птичьими крыльями, человечьим лицом и змеиным хвостом/A beast with a horse’s body, bird wings, human face, and snake tail

Странная тварь: откинутый череп, стоячие уши, свиное рыло под человечьим челом, тело единорога и большие сросшиеся ноги с раздвоенными копытами как у вепря/ A strange creature: thrown-back skull, erect ears, pig’s snout under a human forelock, unicorn’s body and large fused legs with cloven hooves like a boar’s

Змея о шести ногах, и крыла у нее четыре/ A six-legged Snake with four wings

Быки зеленовато-черной окраски/ Greenish-black Bulls

За горою Небесный Столб водится гнедой Конь без головы/ Beyond the Heavenly Pillar Mountain lives a bay Horse without a head

Тварь вроде зайца с лицом как у мыши. Имя ей «Летучая Мышь»/ A creature like a hare with a mouse’s face. It’s called «Flying Mouse.»

0

выводы

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

модели, использованные в проекте:

Проект был создан с использованием моделей:

Stable Diffusion XL 1.0 — базовая архитектура для генерации изображений высокого разрешения

BLIP (Salesforce/blip-image-captioning-base) — автоматическая генерация текстовых описаний (капшенов) для изображений обучающего датасета.

DreamBooth + LoRA — метод персонализации модели под уникальный стиль с низкоранговой адаптацией (Low-Rank Adaptation).

VAE (madebyollin/sdxl-vae-fp16-fix) — оптимизация использования видеопамяти и повышение качества декодирования изображений в формате fp16.

8-bit Adam (bitsandbytes) — оптимизатор с 8-битным квантованием, снижающий потребление видеопамяти.

Accelerate + Gradient Checkpointing + Mixed Precision (fp16) — комплексная оптимизация обучения для экономии памяти и ускорения вычислений.

Рerplexity — перевод промтов.

Deepseek — корректировка кода.

LoRA НЕВИДАЛИ?
Проект создан 24.03.2026
Мы используем файлы cookies для улучшения работы сайта и большего удобства его использования. Более подробную информац...
Показать больше