На ютубе задали вопрос в комментариях, решил ответить подробно.
Начнем с конца
У нас есть модель (checkpoint) — это основа без нее ничего работать не будет.
Есть всякие так называемые экстрасети:
- гиперсети (hypernetwork)
- лоры (всякие LoRA, LoHA, LoCon, LyCORIS)
- эмбеддинги (это не сети просто удачно пристроились к остальным)
Нет модели — нет генерации, так что используем только с моделью.
Если вы пользуетесь автоматиком, то эмбеддинги должны лежать в папке папка_с_автоматиком/embeddings.
Что такое текстовая инверсия? Немного теоретической части (без матана и программирования)
Процесс, когда мы учим модель называется тренировка, обучение (train).
В результате этого процесса мы получаем файл с моделью — чекпоинт (checkpoint)
Аналогично, когда мы создаем эмбеддинг этот процесс/метод называется текстовая инверсия (textual inversion), а в результате мы получаем наш файл с эмбеддингом (embedding)
Иногда, когда говорят «текстовая инверсия» подразумевают эмбеддинг, поэтому чтобы нам не путаться дальше я буду писать именно «эмбеддинг» (если вы знаете, что London is the capital of Great Britan, то можете посмотреть этот англоязычный видос в котором подробнее рассказывается что такое эмбеддинги и зачем они нужны; в целом очень крутой канал, если интересно, также можете посмотреть у них плейлист по computer vision и по нейросетям вроде тоже в плейлист собрано)
Эта штука называется текстовой инверсией не просто так. Если обычно (txt2img) мы пишем промпт и получаем картинку, то тут мы даем картинки которые хотим получить и просим модель сказать нам, что это за промпт должен быть, а она нам отвечает нужными цифрами.
Лучше воспринимать эмбеддинги как очень точный промпт и не более.
При этом, «точный» совсем не значит «правильный/красивый», это именно в математическом смысле точный.
Например, вы собрали кучу картинок на которых плохие руки, акцентировали на этом внимание при тренировке эмбеддинга и получили файлик. Если упростить, то этот файлик по сути является точно таким же словом как и другие слова в промпте. Именно поэтому они так мало весят — потому что это набор нужных слов, только напрямую в цифрах. И вместо того чтобы писать в негативном промпте bad hands, extra fingers и т.д. мы пишем наш эмбеддинг, который для нейросети становиться еще одним словом, типа «очень плохие руки, не надо так рисовать» — только заключенное в одном.
При этом эмбеддинг очень сильно привязан к модели (точно также как и обычный промпт), поэтому рекомендую брать и использовать эмбеддинги с теми моделями, на которых они были сделаны. Хотя экспериментировать никто не запрещает, может получиться что-то интересное. Если еще учитывать тот факт, что основой для многих моделей служит всего парочка, так скажем «первоначальных» моделей (типо sd 1.4, 1.5 или слитая от novelai), то использовать одинаковые эмбеддинги между ними может быть вполне ок.
В итоге у нас есть возможность натренировать эмбеддинг на конкретное понятие и с высокой долей вероятности получать хороший результат, в рамках конкретных моделей.
Что я думаю про текстовые инверсии?
Я думаю, что это крутая штука для воспроизведения желаемого результата из раза в раз, вместо плясок с промптом и кучи генераций.
Самое важное
Если вы и должны что-то запомнить из этой статьи, то вот что:
Когда мы используем метод текстовой инверсии мы не изменяем модель, мы работает только с текстом. Если то, что вы хотите уже есть в модели, тогда у вас получиться сделать хороший эмбеддинг, иначе — нет.
То есть если модель умеет рисовать только гаечный ключ, цветочный горшок и черепашку (не ниндзя, обычную), то сделав эмбеддинг со своим лицом для такой модели у вас ничего не получиться, потому что модель не умеет рисовать лица людей. Она может знает слово «лицо», типа «лицо черепашки», но лицо человека она не видела и нарисовать не сможет.
Тут можно возразить, что допустим есть модель которая видела кучу людей, разве она не сможет собрав все свои знания о тысячах лиц нарисовать мое?
Во-первых, не встречав до этого такой красоты как ваша, ее не сможет повторить никакая нейросеть *подмигнул*
Во-вторых, тут противоборство двух сторон: нашей нейросети в башке, которая десятки тысяч лет училась считывать лица и та, которая существует пару лет. Мы с вами очень хорошо чувствуем в людях отклонение от чего-то нормального (хотя и нас можно обмануть), поэтому существует такое явление как зловещая долина (uncanny valley) и так как текстовая инверсия не учит модель новому визуалу, модель будет пытаться нарисовать не вас (потому что не знает как выглядите именно вы), а что-то похожее на вас. Тут сильно от модели и вашей внешности зависит, может получиться удачно, может нет. Я рекомендую не тратить на это время и сразу учить ту же LoRA — с нормальными настройками результат будет сильно лучше, а времени потратите +- столько же.
Эмбеддинги это отличная штука, чтобы получить желаемую картинку. Какой-нибудь стиль, предмет или даже персонажа (эмоции, позы, одежду и тд), которого модель уже умеет рисовать.
Честно, хз почему была такая мода учить все подряд через textual inversion.
У koiboi есть хороший видос про разные методы тренировки, на который многие ссылаются и в нем он говорит, что текстовая инверсия учит новому концепту, но скорее всего его не совсем правильно поняли + до этого у него выходило видео только про текстовую инверсию в котором он в том числе упомянул, что она работает только с тем, что уже есть в модели.
Да и вообще, берете бумагу, открываете и в ней во вступлении, английским по белому написано:
Используя всего 3-5 изображений предоставленного пользователем понятия, например, предмета или стиля, мы учимся представлять его с помощью новых «слов» в пространстве эмбеддингов замороженной (неизменяемой) модели text-to-image. Эти «слова» могут быть составлены в предложения на естественном языке, интуитивно понятным образом направляя процесс создания персонализированных творений. (сорян, как получилось, так и перевел)
Поэтому если вы используете текстовую инверсию чтобы научить модель чему-то новому — остановитесь
На этом у меня все, надеюсь помог лучше понять что такое textual inversion. У меня есть телеграм, так что если хотите можете подписаться: https://t.me/mrreplicart и на ютуб периодически видосы заливаю https://www.youtube.com/@mrreplicart
Тем еще очень много, так что если есть предложения/вопросы — пишите, постараюсь разобрать. Как пример, иногда встречаю, как люди пишут/говорят, что «выключил VAE», «сгенерировал без VAE» или что «VAE — постобработка» и она «улучшает изображение».