Buckets:

hf-doc-build/doc / diffusers /main /ru /api /loaders /textual_inversion.md
mishig's picture
|
download
raw
12.8 kB

Textual Inversion

Textual Inversion — это метод обучения для персонализации моделей путём обучения новых текстовых эмбеддингов на основе нескольких примеров изображений. Файл, полученный в результате обучения, крайне мал (несколько КБ), а новые эмбеддинги можно загрузить в текстовый энкодер.

TextualInversionLoaderMixin предоставляет функцию для загрузки эмбеддингов Textual Inversion из Diffusers и Automatic1111 в текстовый энкодер, а также для загрузки специального токена, активирующего эти эмбеддинги.

Чтобы узнать больше о том, как загружать эмбеддинги Textual Inversion, см. руководство по загрузке Textual Inversion.

TextualInversionLoaderMixin[[diffusers.loaders.TextualInversionLoaderMixin]]

diffusers.loaders.TextualInversionLoaderMixin[[diffusers.loaders.TextualInversionLoaderMixin]]

diffusers.loaders.TextualInversionLoaderMixin()

Источник

Загрузите токены и эмбеддинги Textual Inversion в токенизатор и текстовый энкодер.

load_textual_inversion[[diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion]]

load_textual_inversion(pretrained_model_name_or_path: str | list[str] | dict[str, torch.Tensor] | list[dict[str, torch.Tensor]], token: str | list[str] | None = None, tokenizer: 'PreTrainedTokenizer' | None = None, text_encoder: 'PreTrainedModel' | None = None, **kwargs)

Источник

Параметры:

pretrained_model_name_or_path (str или os.PathLike или list[str or os.PathLike] или Dict или list[Dict]) : Может быть одним из следующих вариантов или списком таких вариантов: - Строка, model id (например, sd-concepts-library/low-poly-hd-logos-icons) предобученной модели, размещенной на Hub. - Путь к каталогу (например, ./my_text_inversion_directory/), содержащему веса textual inversion. - Путь к файлу (например, ./my_text_inversions.pt), содержащему веса textual inversion. - torch state dict.

token (str или list[str], необязательный) : Переопределяет токен, используемый для весов текстовой инверсии. Если pretrained_model_name_or_path является списком, то token также должен быть списком той же длины.

text_encoder (CLIPTextModel, необязательный) : Замороженный текстовый энкодер (clip-vit-large-patch14). Если не указан, функция использует self.tokenizer.

tokenizer (CLIPTokenizer, необязательный) : CLIPTokenizer для токенизации текста. Если не указан, функция использует self.tokenizer.

weight_name (str, необязательный) : Имя файла с кастомными весами. Это следует использовать, когда: - Сохранённый файл текстовой инверсии в формате 🤗 Diffusers был сохранён под конкретным именем весов, например text_inv.bin. - Сохранённый файл текстовой инверсии в формате Automatic1111.

cache_dir (str | os.PathLike, необязательный) : Путь к каталогу, в котором кэшируется конфигурация загруженной предобученной модели, если стандартный кэш не используется.

force_download (bool, необязательный, по умолчанию False) : Указывает, следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, заменяя кэшированные версии, если они существуют.

proxies (dict[str, str], необязательный) : Словарь прокси-серверов для использования по протоколу или конечной точке, например, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси используются при каждом запросе.

local_files_only (bool, необязательный, по умолчанию False) : Загружать только локальные веса модели и файлы конфигурации или нет. Если установлено в True, модель не будет скачана с Hub.

hf_token (str или bool, необязательный) : Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если True, используется токен, сгенерированный командой diffusers-cli login (сохранённый в ~/.huggingface).

revision (str, необязательный, по умолчанию "main") : Конкретная версия модели, которую следует использовать. Может быть именем ветки, именем тега, идентификатором коммита или любым другим идентификатором, поддерживаемым Git.

subfolder (str, необязательный, по умолчанию "") : Путь к подпапке, в которой находится файл модели в составе более крупного репозитория моделей на Hub или локально.

mirror (str, необязательный) : Зеркальный источник для решения проблем с доступностью при загрузке модели в Китае. Мы не гарантируем актуальность или безопасность источника, поэтому за дополнительной информацией обращайтесь на сайт зеркала.

Загрузите эмбеддинги Textual Inversion в текстовый энкодер StableDiffusionPipeline (поддерживаются форматы 🤗 Diffusers и Automatic1111).

Пример:

Для загрузки вектора встраивания Textual Inversion в формате 🤗 Diffusers:

from diffusers import StableDiffusionPipeline
import torch

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("sd-concepts-library/cat-toy")

prompt = "A <cat-toy> backpack"

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("cat-backpack.png")

Чтобы загрузить вектор встраивания Textual Inversion в формате Automatic1111, сначала скачайте вектор (например, с civitAI), а затем загрузите его

локально:

from diffusers import StableDiffusionPipeline
import torch

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2")

prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details."

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("character.png")

maybe_convert_prompt[[diffusers.loaders.TextualInversionLoaderMixin.maybe_convert_prompt]]

maybe_convert_prompt(prompt: str | list[str], tokenizer: 'PreTrainedTokenizer')

Источник

Параметры:

prompt (str или список str) : Промпт или промпты для управления генерацией изображения.

tokenizer (PreTrainedTokenizer) : токенизатор, отвечающий за кодирование промпта во входные токены.

Возвращает: str или список str

Преобразованный промпт

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

unload_textual_inversion[[diffusers.loaders.TextualInversionLoaderMixin.unload_textual_inversion]]

unload_textual_inversion(tokens: str | list[str] | None = None, tokenizer: 'PreTrainedTokenizer' | None = None, text_encoder: 'PreTrainedModel' | None = None)

Источник

Разгрузите эмбеддинги Textual Inversion из текстового энкодера StableDiffusionPipeline

Пример:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")

# Example 1
pipeline.load_textual_inversion("sd-concepts-library/gta5-artwork")
pipeline.load_textual_inversion("sd-concepts-library/moeb-style")

# Remove all token embeddings
pipeline.unload_textual_inversion()

# Example 2
pipeline.load_textual_inversion("sd-concepts-library/moeb-style")
pipeline.load_textual_inversion("sd-concepts-library/gta5-artwork")

# Remove just one token
pipeline.unload_textual_inversion("<moe-bius>")

# Example 3: unload from SDXL
pipeline = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0")
embedding_path = hf_hub_download(
    repo_id="linoyts/web_y2k", filename="web_y2k_emb.safetensors", repo_type="model"
)

# load embeddings to the text encoders
state_dict = load_file(embedding_path)

# load embeddings of text_encoder 1 (CLIP ViT-L/14)
pipeline.load_textual_inversion(
    state_dict["clip_l"],
    tokens=["<s0>", "<s1>"],
    text_encoder=pipeline.text_encoder,
    tokenizer=pipeline.tokenizer,
)
# load embeddings of text_encoder 2 (CLIP ViT-G/14)
pipeline.load_textual_inversion(
    state_dict["clip_g"],
    tokens=["<s0>", "<s1>"],
    text_encoder=pipeline.text_encoder_2,
    tokenizer=pipeline.tokenizer_2,
)

# Unload explicitly from both text encoders and tokenizers
pipeline.unload_textual_inversion(
    tokens=["<s0>", "<s1>"], text_encoder=pipeline.text_encoder, tokenizer=pipeline.tokenizer
)
pipeline.unload_textual_inversion(
    tokens=["<s0>", "<s1>"], text_encoder=pipeline.text_encoder_2, tokenizer=pipeline.tokenizer_2
)

Xet Storage Details

Size:
12.8 kB
·
Xet hash:
597c5b643bae859d9c7dc0ab1fe5961a98a0a422da2fe577edd6448cf4f92327

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.