Текстовая инверсия
Что такое текстовая инверсия?
Текстовая инверсия позволяет обучить крошечную часть нейронной сети на собственных картинках и использовать результаты при генерации новых. В этом контексте встраивание — это название крошечной части нейронной сети, которую вы обучили.
Результатом обучения является файл .pt или .bin (первый формат используется автором оригинала, второй - библиотекой диффузоров) с вложением в него.
Подробнее о том, что такое текстовая инверсия, см. на исходном сайте: https://textual-inversion.github.io/.
Использование предварительно обученных эмбеддингов
Поместите вложение в каталог «embeddings» и используйте его имя файла в подсказке. Вам не нужно перезапускать программу, чтобы это работало.
В качестве примера вот вставка Усада Пекора Тренировалась на модели WD1.2, на 53 картинках ( 119 дополнен) для 19500 шагов, с 8 векторами на настройку токена.
Картины, которые он генерирует:
portrait of usada pekora
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 45dee52b
Вы можете комбинировать несколько вложений в одном приглашении:
portrait of usada pekora, mignon
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 45dee52b
Будьте очень осторожны с тем, какую модель вы используете со своими встраиваниями: они хорошо работают с моделью, которую вы использовали во время обучения, и не так хорошо с другими моделями. Например, вот приведенная выше модель встраивания и стабильной диффузии vanilla 1.4:
portrait of usada pekora
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 7460a6fa
Обучающие вложения
Вкладка Инверсия текста
Экспериментальная поддержка обучающих вложений в пользовательский интерфейс.
- создать новую пустую вставку, выбрать директорию с изображениями, обучить на ней вставку
- функция очень сырая, используйте на свой страх и риск
- я смог воспроизвести результаты, которые я получил с другими репозиториями при обучении аниме-художников стилям, после нескольких десятков тысяч шагов
- работает с поплавками половинной точности, но нужно поэкспериментировать, чтобы увидеть, будут ли результаты такими же хорошими
- если у вас достаточно памяти, безопаснее запускать с
--no-half --precision full
- Раздел для пользовательского интерфейса для автоматического запуска предварительной обработки изображений.
- вы можете прерывать и возобновлять обучение без потери данных (кроме параметров оптимизации AdamW, но, кажется, ни один из существующих репозиториев не сохраняет их, так что общее мнение - они не важны)
- нет поддержки размеров партии или накопления градиента
- не должно быть возможности запустить это с флагами
--lowvram
и--medvram
.
Объяснение параметров
Создание встраивания
- Имя: имя файла созданного встраивания. Вы также будете использовать этот текст в подсказках при обращении к встраиванию.
- Текст инициализации: создаваемое встраивание будет изначально заполнено векторами этого текста. Если вы создадите одно векторное вложение с именем «zzzz1234» с «деревом» в качестве текста инициализации и используете его в подсказке без обучения, то подсказка «a zzzz1234 by monet» создаст те же изображения, что и «tree by monet».
- Количество векторов на токен: размер встраивания. Чем больше это значение, тем больше информации о предмете вы сможете уместить во вложение, но и тем больше слов оно уберет из вашего оперативного пособия. При стабильной диффузии у вас есть ограничение в 75 токенов в подсказке. Если вы используете вставку с 16 векторами в подсказке, у вас останется место для 75 - 16 = 59. Также по моему опыту, чем больше количество векторов, тем больше изображений вам нужно для получения хороших результатов.
Предварительная обработка
Это берет изображения из каталога, обрабатывает их, чтобы они были готовы к текстовой инверсии, и записывает результаты в другой каталог. Это удобная функция, и вы можете предварительно обработать изображения самостоятельно, если хотите.
- Исходный каталог: каталог с изображениями
- Каталог назначения: каталог, в который будут записаны результаты.
- Создавать перевернутые копии: для каждого изображения также запишите его зеркальную копию.
- Разделить слишком большое изображение на два: если изображение слишком высокое или широкое, измените его размер, чтобы короткая сторона соответствовала желаемому разрешению, и создайте из него два, возможно, пересекающихся изображения.
- Использовать заголовок BLIP в качестве имени файла: используйте модель BLIP из опросчика, чтобы добавить заголовок к имени файла.
Обучение встраиванию
- Встраивание: выберите вложение, которое вы хотите обучить, из этого раскрывающегося списка.
-
Скорость обучения: как быстро должно проходить обучение. Опасность установки этого параметра на высокое значение заключается в том, что вы можете нарушить встраивание, если установите слишком высокое значение. Если вы видите «Потеря: nan» в текстовом поле с информацией об обучении, это означает, что вы потерпели неудачу, и встраивание мертво. Со значением по умолчанию этого не должно происходить. В этом параметре можно указать несколько скоростей обучения, используя следующий синтаксис: «0,005:100, 1e-3:1000, 1e-5» — это будет обучать с lr «0,005» для первых 100 шагов, затем «1e-3». ` до 1000 шагов, затем
1e-5
до конца. - Каталог набора данных: каталог с изображениями для обучения. Все они должны быть квадратными.
- Каталог журналов: в этот каталог будут записываться образцы изображений и копии частично обученных вложений.
-
Файл шаблона подсказки: текстовый файл с подсказками, по одной в строке, для обучения модели. Посмотрите файлы в каталоге
textual_inversion_templates
, чтобы узнать, что вы можете с ними сделать. Используйтеstyle.txt
при обучении стилей иsubject.txt
при обучении внедрению объектов. В файле можно использовать следующие теги: -
[имя]
: имя встраивания -
[filewords]
: слова из имени файла изображения из набора данных. Подробнее см. ниже. - Максимальное количество шагов: обучение остановится после того, как будет выполнено это количество шагов. Шаг — это когда одно изображение (или один пакет изображений, но пакеты в настоящее время не поддерживаются) показывается модели и используется для улучшения встраивания. если вы прервете тренировку и возобновите ее позже, количество шагов сохранится.
- Сохранение изображений с встраиванием в виде фрагментов PNG: каждый раз, когда создается изображение, оно объединяется с последним зарегистрированным встраиванием и сохраняется в image_embeddings в формате, которым можно поделиться как изображением и поместить в папку встраивания. и загружен.
- Подсказка для предварительного просмотра: если она не пуста, эта подсказка будет использоваться для создания изображений для предварительного просмотра. Если пусто, будет использоваться подсказка из обучения.
файловые слова
[filewords]
— это тег для файла шаблона подсказки, который позволяет вам вставлять текст из имени файла в подсказку. По умолчанию расширение файла удаляется, а также все цифры и дефисы (-
) в начале имени файла. Таким образом, это имя файла: 000001-1-a man in suit.png
станет этим текстом для подсказки: a man in suit
. Форматирование текста в имени файла оставлено как есть.
Можно использовать опции Filename word regex
и Filename join string
, чтобы изменить текст из имени файла: например, со словом regex = \w+
и join string = ,
файл, указанный выше, создаст этот текст. : а, мужчина, в, костюме
. регулярное выражение используется для извлечения слов из текста (и это ['a', 'man', 'in', 'suit', ]
), а соединяющая строка (‘, ‘) помещается между этими словами для создания одного текст: а, мужчина, в, костюме
.
Также можно создать текстовый файл с тем же именем, что и у изображения (000001-1-мужчина в костюме.txt
) и просто поместить туда текст подсказки. Параметры имени файла и регулярного выражения использоваться не будут.
Сторонние репозитории
Я успешно обучил вложения, используя эти репозитории:
Другие варианты — тренироваться на колабах и/или использовать библиотеку диффузоров, о которой я ничего не знаю.
Поиск вложений онлайн
- библиотека концепций обнимающего лица - много разных вложений, но
- 16777216c - NSFW, стиль аниме-художника таинственного незнакомца.
- cattoroboto - несколько вложений аниме от анона.
- viper1 - NSFW, пушистые девочки.
- вставки анона - NSFW, художники аниме.
- rentry - страница со ссылками на вложения из множества источников.
Гиперсети
Гиперсети — это новая (понятно?) концепция тонкой настройки модели без изменения ее веса.
Текущий способ обучения гиперсетей — на вкладке текстовой инверсии.
Обучение работает так же, как и при текстовой инверсии.
Единственное требование — использовать очень-очень низкую скорость обучения, что-то вроде 0,000005 или 0,0000005.
Глупый Глупый Руководство
Анонимный пользователь написал руководство с картинками по использованию гиперсетей: https://rentry.org/hypernetwork4dumdums
Выгружать VAE и CLIP из VRAM при обучении
Эта опция на вкладке настроек позволяет сэкономить немного памяти за счет более медленного создания изображения для предварительного просмотра.