Создаем синтетического персонажа и его датасет, чтобы натренить модель LoRA в Stable Diffusion

Создаем синтетического персонажа и его датасет, чтобы натренить модель LoRA в Stable Diffusion

У меня уже был пост о том, как генерировать одного и того же персонажа в Stable Diffusion, однако я нашел более эффективный способ сохранить консистентность и при этом получить полный контроль над позой персонажа и поворотом его головы (в данном случае ее).

Что нам понадобится?

Во-первых, установленный либо на ПК, либо в Google Colab — Automatic1111. В случае проблем с установкой готов помочь в чате.

Также нам нужен ControlNet 1.1 с моделью Mediapipe_faceonly.

Скачиваем нужные модели
Скачиваем нужные модели

Еще понадобится установленное расширение Interrogator, чтобы с референса считывать промпт и затем использовать для описания нашего персонажа. Модель в гайде буду использовать Flat-2D Animerge.

Кладем модель Mediapipe_face_only в нужную папку
Кладем модель Mediapipe_face_only в нужную папку

Положить установленные модели можно по этому пути.

Перейдем к практике

Мой маскот в мире аниме — это тянка Икарос, ее и возьму за основу, чтобы снять промпт в расширении Interrogate clip. Оно имеет на борту самую крутую модель для декомпозиции картинки в текст, а также может в пакетную обработку: т.е. массовое описание изображений, что поможет в дальнейшем для разметки датасета.

Расшифровываем изображение
Расшифровываем изображение

Далее пробуем промпт на воспроизведение и глядим на результат. Если нравится, то все ок. Если не нравится, то пытаемся уже вручную редактировать токены и подгонять их под приятную для нас картину.

Генерируем девушку по полученному промпту
Генерируем девушку по полученному промпту

Мне цундере-девчуля с двумя сочными кексиками понравилась, поэтому я перехожу к следующему шагу — ControlNet 1.1. В нем у нас должна быть активирована настройка, дающая возможность использовать сразу две модели ControlNet 1.1.

Включаем multi-controlnet
Включаем multi-controlnet

После того как вы отметили двоечку в параметрах, перезагружайте веб-интерфейс и дуйте к следующему шагу — там самое интересное!

Закидываем полученную тян в окошко для референса, включаем расширение и выбираем пресет Reference Only. Настройки ниже ставим как у меня.

Выбираем пресет Reference only
Выбираем пресет Reference only

Во второй модели должна быть несимпатичная и типичная 3D-тян. Но не беспокойтесь, нам с нее нужно лишь положение головы и перспектива лица в пространстве, чтобы мы могли повернуть голову сгенерированной девушки.

Настройки ставим как у меня, тут особо нечего придумывать. Единственное, я понизил количество задействованных шагов модели ControlNet — Starting и Ending Control Step, чтобы качество не шакалилось.

Добавляем объект для копирования позы
Добавляем объект для копирования позы

Таким образом мы получаем разные вариации нашего персонажа, на основе которых можно составить датасет и натренировать, например, модель LoRA или Embedding. Про последний у меня как раз есть статейка!

А расширил я генерацию для превью этой статьи вот по этому гайду.

На закуску прикреплю пример полученного мною датасета. Кстати, работает данный метод хорошо только со сгенерированными персонажами. Режим Img2img контролирует изменения корявенько, к сожалению...

Пример полученного датасета
Пример полученного датасета

Congratulations, вы справились!

Теперь кто-то умеет создавать свой милый датасет с помощью лучшего фреймворка для Stable Diffusion на сегодняшний день. Буду рад обратной связи и вашим комментариям, а также приглашаю в свой телеграм чат, где отвечу на все вопросы касаемо SD.

Буду рад видеть вас в телеграм-канале, где я собираю лучшие гайды по Stable Diffusion. А если не найду, то пишу сам.

3434
4 комментария

Не совсем понял. Если у нас уже есть описание, хорошо генерящее нужного персонажа, то почему не создать датасет, а затем embedding с его помощью напрямую?

Буквально как тут:
https://github.com/BelieveDiffusion/tutorials/tree/main/consistent_character_embedding#readme

3

Слишком сложно и результат так себе. Моя практика показала, что если нужно часто генерить персонажа с очень сложными деталями, то легче выбрать одно изображение за образец, потом сгенерировать еще 3 примерно похожих в анфас, профиль, спиной, сидя, допилить их при помощи фотошопа и imgtuimg, сделать лору из 4 изображений, а потом при помощи этой лоры нагенерить материалов и сделать уже качественную лору во всех необходимых позах)))

1

Это сложнее даже по описанию

Отличная идея. А я голову ломаю. Сегодня займусь.