Перейти к содержанию

Embedding в Stable Diffusion или как использовать текстовые инверсии


Рекомендуемые сообщения

Если вы когда-либо посещали сайт civitai, возможно, вы заметили опцию «embeddings» в настройках сортировки. В этой статье мы рассмотрим, что такое Embedding в Stable Diffusion, также известные как текстовые инверсии.

5fceefff-5163-4b6d-999a-f439d9fcf969.png


Embeddings (текстовые инверсии) — это ключевые слова в Промте (токены), которые математически определяют, что должна изображать нейросеть stable diffusion. С другой стороны, текстовые инверсии не содержат изображений, они действуют как якоря (координаты), которые направляют SD на то, каким должен быть результат генерации.

Звучит сложно?
Не волнуйтесь, мы разберемся.

Традиционно, чтобы «объяснить» нейронной сети, что она должна рисовать, вы пишете подробный и часто длинный промт. Если вы хотите изобразить известного человека, просто укажите его имя в подсказке.

Но есть альтернативный подход — по сути, та же концепция, только вывернутая наизнанку. Как вы уже догадались, речь идет об инверсиях текста. Вместо обучения нейросети необходимыми изображениями авторы создают инверсию текста, «извлекая» из нейросети специальный ключ. Этот ключ затем позволяет им достичь желаемого результата.

Как авторы создают embeddings для Stable Diffusion?

Для создания текстовой инверсии, которая по сути представляет собой файл формата .pt или .safetensors, автор предоставляет нейросети следующие входные данные:

  • несколько изображений или фотографий, которые представляют то, что хотят последовательно генерировать с помощью созданного встраивания

  • промт или текстовое описание, точно отражающее то, что изображено на предоставленных изображениях

  • Имя, которое можно использовать для ссылки на этот embedding в будущих генерациях

В результате этого процесса обучения автор получает файл, например name.pt, где «name» представляет собой имя нашего эмбеддинга. Это встраивание теперь может быть использовано в будущих поколениях.

Предположим, что наш embedding предназначен для создания изображений Анджелины Джоли, аналогично примеру, найденному на https://civitai.com/models/99201. Чтобы создать изображение Анджелины Джоли, нам просто нужно включить в промт триггерное слово, указанное автором. В данном случае триггерным словом является «4nj0lie».

48a8002e-7983-4588-9378-78733614bb0e.png

 

Зачем использовать инверсию текста, если можно просто написать в промте «Анджелина Джоли»?

Ответ прост: embedding может обеспечить более точное соответствие целевому изображению, но это зависит от того, тщательно ли автор выбирает качественные фотографии и релевантные ключевые слова.

Как использовать Embedding - текстовые инверсии?

На сайте civitai можно обнаружить разнообразные инверсии текста. Для вашего удобства мы предустановили большинство из них в нашем боте Telegram @yes_ai_bot.

Инструкции:

  1. Посетите сайт civitai.com и найдите необходимую инверсию
  2.  Скопируйте предоставленное триггерное слово
  3. Откройте приложение Telegram и авторизуйтесь у бота @yes_ai_bot
  4. Введите промт, содержащий скопированное триггерное слово, например «4nj0lie»

Преимущества embeddings:

  • Повышенная точность представления изображений, лиц, стилей, окружения и многого другого
  • Минимальный размер файла (хотя для пользователей @yes_ai_bot это менее критично, так как все работает без необходимости установки на компьютер)
  • Триггерное слово функционирует как стандартный токен, позволяющий применять весовые коэффициенты и другие манипуляции (мутации и т. д.), как подробно описано в этом видео: https://youtu.be/gL9TVTae0dI
  • Удобен для пользователя и поддерживает ведение личного «словаря лайфхаков», где одно слово может заменить целую промт
  • Возможность использования вложений в «негативных промтах»

На последнем пункте мы остановимся отдельно.

Как и зачем использовать embeddings - текстовые инверсии в негативных промтах?

Embedding, которое по сути представляет собой токен (или, точнее, группу токенов, хотя мы не будем здесь вдаваться в эти детали), может быть размещено везде, где необходимо текстовое описание. Сюда входит раздел «Negative Prompt».

Существуют специальные Embeddings, созданные для использования в негативных промтах.

Зачем это нужно?

Это просто: вы можете указать в отрицательном промте все, что не хотите отображать в создаваемом вами контенте.

Например:
(deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), (text, watermark:1.1), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation

Альтернативно вы можете просто использовать слово «easynegative». EasyNegative — это встраивание с сайта civitai.com (https://civitai.com/models/99201), которое отфильтровывает нежелательные мутации в ваших генерациях.

Чтобы установить NP (Negative Prompt) в бота @yes_ai_bot, у вас есть два варианта:

  • Глобальная настройка: используйте команду /np easynegative
  • Отдельные настройка: добавьте /np easynegative с текстом промта

В этих примерах мы использовали «easynegative» как промт для исключения нежелательных элементов из генерации. Однако вы можете выбрать другие эмбеддинги, специально разработанные для использования в Negative Prompt.

Ключевые моменты про эмбеддинги:

  • Embeddings и текстовые инверсии относятся к одной и той же концепции, грубо говоря это одно и то же
  • Ограничения Embeddings. Одним из основных недостатков текстовых инверсии является то, что они ограничивают нейронную сеть генерацией контента на основе существующей базы знаний. Встраивания направляют нейронную сеть к конкретным объектам в уже существующей базе данных, но не расширяют эту базу данных. Чтобы расширить базу знаний ИИ, следует использовать LoRA
  • Изменение существующих Embeddings. Если вам нужно изменить фундаментальный аспект существующего Embeddings, например исходный цвет волос персонажа, вам следует указать желаемый цвет перед эмбеддингом в промте. Например: «белые волосы, 4nj0lie».
  • Корректировка весовых коэффициентов. Если описанный выше метод не работает, попробуйте увеличить весовой коэффициент. Например: «((белые волосы)), 4nj0lie».
  • Запасной вариант: Если корректировка весового коэффициента по-прежнему не помогает, это означает, что автор встраивания не предвидел таких изменений. В этом случае вам нужно будет вручную описать имя, изображение, стиль и т. д., не используя встраивание.
  • Роль инверсии текста. Инверсия текста (или Embeddings) предоставляет точный текст для промта, указывая нейронной сети, что именно генерировать.
  • Компоненты Embeddings. Эмбеддинг включает промт, которое уже содержит токены, которые служат основой для генерации. Помимо токенов, инверсии текста также содержат информацию о нужных изображениях.
  • Negative Prompt. Текстовые инверсии можно использовать в негативном промте, как и любое другое слово. Это особенно полезно для исключения нежелательных элементов. Например, можно добавить инверсию текста «EasyNegative», чтобы отфильтровать многие нежелательные функции. Хотя вы все еще можете использовать традиционный метод перечисления негативных промтов, инверсия текста не менее эффективна.
  • Поддержка весов: инверсия текста поддерживает вес, аналогично обычным токенам в подсказках.

 

  • Like 4
  • Лайк 3
  • Благодарность 1

image.png.9d5b4205072e7e483a6f7d59aebe58e3.pngimage.pngimage.png.401b8a419d2091e7d0b7f9d60646a724.png

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...