
Идея Проекта
Аниме «JoJo’s Bizarre Adventure» — это не просто серия, а целая вселенная, обладающая неповторимой эстетикой и энергией, которая сразу же запоминается. Уникальный визуальный стиль, эксцентричные персонажи и динамичные сцены сделали его настоящей иконой. Моя задача была создать кастомную модель на базе Stable Diffusion, которая могла бы генерировать новые картинки в стиле JoJo. Для этого я собрал более 200 скриншотов из аниме и использовал метод Dreambooth LoRA, чтобы обучить модель именно на этом визуальном материале.
Для осуществления этого проекта я пользовался этим РУКОВОДСТВОМ
Сбор изображений для обучения
Для обучения нейросети нужно подготовить базу изображений в одинаковом разрешении с соотношением сторон 1:1.

Перед обучением изображения прошли следующие этапы предварительной обработки:
С использованием программы на Python все изображения были обрезаны до соотношения сторон 1:1, что оптимально для требований модели.
Исключались кадры с искажениями или некачественной прорисовкой, чтобы улучшить итоговый набор данных.

Подготовка среды
Подключаю необходимые модули, настраиваю рабочую директорию и пути к данным.
Генерация метаданных
Метаданные используются при обучении моделей для связывания изображений с их описаниями. Это помогает модели лучше понять, какой визуальный контент соответствует заданному описанию, что особенно важно при дообучении модели с помощью методов Dreambooth LoRA.
Авторизация в HuggingFace
Чтобы работать с моделями и наборами данных на Hugging Face, я использовал функцию notebook_login (). Благодаря ей я вошёл в систему Hugging Face Hub с помощью сгенерированного API-ключа и получил доступ ко всем нужным ресурсам для обучения.
Обучение модели
Эта команда запускает процесс, где я дообучаю модель, чтобы она генерировала картинки в стиле JoJo. Сначала подгружается базовая модель с нужными ресурсами, а затем ей показывают набор примеров картинок с описаниями, чтобы она научилась создавать новые работы в этом уникальном стиле.
Сохранение модели
Этот код используется, чтобы выложить обученную модель на Hugging Face. Сначала он определяет имя пользователя с помощью токена, а затем создаёт уникальное название репозитория, где лежат результаты обучения.
Начало работы с моделью
В этом фрагменте я подключаю VAE, подгружаю Stable Diffusion XL в режиме float16 и указываю репозиторий с LoRA-весами, чтобы модель могла рисовать в нужном стиле. После этого переношу всё на видеокарту, чтобы быстрее генерировать изображения и экономить память.
Результаты генерации
После обучения нейросеть смогла соблюсти и повторить визуальный стиль характерный для JoJo’s Bizarre Adventure. В генерации видны яркие и броские цвета, замысловатые дизайны деталей, а также гиперболизированные черты лица.


prompt = «A stylish character portrait inspired by JoJo’s Bizarre Adventure, showcasing extravagant fashion, dramatic lighting, and an expressive, confident gaze, with intricate ornamental details.»


prompt = «A dramatic portrait of a heroic character in the flamboyant JoJo’s Bizarre Adventure style, striking a dynamic pose with intricate details, bold lines, and vibrant colors.»


prompt = A surreal, fashion-forward scene in the JoJo aesthetic: an elegantly posed character in elaborate attire, set against a vivid, abstract background filled with dynamic patterns and cold color.
Нейросети тяжело даются динамические сцены и ракурсы в полный рост. Скорее всего это связано с обрезкой изображений, где квадратные изображения, сфокусированные на центре изначального изображения, тоже включают в себя только портретные ракурсы. Так нейросеть лучше всего обучилась рисовать лица.


prompt = «A stylish character portrait inspired by JoJo’s Bizarre Adventure, showcasing extravagant fashion, dramatic lighting, and an expressive, confident gaze, with intricate ornamental details.»
Однако для изначальной идеи соблюдения стиля JoJo это не мешает, поскольку самая характерная черта аниме — лица персонажей.


prompt = «A group of stylish travelers embarking on an epic journey, rendered in the dynamic, detailed style of JoJo’s Bizarre Adventure. They are walking along a winding road through a vast…


prompt = A stylish portrait of character inspired by JoJo’s Bizarre Adventure, showcasing extravagant fashion, dramatic lighting, and an expressive, confident gaze, with intricate ornamental details.
В целом обучение можно назвать успешным. Есть некоторые несущественные проблемы с цветами. Нейросеть запомнила большое количество розовых оттенков, и, если не просить обратного, сильно придерживается их. Кроме того, важной чертой аниме были невероятные позы героев, с отрисовкой которых у нее тоже есть проблемы. Однако, если просить делать портреты, то результат получается впечатляющим.
Встретившиеся сложности
1. Возникали сложности в Google Colab, пути к папкам прописываются и учитываются средой немного иначе, чем в Jupyter. Так же есть разница, где лежат файлы: в коренной или вложенной папке.
2. Обучение модели обрывалось из-за нехватки видео памяти. Было несколько действий для решения проблемы: Очистка кэша, но не во время обучения, так как тогда обучение проходило в 10 раз медленнее. Кэш способствует обработке изображений. Уменьшено количество подаваемых изображений. Уменьшено разрешение изображений.
3. Для обучения необходима большая коллекция изображений в одинаковом разрешении и квадратном соотношении сторон. Найти подобные коллекции на просторах интернета не вышло, тогда пришла идея использовать инструментарий Python. Ведь, если нейросеть он обучить может, то обрезать фото и подавно.
Описание применения генеративной модели
ChatGPT использовался для консультации и исправления ошибок при написании кода. Промпты писались также с его помощью, чтобы добавить больших подробностей, что повышало качество генераций.