Original size 1148x1608

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

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

Идея проекта

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

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

Мой стиль

big
Original size 3508x4961

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

Original size 1395x1041

[1]

Original size 1395x1041

[2]

Original size 1395x1041

[3]

Original size 1395x1041

[4]

Original size 1395x1041

[5]

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

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

Подготовка

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

Original size 1280x902

Dataset

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

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

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

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

Original size 1446x1080

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

Original size 1232x489
Original size 1476x794

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

Original size 1205x627

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

Original size 1378x731

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

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

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

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

Original size 1280x747

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

Original size 1582x1070
Original size 1569x1062

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

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

Original size 1024x1024

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

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

Original size 1920x1080

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

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

Original size 1024x1024

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

Original size 1024x1024

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

Original size 1920x1080

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

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

Original size 1024x1024

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

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

Original size 1920x1080

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

Original size 1024x1024

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

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

Original size 1024x1024

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

Original size 1024x1024

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

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

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

Original size 1024x1024

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

Original size 1024x1024

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

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

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

Обучение генеративной нейросети Stable Diffusion // Комикс
4
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more