Buckets:
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.