
Описание проекта
Проект вдохновлен японскими гравюрами Укиё-э — это разновидность ксилографии, где для нанесения изображения использовали бумагу и дерево. Художник рисовал эскиз на бумаге, затем изображение переносилось на дерево и вырезалось, далее наносились яркие краски, и всё отпечатывалось на подготовленной поверхности. У мастеров эпохи Эдо был схожий стиль изображения людей и природы. Мне было интересно обучить нейросеть генерировать лица японских дам и посмотреть можно ли бытовые сюжеты из гравюр перенести в современность.
Исходные изображения для обучения
Из гравюр был подготовлен датасет из 89-ти иллюстраций. Все изображения так же были изменены под необходимый для обучения формат (512×512), с учетом того, что лицо не должно быть как-то обрезано.
Процесс обучения
Перед обучением требовалось включить GPU в среде программирования и загрузить все необходимые библиотеки (bitsandbytes, transformers, accelerate, peft). С Github так же нужно было установить diffusers и специальный скрипт train_dreambooth_lora_sdxl, который используется для работы с нейросетями.
Подготовка и загрузка изображений
Подготовленный датасет нужно было загрузить в среду kaggle. Чтобы убедиться, что все изображения были загружены корректно, была использована функция grid с выводом 5 изображений из датасета.
Генерация подписей
Далее было необходимо сгенерировать подписи к картинкам с помощью модели Blip, так как для обучения модели необходимо текстовое описание.
Так как я обучаю модель на определенный стиль, я указала префикс: a photo collage in UKIYOE style. Все подписи к изображениям должны начинаться с этой фразы.
Сохранение в Hugging Face
Далее нужно было загрузить скрипт accelerate, который поможет сохранить обученную модель на Hugging face.
Для этого, нужно зарегистрироваться на сайте Hugging face и получить специальных токен и ввести его в kaggle.
Запуск обучения модели
Перед началом обучения требуется установить библиотеку datasates, которая будет использовать «a photo collage in UKIYOE style»
Можно запускать основной код, обучающий модель. Для оптимизации процесса я установила значения таким образом, чтобы процесс обучения не шел слишком долго и не загружал память GPU.
Например, уменьшено максимальное количество шагов обучения (с 1000 до 500). Таким образом, на процесс обучения ушло вместо 5 часов, около 2 часов.
Генерация изображений
Для начала сгенерируем привычные сюжеты для гравюр Укиё-э с изображением женщин в кимоно.
Сравним оригиналы и генерации нейросетью
Итог
Нейросеть отлично справляется с лицами на изображениях, где есть только одна женщина. Появляются видоизмененные иероглифы и другие фрагменты, которые были на фрагментах гравюр из датасета. С фоном справляется. Чуть хуже получаются складки и узоры на кимоно, лица женщин, когда их становится двое или больше. Сюжеты с птицей практически не получилось повторить, как и с другими животными. Возможно для этого нужно больше подобных изображений в датасете. Большая часть полученных изображений немного темнее по сравнению с оригиналами. В целом, нейросеть смогла обучиться стилю гравюр Укиё-э, и получается создавать похожие изображения.
Эксперименты
Одной из моих целей было попробовать перенести сюжеты с гравюр в среду не типичную для Японии и той эпохи. В этом блоке я экспериментирую с тем, чтобы давать в промте сюжеты, которые никогда бы не смогли сделать мастера эпохи Эдо.
Нью-Йорк нейросеть генерирует с трудом, вместо этого получаются женщины с более детальным фоном. Однако намеки на город на фоне присутствуют.
С лицами японского вокалоида Hatsune Miku и персонажами из аниме справляется тяжелее. Предполагаю, что это из-за того, что их стилизованные лица нейросети тяжело совместить с лицами женщин из датасета с гравюрами. Удивительно, что получается окрашивать волосы в другой цвет.
Вывод
Итак, мне удалось обучить модель генерировать изображения в стиле гравюр Укиё-э эпохи Эдо. Она смогла уловить его стилистические особенности:
* цветовая гамма (хотя по сравнению с оригинальными изображениями выглядит тусклее) * «шум» на картинках, фрагменты иероглифов и паттерны * стилистика изображения лица
Очевидно, что нейросети не смогут полностью повторить мастерство художников, но их можно использовать для поиска вдохновения и новых решений, которые можно реализовать в будущем, и для интереса.
Список использованных материалов:
* Stable Diffusion * Hugging Face * Kaggle * Adobe Photoshop (для редактирования изображений и создания коллажей)