
Идея проекта
На просторах интернета я наткнулась на работы южнокорейского иллюстратора 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 (справа)
Тем не менее, некоторые из них получились довольно-таки интересные.
Промты:
✿ a picture in oyow style, a lot of ferns, under them there is one small person that is resting (слева) ✿ a picture in oyow style, people in blue clothes hug each other, holding white flowers in their hands. blue background (посередине) ✿ a picture in oyow style, portrait of a girl with a beautiful white flower in her hair (справа)
Генерации Stable Diffusion
Поняв, что образы людей у модели получаются не всегда удачными, я попробовала сгенерировать что-то другое, например, цветы, пейзажи и немного животных. Здесь все получилось более чем замечательно.
Промты:
✿ a picture in oyow style, beautiful white tulips on a pink background (слева) ✿ a picture in oyow style, a white daisies with a yellow center (справа)
Генерации Stable Diffusion
Промты:
✿ a picture in oyow style, winter landscape, everything is white, blue sky (слева) ✿ a picture in oyow style, the sea, dawn and white seagulls (посередине) ✿ a picture in oyow style, blue mountains, lots of beautiful white flowers below (справа)
Генерации Stable Diffusion
Промты:
✿ a picture in oyow style, a beautiful sunset, yellow sun and a field of flowers (слева) ✿ a picture in oyow style, a lot of beatiful koi carps (справа)
Генерации Stable Diffusion
Эксперимент!
Завершив основную работу с обучением модели и генерации картинок, пришла идея выяснить:
А знала ли исходная модель стиль Ойю? Получилось ли бы создать такие изображения без дообучения?
Для ответа на данный вопрос достаточно было как обычно загрузить исходную модель Stable Diffusion, но без дообученных весов LORA. После этого сразу же можно было задавать промт. Поскольку я хотела узнать, получится ли добиться похожих иллюстраций, созданных дообученной моделью, промты я использовала те же самые. А теперь взглянем на результат:
Генерация исходной модели Stable Diffusion VS Генерация дообученной модели Stable Diffusion
Можно заметить, что у генераций исходной модели есть какой-то стиль, но он вовсе не похож на то, что мне нужно было. Из этого следует, что, для того, чтобы добиться какого-то необычного стиля, как, например, стиль Ойю, необходимо самостоятельно дообучить модель.
Вывод
Итак, мне удалось обучить модель генерировать изображения в стиле южнокорейского иллюстратора Ойю. Она смогла уловить его стилистические особенности, такие как:
✿ «рваный» контур ✿ «шум» на картинках, текстура ✿ цветовая палитра (хотя в сравнении с исходными изображениями местами выглядит немного тускловатой, возможно, из-за того же шума)
Очевидно, что такие нейросети не смогут полностью заменить художника, однако, их можно использовать для разработки концепций, которые автор самостоятельно сможет доработать и реализовать в своих новых иллюстрациях.
Список использованных в проекте инструментов:
✿ Stable Diffusion ✿ Hugging Face ✿ Google Colab ✿ Pixelcut (восстановление окружения в некоторых изображениях, например, для обложки) ✿ Adobe Photoshop (для создания коллажей)