Самый понятный гайд по embedding с примерами (переносим любимого персонажа в Stable Diffusion)

Ikaros из аниме "Падшая с небес"
Ikaros из аниме "Падшая с небес"

Была у меня давняя мечта — создать модель Икарос из аниме Sora no Otoshimono. Обожаю этого персонажа, запала мне в душу ангелица.

Обычные модели мне показались банальными и большими, а я за оптимизацию и максимальную практическую пользу — так и решил заняться текстовой инверсией embedding, которая весит по окончании обучения всего лишь около сотни килобайт.

Обучал модель два раза. Первый по гайду ХрИста, а второй по собственным наблюдениям и логике. Думаю, вы уже поняли, что первый раз не удался — так и родился этот гайд, чтобы закрыть и ваши боли.

Пару слов от себя

Ребят, если планируете тренировать embedding для арта или аниме, то сразу же устанавливайте модель Anything V3, а также VAE (на той же странице, что и модель). Это не обсуждается и не критикуется — поверьте, я сэкономил вам кучу времени.

VAE кладем в папку stable-diffusion-webui/models/VAE

Далее: я тренировал модель на 21 изображении красавицы-любимицы, но вы можете экспериментировать с количеством. Ставил 3000 шагов, а заняла тренировка около 35 минут в Google Colab. На хорошей видеокарте Nvidia 20-30 серии время сократится до 10-15 минут. Друзья, отбирайте качественные изображения тянки для тренировки: без лишних деталей, надписей, супер сложных фонов. CFG Scale выставляйте в районе 4.5 — это тоже важно (далее еще скажу об этом).

Так как это текстовая инверсия, а не полноценная модель, то она не сможет запомнить все детали. Идеально оставить белый или другой монотонный фон — так фокус останется именно на персонаже.

Во второй итерации своего дата-сета я добавил изображения на белом фоне, полученные во время тестов первой текстовой инверсии.

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

Дата-сет для тренировки текстовой инверсии
Дата-сет для тренировки текстовой инверсии

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

Что нам понадобится? Во-первых, установленный либо локально, либо в облако Automatic1111. Прикреплю ссылки на лучшие по моему мнению гайды, можете смело пользоваться. В случае проблем готов помочь в чате.

Также необходимо установить модель и VAE. После этого можно запускать Automatic1111 и начинать работу. Внутренних средств фреймворка нам вполне хватит, поэтому ничего дополнительно устанавливать не нужно.

Первые шаги

Для начала полюбуемся на результат, достигнутый без фотошопа и других редакторов. Будьте готовы к тому, то генерации придется существенно дорабатывать — это нормально.

Результат работы натренированной текстовой инверсии
Результат работы натренированной текстовой инверсии

Для начала мы с вами должны открыть вкладку txt2img и прописать токены генерации желанного предмета или тянки.

Negative prompt берем такой: (deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra lim, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation

Настройки можете выставить как у меня.

Подготовка перед обучением инверсии
Подготовка перед обучением инверсии

Переходим во кладку Train и создаем там имя нашего embedding (придумайте уникальное имя с нижним подчеркиванием), вставляем prompt из вкладки txt2img в нижнее поле. Важный момент: видите ползунок? Там есть циферка, которая значит, сколько токенов в запросе.

Считаете все слова в запросе вместе с запятыми и выставляете это число.

Создаем инверсию
Создаем инверсию

Далее все просто — копируйте настройки из скриншота и радуйтесь жизни. Мы уже близки к финалу, поэтому не засыпать! В поле embedding выбираем название только что созданной модели и движемся дальше.

Если вы обучаете модель в Google Colab, то закидывайте тренировочные изображения в любую папку на вашем диске, после чего прописывайте путь к ней в поле Dataset directory. На ПК копируйте путь к папке через проводник.

А в поле Prompt template кликайте на style_filewords — не прогадаете. Я мучился, проверял по нескольку раз, поэтому не стоит делать то же самое, лучше наслаждайтесь жизнью...

Задаем параметры обучения
Задаем параметры обучения

На последнем этапе берите настройки с моих. Единственное, не всегда нужно такое большое количество шагов. На 2000 у меня получилась ерунда, поэтому и взял побольше на второй попытке. Если ваш стиль окажется проще, чем аниме-ангелица, то смело занижайте количество шагов.

Самое приятное — жмем на кнопку Train Embedding и смиренно смотрим процесс (лучше прогуляться, чтобы спина не окаменела). Ресурсов Google Colab хватит, чтобы обучение прошло успешно, поэтому не парьтесь по поводу ограниченной квоты на вычисления. Я потом даже 2 часа сверху успел поработать, так и не израсходовав весь лимит.

Вторая часть параметров обучения инверсии
Вторая часть параметров обучения инверсии

Созданная модель будет храниться по пути: stable-diffusion-webui/embeddings. Чтобы генерировать изображения — вводите название, которое вы создавали на этапе создания embedding (в моем случае это emb_ikaros_yiu). Если получается фигня, то ставьте CFG Scale на 4.5 или ниже.

Кстати, вы можете скачивать текстовые инверсии других авторов и так же их использовать в своих работах. Существуют инверсии и для negative prompt, к примеру, чтобы исправлять руки.

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

Ангельский результат
Ангельский результат

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

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

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

7474
13 комментариев

Неужели кто-то ещё помнит эту анимешку)

4
Ответить

Я помню, шикарна вещь. ГГ прям идеальный аниОЯШ. А кекная озвучка от кубы - до сих пор в сердечке)

6
Ответить

Лучшие люди собрались в комментах, спасибо вам!)))

5
Ответить

Все зашли посмотреть на Икарос!

2
Ответить

Уважаемый @Dmitriy.yiu, день добрый. Возможно ли с вами сотрудничество, необходимо установить Stable Diffusion на ноут. Финансово разумеется ваша работа будет оценена. Буду безмерно благодарен за обратную связь ✨

1
Ответить

Доброго времени суток, крайне приятно от вежливого приветствия!)

Да, это возможно, напишите, пожалуйста, мне в телеграм https://t.me/dmitriy_yiu

Можем созвониться в принципе, поговорить, я все объясню, спрошу о системных требованиях и ваших задачах)

Ответить