Исходный размер 1148x1608

Обучение генеративной нейросети Stable Diffusion // Комикс

Идея проекта

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

Главная цель проекта — посмотреть, как нейросеть обучится определенному стилю и реализует его в дальнейшем

Мой стиль

big
Исходный размер 3508x4961

Обложка к моему комиксу

big
Исходный размер 1395x1041

[1]

Исходный размер 1395x1041

[2]

Исходный размер 1395x1041

[3]

Исходный размер 1395x1041

[4]

Исходный размер 1395x1041

[5]

Основные отличительные черты моего стиля это:

  1. Неровная обводка
  2. Акварельные мазки
  3. Не прорисованные лица и глаза
  4. Карандашные линии
  5. Белые пятна
  6. Карикатурность персонажей
  7. Большой акцент на природе

Подготовка

Я подготовила изображения размером 512 × 512 пикселей для обучения нейросети

Исходный размер 1280x902

Dataset

Список использованных в проекте инструментов:

— Stable Diffusion — обучение генеративной нейросети под свой стиль; — Google Colab — выполнение кода и генераций; — Hugging Face — получение токена для обучения нейросети, загрузка полученной модели на сайт; — Adobe Photoshop — обрезка изображений для подготовки датасета

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

Я загрузила все необходимые для работы библиотеки: Diffusers и DreamBooth.

Исходный размер 1446x1080

Первым делом я загрузила свой датасет в папку valerok. Подключила графический процессор T4 в Google Colab для эффективной работы. Команда nvidia-smi проверяет настройки графического процессора. Далее я подключила все необходимые библиотеки

Исходный размер 1232x489
Исходный размер 1476x794

Вторым шагом нужно было загрузить изображения с компьютера в среду, в которой я буду работать, в Google Colab. Затем нужно было посмотреть, что изображения действительно загрузились. Чтобы проверить свой датасет, я вывожу несколько картинок на экран. Это говорит о том, что датасет загружен и можно продолжать дальше

Исходный размер 1205x627

Библиотека BLIP используется для генерации описаний изображений на основе текстовых подсказок или контекста

Исходный размер 1378x731

Для описания своего стиля я выбрала префикс промпта «watercolor illustration in VALEROK style»

После запуска ячейки этот код сформировал мне файл metadata.jsonl., который содержал название картинок и промптов к ним, состоящих из префикса моего стиля и описание картинки от библиотеки BLIP

Исходный размер 1570x1109

После предварительной подготовки я запустила ячейку со скриптом с параметрами:

— dataset_name = «valerok» — output_dir="valerok_style_LoRA» -instance_prompt="watercolor illustration in VALEROK style» -resolution=512 -max_train_steps=500 -checkpointing_steps=250

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

Исходный размер 1280x747

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

Исходный размер 1582x1070
Исходный размер 1569x1062

После проверки работы модели, был проведён анализ сгенерированных изображений

Анализ результата

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, a girl in the forest walks along a path among the trees»‎

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

Исходный размер 1920x1080

prompt = «‎watercolor illustration in VALEROK style, a yellow bird sits on a branch in the forest»

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

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, view from above of the land, yellow hills and black mountainst»

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, view from above of the land, green spruce forest»

Исходный размер 1920x1080

prompt = «‎watercolor illustration in VALEROK style, view from above of the land, green spruce forest»

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

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, a bunch of black horses»

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

Исходный размер 1920x1080

мой стиль / нейросеть

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, a blue vase on the wooden table»

Генерация вазы с цветами вышла очень милой, несмотря на небольшие артефакты. Нейросеть обучилась моему покрасу

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, drawing of a woman with long red hair, woman standing by the river, full length»

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, a girl wearing dress, standing alone, holding a flower in her hand»

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

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

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, a brunette girl with a short hair wearing a hat with a white bow standing alone»

Исходный размер 1024x1024

prompt = «‎watercolor illustration in VALEROK style, the girl in the barley field is standing alone and picking up the barley»

Заключительной генерацией стал пейзаж ячменевого поля с моей героиней.

Резюмируя весь результат, я могу сказать, что обучила нейросеть своему стилю и, зная бы этот метод несколько лет назад, смогла бы нарисовать комикс намного быстрее, используя данные генерации как референсы или быстрые фоны

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