Original size 554x768

LoRA НЕВИДАЛИ?

PROTECT STATUS: not protected
The project is taking part in the competition

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

Original size 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.

Original size 5262x3149

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

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

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

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

Original size 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.

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

Original size 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 НЕВИДАЛИ?
Project created at 24.03.2026
Loading...
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more