Исходный размер 1140x1600

Один день персонажа LUMI

Введение

В основе проекта — обучение генеративной нейросети Stable Diffusion XL распознавать и воспроизводить уникальный стиль моего иллюстративного персонажа. Датасет состоит из 20 изображений одного и того же нарисованного вручную персонажа в различных ситуациях: с очками, телефоном, зонтиком, цветком, волшебной палочкой, в задумчивости и т.д. Все изображения выполнены в едином стиле: плоская 2D иллюстрация, лаконичные линии, простой фон, характерная пластика позы.

Исходный размер 2958x1329

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

Исходный размер 2958x1256

Исходные изображения

Исходный размер 2958x1256

Исходные изображения

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

Техника обучения: DreamBooth с адаптером LoRA поверх базовой модели stabilityai/stable-diffusion-xl-base-1.0. DreamBooth позволяет «вшить» конкретный объект/стиль в модель с помощью всего нескольких десятков примеров, а LoRA делает этот процесс эффективным по памяти и времени.

Описание обучения

1. Загрузка датасета и установка библиотек

Датасет состоит из 20 PNG-изображений, созданных в едином стиле (flat 2D illustration). Все изображения показывают одного персонажа в различных позах и ситуациях. Изображения подготовлены с простым фоном, что упрощает задачу обучения. Датасет загружен как Kaggle Dataset и подключён через Add Data.
Исходный размер 2782x1230

Фрагменты кода

Проверка GPU. Для обучения используется GPU P100 (16 ГБ памяти) на платформе Kaggle.

Потом устанавливаем необходимые библиотеки.

diffusers — основная библиотека HuggingFace для работы с диффузионными моделями bitsandbytes — квантизация весов до 8-бит (экономия GPU-памяти) transformers — работа с языковыми и vision-моделями accelerate — ускорение обучения, поддержка mixed precision peft — Parameter-Efficient Fine-Tuning, включает поддержку LoRA

Исходный размер 2782x1230

Фрагменты кода

2. Генерация подписей (BLIP)

Использовался Salesforce/blip-image-captioning-base для автоматического описания каждого изображения. К каждой подписи добавлен префикс "flat 2D illustration, LUMI character, " — это создаёт связь между токеном и стилем. Результат: файл metadata.jsonl с 20 парами изображение–подпись.
Исходный размер 2781x1485

Фрагменты кода

3. Обучение (DreamBooth + LoRA)

  • Базовая модель: stabilityai/stable-diffusion-xl-base-1.0
  • Адаптер: LoRA (rank 4, применяется к attention-слоям UNet)
  • 1000 шагов обучения на GPU P100 (~4.5 часа)
  • Использованы все техники экономии памяти: gradient checkpointing, fp16, 8-bit Adam
  • Ноутбук запускался через Save Version на Kaggle — фоновое выполнение без привязки к браузеру
  • Результат: файл pytorch_lora_weights.safetensors (~22 МБ) сохранён в /kaggle/working/
Исходный размер 2781x1485

Фрагменты кода

4. Инференс и генерация серии

  • Загрузка базовой SDXL + LoRA-адаптер из /kaggle/working/
  • 8 промптов, описывающих один день персонажа
  • По 30 шагов диффузии на каждое изображение
  • Итоговый коллаж сохранён в /kaggle/working/Nataly_NeuroCharacter/lumi_series_final.png
0

Фрагменты кода

5. Загрузка на huggingfacehub

Затем модель подгружается на huggingfacehub, где доступна для использования и генерации новых изображений.

Генерации

Параметры генерации: num_inference_steps=30 (баланс между качеством и скоростью) guidance_scale=7.5 - степень следования текстовому промпту (стандартное значение для детальных промптов)

Структура промпта: Каждый промпт построен по схеме: [стилевой префикс] + [токен персонажа] + [описание действия/ситуации] + [контекст фона] Пример: "flat 2D illustration, LUMI character, sitting and reading a book, cozy, simple background"

Стилевой префикс "flat 2D illustration" помогает базовой модели оставаться в нужном визуальном режиме, а токен "LUMI character" активирует обученный LoRA-адаптер.

Исходный размер 2782x1230

Утро: кофе / День: работа

prompt = "flat 2D illustration, LUMI character, holding a cup of coffee, morning, simple background"

promt = "flat 2D illustration, LUMI character, sitting at a desk with a laptop, working, simple background"

Исходный размер 2782x1230

Прогулка / Чтение

prompt = "flat 2D illustration, LUMI character, walking in a park, holding an umbrella, outdoors, simple background"

prompt = "flat 2D illustration, LUMI character, sitting and reading a book, cozy, simple background"

Исходный размер 2782x1230

Шоппинг / Встреча

prompt = "flat 2D illustration, LUMI character, holding shopping bags, happy, simple background"

prompt = "flat 2D illustration, LUMI character, waving hello, smiling, simple background"

Исходный размер 2782x1230

Вечер: музыка / Ночь

Один день персонажа LUMI
Проект создан 18.03.2026
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше