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

Основные отличительные черты моего стиля это:
1. Неровная обводка 2. Акварельные мазки 3. Не прорисованные лица и глаза 4. Карандашные линии 5. Белые пятна 6. Карикатурность персонажей 7. Большой акцент на природе
Подготовка
Я подготовила изображения размером 512 × 512 пикселей для обучения нейросети
Список использованных в проекте инструментов:
— Stable Diffusion — обучение генеративной нейросети под свой стиль; — Google Colab — выполнение кода и генераций; — Hugging Face — получение токена для обучения нейросети, загрузка полученной модели на сайт; — Adobe Photoshop — обрезка изображений для подготовки датасета
Описание процесса обучения
Я загрузила все необходимые для работы библиотеки: Diffusers и DreamBooth.
Первым делом я загрузила свой датасет в папку valerok. Подключила графический процессор T4 в Google Colab для эффективной работы. Команда nvidia-smi проверяет настройки графического процессора. Далее я подключила все необходимые библиотеки
Вторым шагом нужно было загрузить изображения с компьютера в среду, в которой я буду работать, в Google Colab. Затем нужно было посмотреть, что изображения действительно загрузились. Чтобы проверить свой датасет, я вывожу несколько картинок на экран. Это говорит о том, что датасет загружен и можно продолжать дальше
Библиотека BLIP используется для генерации описаний изображений на основе текстовых подсказок или контекста
Для описания своего стиля я выбрала префикс промпта «watercolor illustration in VALEROK style»
После запуска ячейки этот код сформировал мне файл metadata.jsonl., который содержал название картинок и промптов к ним, состоящих из префикса моего стиля и описание картинки от библиотеки BLIP
После предварительной подготовки я запустила ячейку со скриптом с параметрами:
- dataset_name = «valerok» - output_dir="valerok_style_LoRA» -instance_prompt="watercolor illustration in VALEROK style» -resolution=512 -max_train_steps=500 -checkpointing_steps=250
Так было сокращено время, затраченное на тренировку нейросети, и мне пришлось ждать всего полчаса.
После завершения обучения модель сохранилась на Hugging Face. Наступило время проверить, насколько она обучилась, используя различные промпты для генерации изображений
После проверки работы модели, был проведён анализ сгенерированных изображений
Анализ результата
Сначала я решила не рисковать и загрузила промпт, который наиболее всего описывает мой стиль, а именно лес и девочку. Нейросеть хорошо справилась с карандашными линиями, акварельным покрытием и текстурой бумаги для водных красок, но по какой-то причине, решила добавить недорисованного второго персонажа рядом. Несмотря на такой артефакт, я считаю, что нейросеть смогла обучиться моему стилю ввиду небольшого датасета
Как я и предполагала, нейросеть хуже всего справляется с лицами и глазами, поэтому в большинстве случаев она просто рисует пустую область, либо кривой оутлайн, однако все равно четко выдерживает цветовую гамму. Больше всего мне понравился неравномерный покрас и то, как нейросеть использует белые белые пятна, имитирующие разводы, повторяющие мой стиль. С этим, по моему мнению, она справляется лучше всего
Так же нейросеть отлично справляется с природными пейзажами. Ради любопытства я попробовала сгенерировать пейзаж гор, опасаясь, что она нарисует их зеленоватыми, но она справилась. Виден четко-узнаваемый рельеф. Плюсом, очень грамотно, выдерживается тон и подтон цвета, будто нейросеть — самый настоящий художник
Любопытно, что у нейросети намного лучше получается рисовать животных и птиц, нежели чем людей. Я решила попробовать сгенерировать табун лошадей и она акварельной техникой смогла передать нечеткие, но зато очень даже узнаваемые формы
Генерация вазы с цветами вышла очень милой, несмотря на небольшие артефакты. Нейросеть обучилась моему покрасу
Как и ожидалось, лица вышли хуже всего. Промелькивало несколько удачных генераций с более менее понятными лицами, но мне кажется, это больше случайность. Возможно это связано с моим стилем, в котором присутствует только одна героиня, и на большинстве кадров ее лицо прикрыто волосами
Ради интереса я решила сгенерировать изображение персонажа, которого в комиксе у меня нет. Мне захотелось, чтобы нейросеть нарисовала мне девочку с короткими темными волосами и с бантиком на голове, но генерация не получилась. Несмотря на хорошие задатки волос и банта, нейросеть не справилась с лицом и телом, нарисовав что-то наподобие платья
Заключительной генерацией стал пейзаж ячменевого поля с моей героиней.
Резюмируя весь результат, я могу сказать, что обучила нейросеть своему стилю и, зная бы этот метод несколько лет назад, смогла бы нарисовать комикс намного быстрее, используя данные генерации как референсы или быстрые фоны