
Концепция
Я большая фанатка аниме «Наруто», и ко мне в голову пришла идея обучить нейросеть на скринах из данного аниме и посмотреть, насколько точно получится воссоздать оригинальный стиль персонажей. Также ближе к концу работы я давала нейросети промпты, не описывающие существующих в героев аниме, чтобы посмотреть как она справится с воображаемыми образами.
Датасет
В проекте использовался датасет с персонажами аниме «Наруто», собранный в 2022 году Eole Cervenka и опубликованный на сайте HuggingFace.
Ссылка на датасет: https://huggingface.co/datasets/lambdalabs/naruto-blip-captions
Примеры картинок из датасета
В примере ниже я загружаю оригинальный датасет при помощи библиотеки «datasets», модифицирую обучающие промты так чтобы они содержали ключевую фразу: «In the style of NARUTO, " и привожу все изображения к размеру 512×512 пикселей.

Ключевые моменты обучения нейросети
Здесь представлен код для визуализации некоторых изображений и промптов из обучающей выборки в качестве примера, а также код для публикации датасета на сайте HuggingFace для того, чтобы его можно было использовать далее при обучении нейросети с помощью скрипта «train_dreambooth_lora_sdxl.py»
Запуск обучения выглядит следующим образом: использую «accelerate launch», указываю название датасета на «HuggingFace» в параметре «dataset_name», указываю директорию для хранения результатов обучения «output_dir», промежуточные результаты обучения сохраняю на «checkpointing_step=250» и обучение длится «max_training_step=500» шагов.
Во время инференса были испробованы два варианта: в этом примере кода используется модель «Stable Diffusion XL» и «VAE», LoRA-веса подгружается без фьюжена и применяются с полной силой, т. е. scale=1.0.
Во втором варианте стиль применяется с уменьшенной интенсивностью, scale=0.5.
Есть ощущение от сгенерированных изображений, что уменьшение интенсивности использования стиля позволяет повысить детализацию и улучшить текстуры фона и других деталей на изобрежении, что менее свойственно стилю оригинального аниме. Оригинальное аниме создавалось в краткие сроки, что вело к меньшему качеству рисовки, которое можно было исправить такой моделью.
Что получилось
Попытки создать Орочимару
Промпт для создания Орочимару всегда начинался так: «In the style of NARUTO, a pale man with snake eyes and long black hair…», далее я уточняла детали (позу, фон, наличие змей и тд)
Наруто и Саске
Кушина
Для генерации Кушины использовался промпт: «In the style of NARUTO, a girl with a red hair…», дальше я описывала детали
Пейн
Для создания Пейна использовался промпт: «In the style of NARUTO, a man with piercing and red hair…», в различных формулировках.
Как можно увидеть по результату, отношения с пирсингом у нейросети не сложились, как бы подробно не был составлен промпт
Битвы!
Персонажи, не поддающиеся идентификации
Также нейросеть может создавать различные пейзажи и животных в стиле аниме «Наруто»:
Пейзажи и животные
Рамен!!!!
Файл в формате ipynb с кодом и всеми используемыми промптами можно найти на гугл диске по ссылке: https://drive.google.com/drive/folders/1oQCCMwlxwisGMdfW_tbiygkK2Qw4CR9w?usp=drive_link
Используемые нейросети
1. Stable Diffusion XL Base 1.0 Основная модель генерации изображений https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
2. VAE-фикс для SDXL от madebyollin Использовался для улучшенного сжатия и декодирования латентного пространства https://huggingface.co/madebyollin/sdxl-vae-fp16-fix
3. Diffusers (репозиторий Hugging Face) Библиотека для генерации изображений с использованием моделей SDXL, LoRA и DreamBooth https://github.com/huggingface/diffusers
4. Датасет Naruto с BLIP-аннотациями от LambdaLabs Использовался как исходный набор изображений и текстов для обучения https://huggingface.co/datasets/lambdalabs/naruto-blip-captions
Датасет и код