Идея проекта
На просторах интернета я наткнулась на работы южнокорейского иллюстратора Oyow (Ойю́).
Они меня очень вдохновили, и я захотела обучить генеративную нейросеть Stable Diffusion для создания изображений в их стиле.
Об Ойю́ и его работах
Для создания своих работ Ойю обычно использует программу фотошоп или трафаретную печать. Главная тема его произведений — отношения, которые он переводит во фрагментарные, но при этом значимые пейзажи. Помимо пейзажей, в работах Ойю часто можно встретить различные растения и цветы.

Примеры работ Ойю
Из работ Ойю был подготовлен датасет из 45-ти иллюстраций. Все изображения так же были изменены под необходимый для обучения формат (1800 х 1800)
Изначально датасет был больше и состоял из около 70 изображений. В нем были очень разные иллюстрации (простые вместе с очень детализированными), и все генерации получались примерно одинаковыми (объект + куча непонятных мелких деталей и узоров поверх него).

Результат генерации с первым датасетом из 70 разных по массе картинок (не очень удачно)
Убрав слишком детализированные изображения и переобучив модель с новым датасетом, удалось добиться желаемого результата.
Генерации Stable Diffusion
Процесс обучения модели
Прежде чем приступать к обучению, нужно было включить GPU в среде программирования и загрузить все необходимые библиотеки (bitsandbytes, transformers, accelerate, peft). С Github так же нужно было установить библиотеку diffusers и специальный скрипт train_dreambooth_lora_sdxl, выполняющий всю основную работу.
Далее необходимо было загрузить уже подготовленный датасет в Google Colab. С помощью кода была создана директория oyow, куда далее я вручную загрузила все картинки.
Чтобы убедиться, что все изображения были загружены корректно, была использована функция grid.
Код из Google Colab
После этого, необходимо было сгенерировать подписи к картинкам с помощью модели Blip, так для обучения модели, помимо самих изображений, необходимо иметь их исходный промт.
Код из Google Colab
Так как я обучаю модель на определенный стиль, мне нужно было создать префикс, который отсылал бы на него. В данном случае он выглядит так: a picture in oyow style,
После этого, все подписи к изображениям начинаются с этой фразы.
Код из Google Colab
Следующим этапом подготовки нужно было загрузить скрипт accelerate, который поможет сохранить обученную модель сразу на Hugging face.
Для этого, помимо загрузки самого скрипта, нужно зарегистрироваться на сайте Hugging face и получить специальных токен, который имеет права записи.
Код из Google Colab
Готово! Можно начинать обучение модели. Перед этим нужно установить библиотеку datasates, которая будет использовать так называемое кодовое слово, созданное чуть ранее. А именно: «a picture in oyow style, …»
После этого запускается основной код, обучающий модель. В нем я оптимизировала значения таким образом, чтобы процесс обучения не шел слишком долго и не сильно загружал память GPU.
Например, уменьшено разрешение картинок (с 1024 до 512 пикселей) и максимальное количество шагов обучения (с 1000 до 500). Таким образом, на процесс обучения ушло чуть меньше часа.
Код из Google Colab
После завершения обучения остается только сохранить модель на Hugging face и проверить сами генерации.
Для генерации изображений нужно загрузить исходную модель Stable Diffusion XL и присоединить к ней веса LORA, то есть до обученную модель под стиль Ойю.
Код из Google Colab
Осталось только написать промт и посмотреть, что же получилось. А получилось много замечательных изображений!
Генерации Stable Diffusion
Первым делом я захотела сгенерировать какие-нибудь сюжеты с людьми. Но, из-за того, что сами по себе работы Ойю достаточно абстрактные, не всегда модель генерировала нужные иллюстрации.
Иллюстрация Ойю (слева) и генерация Stable Diffusion (справа)




