
Цель
Данный проект посвящен процессу обучения генеративной нейросети. Основной задачей является генерация изображений в соответствии со стилем собственного датасета с целью внесения разнообразия в кадры, а также качественная оценка того, насколько нейросети удалось «понять» стиль пользователя.
Датасет

Анастасия Тучина, Sweet Thorns, 2022
В качестве датасета принято решение взять кадры анимационного проекта «Sweet Thorns», выполненного во втором модуле первого курса.
Анимация представляет собой авторскую интерпретацию истории любви Маленького Принца и Розы из произведения Антуана де Сент-Экзюпери.
Фрагмент датасета


Фрагмент датасета
Особенности визуального стиля исходного датасета: простая графика, черный однородный контур, плоская заливка без обозначения объемов; анатомия персонажей очень условна, а общая цветовая палитра характеризуется ограниченным сочетанием цветов.
Сгенерированные изображения
Серия полученных изображений направлена на то, чтобы расширить мир, уже сложившийся в анимационном проекте: добавить в него новых объектов, персонажей, а также сделать ландшафт более разнообразным.
Prompt: animation frame in tu4kina style, alien, space
Prompt: animation frame in tu4kina style, landsape
Если не указывать цвет неба голубым (как в датасете), то нейросеть генерирует его фиолетовым, что скорее соответствует цвету планеты.


Prompt: animation frame in tu4kina style, blue sky with planet | Prompt: animation frame in tu4kina style, blue sky
Prompt: animation frame in tu4kina style, mountains with sky on the background
Вместо зеленых деревьев нейросеть подрисовывает зеленых персонажей, тогда как вулканы, которые нейросеть распознает как горы, выходят гораздо более похожими на стиль кадров датасета, — с этой точки зрения мне очень понравилось, как нейросеть генерирует природу из анимации.


Prompt: animation frame in tu4kina style, mountains
Prompt: animation frame in tu4kina style, man
Общая проблема нейросетей — частичное или полное непонимание абстрактных обозначений, например, конечностей персонажей. Все сливается в неоформленные силуэты, в отличие от датасета, где позы персонажей более понятны, как и их условная анатомия.
Prompt: animation frame in tu4kina style, characters with mountains and sky on the background


Prompt: animation frame in tu4kina style, woman | Prompt: animation frame in tu4kina style, man
Prompt: animation frame in tu4kina style, girl with flower on her head


Prompt: animation frame in tu4kina style, character with flower
Несмотря на эксперименты с промптом, персонажи получаются похожими друг на друга, лишь периодически меняя цвета или размеры тела.
Prompt: animation frame in tu4kina style, girls with flower on their head and boys with mountains and sky on the background
Сгенерированные изображения с пониженным весом Lora
Prompt: animation frame in tu4kina style, spaceship in space, lora_scale = 0.7


Prompt: animation frame in tu4kina style, alien | Prompt: animation frame in tu4kina style, spaceship | lora_scale = 0.7
Из-за ограниченного числа объектов на изображениях датасета, нейросеть не способна генерировать то, чего она «не видела» во время обучения. Это решается понижением веса использованного стиля: общая концепция форм сохраняется, но объекты и цвета становятся разнообразнее.
Выводы
Таким образом, нейросети удалось повторить сам характер рисунка, который напоминает детские каракули, правда добиться более четких поз и силуэтов не выходит, так как сам датасет в этом смысле оказался не совсем содержательным для обучения.
Экспериментируя с весами, можно добиться более интересного результата, и в целом изображения получатся более понятными, подробными и разнообразными. Хотя сгенерированные ландшафты с зелеными вулканами получились интересными и приятными, отсутствие достаточного количества деталей в датасете, к сожалению, не позволяет использовать заданный стиль самостоятельно: необходимо сочетание с более подробными стилями.
Листинг
Загрузка датасета из файлов ПК.
Вывод того, что загрузили в новую папку Google Colab. Изображения выбирались по принципу разнообразия объектов, цветов и форм.
Добавляем префикс, с помощью которого будем в финале генерировать изображения обученной нейросетью.
Выставили настройки для обучения нейросети на указанном датасете.
Сохраняем стиль с заданным префиксом.
Приступаем к генерации изображений.
При желании выставляем «вес стиля», чтобы генерация была более разнообразной.
Материалы
Модель нейросети для обучения: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
Encoder: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix
Блокнот Google Colab: https://colab.research.google.com/drive/1eWe3fdnXp49FOmeTOb8HMcILsDnSb9-B?usp=sharing
Датасет: https://drive.google.com/drive/folders/18587GM1Zni2CGHglR9EvjPb0kQRM5pBz?usp=sharing