Идея проекта
Укиё-э (浮世絵) — «картины изменчивого мира» — направление японской живописи, расцветшее в период Эдо (XVII–XIX века). Эти работы отличает особая эстетика: лаконичность линий, плоскостность, декоративность, выразительные силуэты и тонкая работа с цветом. Художники укие-э создали визуальный язык, который до сих пор влияет на мировое искусство — от импрессионистов до современной анимации.
Целью проекта стало обучение генеративной модели Stable Diffusion созданию изображений в стилистике укиё-э, чтобы затем сгенерировать серию портретов и сцен в этой стилистике. Основной фокус — передача характерного способа изображения лиц и фигур, свойственного японской классической гравюре.
Исходники
Для обучения был собран датасет из 133 скадрированных 1:1 изображений, основанный на работах классических мастеров укиё-э: большей их части более сотни лет, и гравюры находятся в общественном достоянии. Важно было не просто скопировать стиль, а «научить» нейросеть его внутренней логике: как строятся лица, как работают контуры и цветовые пятна.




Графичность, стилизация, плоскостность
Укие-э оперирует четкими контурами и плоскостями — это нейросети «уловить» легче, чем сложную светотень. Лица в укие-э упрощены, но выразительны, а сам стиль очень узнаваемый — это, в частности, повлияло на выбор темы для проекта.



Результат

Сгенерированная серия довольно успешно передает ключевые черты укие-э: в стилизации лица — характерная форма глаз (узкие, миндалевидные, с выразительным взглядом), упрощенная моделировка (минимальные тени, лицо строится на контурах), эмоции; композиционные приемы — крупные планы, классический формат портретов, динамичные позы (танцоры, актеры в характерных движениях), в фонах — узнаваемые японские мотивы. Цвета приглушенные, естественные, с акцентными пятнами.


Сгенерированные «гравюры» довольно разнообразны: нейросети удается передать различные ракурсы, позы, динамику-статику. На различных картинах разные времена года, что соответствует важной для укиё-э и японского менталитета в целом теме сезонности. Безусловно, есть и проблемные моменты: модели сложно даются руки (из-за относительно небольшого объема базы и, в частности, из-за того, что они и на настоящих гравюрах выглядят довольно специфично) и лица на дальнем плане, потому что датасет был в первую очередь ориентирован на портреты.
прим.: обложка проекта также была сгенерирована, но частично изменена вручную в редакторе изображений для удаления самых явных артефактов


Код
Проверяем, есть ли видеокарта (GPU) и сколько у нее памяти. так как без GPU обучение нейросети невозможно. Скачиваем и устанавливаем готовые библиотеки, скрипт для обучения.
Подгружаем инструменты: работа с файлами, zip-архивами, изображениями, отрисовка картинок. Загружаем и распаковываем архив с датасетом из фотографий. Показываем первые 6 фото в виде сетки 2×3, чтобы убедиться, что всё загрузилось правильно.
Далее происходит автоматическое создание текстовых описаний для 133 загруженных фото. Я использовала модель BLIP (Bootstrapping Language-Image Pre-training) от Salesforce: эта нейросеть обучена описывать изображения на естественном языке. BLIP работает следующим образом: изображение подается на вход, модель анализирует его содержимое и генерирует текстовое описание длиной до 50 символов. Для повышения качества генерации используется метод beam search с параметром num_beams=3, что позволяет модели рассмотреть несколько вариантов и выбрать наиболее вероятный.
После получения автоматического описания я добавляю к нему триггер-фразу «ukiyoe face style» — ключевое слово, которое свяжет стиль укие-э с обученной LoRA-моделью. В результате каждая запись датасета выглядит примерно как «ukiyoe face style, woman in traditional kimono with elaborate hairstyle».
После того, как все изображения загружены и для них сгенерированы подписи, необходимо объединить эти данные в единый структурированный набор. Для этого используется библиотека datasets от Hugging Face — стандартный инструмент для работы с данными в экосистеме диффузионных моделей.
Я создаю словарь с двумя полями: image — список путей к файлам изображений, и prompt — список соответствующих текстовых подписей.
Метод Dataset.from_dict () преобразует этот словарь в объект Dataset, который оптимизирован для пакетной загрузки, перемешивания и потоковой передачи данных во время обучения. Это гарантирует, что каждое изображение будет правильно сопоставлено со своей подписью на всех этапах обучения.
Готовый датасет сохраняется на диск в папку /content/ukiyoe_dataset. В дальнейшем скрипт обучения сможет загрузить его одной строкой кода, без необходимости писать собственную логику обработки данных.
Самая важная часть:
После успешного обучения LoRA-модели необходимо загрузить её в пайплайн Stable Diffusion XL. Процесс начинается с очистки памяти видеокарты, чтобы освободить место для генерации. Затем загружаются три ключевых компонента:
- VAE (вариационный автоэнкодер) — специальная версия sdxl-vae-fp16-fix, которая исправляет артефакты на темных участках и работает в 16-битной точности для экономии памяти.
- Базовая модель SDXL — stabilityai/stable-diffusion-xl-base-1.0, предобученная на миллиардах изображений.
- LoRA-веса — обученный файл .safetensors, который добавляет в модель стиль укие-э.
Для генерации используется 20 различных промптов, разделенных по тематикам: портреты гейш, самураи, театр кабуки, бытовые сцены и атмосферные зарисовки. Для каждого промпта создается по 2 вариации с разными seed-значениями, что позволяет получить разнообразие в деталях, композиции и цветовых решениях.
Параметры генерации:
— num_inference_steps = 25 — баланс между качеством и скоростью — guidance_scale = 7.5 — умеренное следование промпту — seed — уникальное значение для каждой вариации, обеспечивающее воспроизводимость
Все сгенерированные изображения сохраняются в формате PNG, после чего упаковываются в ZIP-архив и скачиваются для дальнейшего анализа и отбора лучших результатов для итоговой презентации.
Описание применения генеративной модели
В процессе работы над проектом было использовано несколько инструментов на основе генеративного искусственного интеллекта: для автоматического создания подписей к обучающим изображениям применялась модель BLIP от Salesforce. Само обучение и генерация выполнялись в среде Google Colab с использованием готовых библиотек Hugging Face (Diffusers, Transformers, PEFT), которые предоставляют оптимизированные реализации методов DreamBooth и LoRA. Кроме того, для работы с текстом и разбора технических деталей кода частично использовались языковые модели.
https://huggingface.co/Salesforce/blip-image-captioning-base — BLIP https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0 — Stable Diffusion XL https://huggingface.co/madebyollin/sdxl-vae-fp16-fix — VAE https://claude.ai/ и https://chat.openai.com/ — языковые модели










