Embedding, также называется текстовой инверсией, что является альтернативным способом управления стилем ваших изображений в Stable Diffusion. Мы рассмотрим, что это за метод внедрения, где его найти и как использовать.
- Что такое Embeddings?
- Как происходит текстовая инверсия?
- Примеры Embeddings
- Где искать embeddings?
- Как использовать метод внедрения “embeddings”
- Веб-интерфейс
- AUTOMATIC1111
- Краткое описание использования внедрения в AUTOMATIC1111
- Примечание по использованию embeddings в AUTOMATIC1111
- Ещё несколько вариантов модели embeddings
- wlop_style
- Kuvshinov
- Разница между embedding, dreambooth и hypernetwork
- Плюсы и минусы использования модели embedding
Что такое Embeddings?
Embedding (прим. автора “метод внедрения”) – это результат текстового преобразования, методом определения новых ключевых слов в рамках модели без ее редактирования. Этот метод привлек к себе внимание, поскольку он способен создавать новые стили или объекты в модели с помощью всего лишь 3-5 образцов изображений.
Как происходит текстовая инверсия?
Самое невероятное в текстовой инверсии – это НЕ САМА возможность добавлять новые стили или объекты, так как другие инструменты с тонкой настройкой могут делать это не хуже и даже лучше. Удивительно то, что она может делать это без изменения самой модели.
Диаграмма из оригинальной научной статьи, приведенная ниже, демонстрирует, как это работает.
Сначала вы определяете новое ключевое слово, которого нет в модели, для нового объекта или стиля. Это новое ключевое слово будет токенизировано (то есть представлено числом), как и любые другие ключевые слова в подсказке.
Затем каждая из токенов преобразуется в уникальный вектор внедрения, который будет использоваться моделью для генерации изображения.
Текстовая инверсия находит вектор внедрения нового ключевого слова, который наилучшим образом отображает новый стиль или объект, без изменения какой-либо части модели.
Примеры Embeddings
Внедрение можно использовать для новых объектов. Ниже приведен пример внедрения игрушечного кота. Обратите внимание, что новое понятие (‘toy cat’) может использоваться с другими существующими понятиями (boat, backpack, etc) в модели.
Внедрение также может стать новым стилем. В примере ниже показано внедрение нового стиля и использование его в другом контексте.
Где искать embeddings?
В Hugging Face размещена библиотека концептов Stable Diffusion Concept Library, которая представляет собой хранилище большого количества пользовательских внедрений.
Civtai – еще один замечательный сайт, на котором можно просматривать модели, включая модели внедрения. Для этого надо настроить фильтр с текстовой инверсией (textual inversion) для просмотра только внедрений.
Как использовать метод внедрения “embeddings”
Веб-интерфейс
Stable Diffusion Conceptualizer – это отличный способ опробовать модели внедрения, не скачивая их.
Сначала определите в библиотеке концептов внедрение, которое вы хотите протестировать. Допустим, вы хотите использовать стиль Marc Allante. Затем определите маркер, необходимый для запуска этого стиля.
Вы можете найти его в файле token_identifier.txt, это <Marc_Allante>
Впишите подсказку (prompt)
<Marc_Allante>
a dogИ вот вы получите уникальный стиль Marc Allante.
Недостатком веб-интерфейса является то, что вы не можете использовать внедрение с другой моделью или изменить какие-либо параметры.
AUTOMATIC1111
Использовать embedding в AUTOMATIC1111 очень просто.
Сначала загрузите файл embedding из библиотеки Concept Library. Это файл с именем learned_embedds.bin. Убедитесь, что вы не нажимаете правую кнопку мыши и не сохраняете файл в окне ниже. Это сохранит веб-страницу, на которую он ссылается. Щелкните имя файла и нажмите кнопку загрузки на следующей странице.
Затем переименуйте файл в ключевое слово, с которым вы хотите использовать эту вставку. Это должно быть что-то несуществующее в модели.
marc_allante.bin – хороший выбор.
Поместите его в папку embeddings в рабочем каталоге GUI:
stable-diffusion-webui/embeddings
Перезапустите GUI. В терминале запуска вы должны увидеть следующее сообщение:
Loaded a total of 1 textual inversion embeddings.
Embeddings: marc_allante
Используйте имя файла как часть подсказки (prompt)
Например, следующий prompt будет работать на AUTOMATIC1111.
(
marc_allante:1.2)
a dog
Мы получаем изображение в ожидаемом стиле.
Краткое описание использования внедрения в AUTOMATIC1111
Embedding не будет работать, если в нем не хватает даже одной буквы. Также нельзя использовать Embedding v1 с Embedding v2, и наоборот – они используют две разные языковые модели.
Вы когда-нибудь задумывались, как проверить, что вы действительно используете метод внедрения? Это довольно сложно определить, потому что эффект Embedding иногда может быть очень незаметным.
В AUTOMATIC1111 есть небольшой трюк, чтобы убедиться в этом. Между кнопками ” Trash” и ” Copy” есть кнопка, которая выглядит как маленький айпод.
Нажмите на нее, и вы увидите все имеющиеся внедрения. Все они находятся на вкладке Textual Inversion.
Щелкнув по любому из них, вы добавите его в подсказку (prompt). Эта функция особенно полезна для избавления от утомительной работы по проверке правильности ввода ключевого слова для внедрения.
Примечание по использованию embeddings в AUTOMATIC1111
Если вы обратите внимание на prompt, то заметите, что я увеличил силу эффекта ключевого слова marc_allante. Я заметил, что необходимо регулировать данный параметр. Это может быть связано с процессом загрузки внедрения (силой эффекта) AUTOMATIC1111.
Возможно, вам придется немного поиграться с числовым значением после ключевого слова, чтобы добиться желаемого эффекта. Ниже приведен пример изменения силы при сохранении исходного запроса и всего остального.
Ещё больше усложняет процесс то, что для каждого запроса сила эффекта будет разной и с этими значениями скорей всего придется всегда играться.
Ещё несколько вариантов модели embeddings
Существует множество вариантов внедрения, которые можно попробовать. Вот некоторые из них, которые мне понравились.
wlop_style
внедрение wlop_style в модель wlop-any
Если вы уже экспериментировали с базовыми моделями Stable Diffusion, вы поймете, что сгенерировать стиль wlop невозможно, как бы вы ни пытались. Внедрение вместе с пользовательской моделью поможет сделать это.
Внедрение wlop_style способно визуализировать некоторые красивые иллюстрации в стиле художника wlop. Его следует использовать с пользовательской моделью wlop-any от SirVeggie.
(См. это руководство по установке пользовательских моделей).
Прямая ссылка на скачивание – wlop_style embedding
Прямая ссылка на скачивание – wlop-any model
Рабочим промтом для AUTOMATIC1111 является:
wlop_style – ключевое слово для внедрения, m_wlop – ключевое слово для модели.
Не расстраивайтесь, если у вас не получается подобрать стиль. Попробуйте изменить значения этих двух ключевых слов. Некоторые объекты могут просто не работать с внедрением. Попробуйте использовать некоторые распространенные объекты в работах художника wlop.
Kuvshinov
Кувшинов – русский иллюстратор. Вы можете использовать внедрение стиля Кувшинова в Stable Diffusion v1.4.
(Обратите внимание, что я переименовал embedding в _kuvshinov.bin)
Разница между embedding, dreambooth и hypernetwork
Существует три популярных метода тонкой настройки моделей стабильной диффузии: текстовая инверсия (embedding), dreambooth и hypernetwork.
Embedding определяет новое ключевое слово для описания новой концепции без изменения модели. Векторы встраивания хранятся в файлах .bin или .pt. Размер файла очень мал, обычно менее 100 кБ.
Dreambooth внедряет новую концепцию путем точной настройки всей модели. Размер файла типичен для Stable Diffusion, около 2 – 4 ГБ. Расширение файла такое же, как и у других моделей, ckpt.
Hypernetwork – это дополнительная сеть, присоединенная к сети UNet модели Stable Diffusion. Цель – точная настройка модели без изменения модели. Размер файла обычно составляет около 100 МБ.
Плюсы и минусы использования модели embedding
Одним из преимуществ использования embedding является его небольшой размер. Размер файла не превышает 100 КБ, поэтому их легко хранить в локальном хранилище. Поскольку embeddings – это просто новые ключевые слова, их можно использовать вместе в одном и том же изображении.
Недостатком использования embedding является то, что иногда неясно, с какой моделью его следует использовать. Если в учебном пособии ничего не сказано, вы можете начать с версии 1.4 или 1.5. Вы также можете включить VAE, чтобы посмотреть, есть ли разница. Для аниме-стилей нередко в обучающих материалах используются аниме-модели типа Anything v3.
В целом, я обнаружил, что использование embedding немного сложнее, чем использование пользовательских моделей. У меня были проблемы с воспроизведением демонстрационных стилей во многих загруженных мною моделях embeddings. Правда, у меня возможно получится, если я продолжу подбирать ключевые слова, но в реальности люди бросают это дело после нескольких неудачных попыток.