Diffusers documentation

Metinsel Tersine Çevirme

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Metinsel Tersine Çevirme

Textual Inversion, birkaç örnek görüntüden yeni metin gömlemleri öğrenerek modelleri kişiselleştirmek için kullanılan bir eğitim yöntemidir. Eğitimden üretilen dosya son derece küçüktür (birkaç KB) ve yeni gömlemler metin kodlayıcıya yüklenebilir.

TextualInversionLoaderMixin, Diffusers ve Automatic1111 kaynaklarından Textual Inversion gömme vektörlerini metin kodlayıcıya yüklemek ve bu gömme vektörlerini etkinleştirmek için özel bir jeton yüklemek üzere bir işlev sağlar.

Textual Inversion gömme yüklemelerinin nasıl yükleneceğini öğrenmek için Textual Inversion yükleme kılavuzuna bakın.

TextualInversionLoaderMixin

sınıf diffusers.loaders.TextualInversionLoaderMixin

< >

( )

Textual Inversion jetonlarını ve gömme değerlerini tokenizer ve metin kodlayıcıya yükleyin.

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 = Nonetokenizer: 'PreTrainedTokenizer' | None = Nonetext_encoder: 'PreTrainedModel' | None = None**kwargs )

Parametreler

  • pretrained_model_name_or_path (str veya os.PathLike veya list[str or os.PathLike] veya Dict veya list[Dict]) — Aşağıdakilerden biri veya bunların bir listesi olabilir:
    • Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin sd-concepts-library/low-poly-hd-logos-icons).
    • Metinsel tersine çevirme ağırlıklarını içeren bir dizin (örneğin ./my_text_inversion_directory/) yoluna.
    • Metinsel tersine çevirme ağırlıklarını içeren bir dosyanın (örneğin ./my_text_inversions.pt) yolu.
    • Bir torch durum sözlüğü.
  • token (str veya list[str], isteğe bağlı) — Metinsel ters çevirme ağırlıkları için kullanılacak belirtecin üzerine yazılmasını sağlar. pretrained_model_name_or_path bir liste ise, token da eşit uzunlukta bir liste olmalıdır.
  • text_encoder (CLIPTextModel, isteğe bağlı) — Donmuş metin kodlayıcı (clip-vit-large-patch14). Belirtilmezse, fonksiyon self.tokenizer değerini alır.
  • tokenizer (CLIPTokenizer, isteğe bağlı) — Metni tokenleştirmek için bir CLIPTokenizer. Belirtilmezse, fonksiyon self.tokenizer değerini alır.
  • weight_name (str, isteğe bağlı) — Özel bir ağırlık dosyasının adı. Bu, aşağıdaki durumlarda kullanılmalıdır:
    • Kaydedilen metin ters çevirme dosyası 🤗 Diffusers biçimindedir ancak text_inv.bin gibi belirli bir ağırlık adı altında kaydedilmiştir.
    • Kaydedilen metin tersine çevirme dosyası Automatic1111 biçimindedir.
  • cache_dir (str | os.PathLike, isteğe bağlı) — Standart önbellek kullanılmıyorsa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alındığı dizinin yolu.
  • force_download (bool, isteğe bağlı, varsayılan False) — Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar.
  • proxies (dict[str, str], isteğe bağlı) — Protokole veya uç noktaya göre kullanılacak vekil sunucuların sözlüğü, örneğin {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Vekiller her istekte kullanılır.
  • local_files_only (bool, isteğe bağlı, varsayılan False) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir. True olarak ayarlanırsa, model Hub'dan indirilmez.
  • hf_token (str veya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. True ise, diffusers-cli login ile oluşturulan jeton (~/.huggingface içinde saklanır) kullanılır.
  • revision (str, isteğe bağlı, varsayılan "main") — Kullanılacak belirli model sürümü. Bir dal adı, etiket adı, commit kimliği veya Git tarafından izin verilen herhangi bir tanımlayıcı olabilir.
  • subfolder (str, isteğe bağlı, varsayılan "") — Hub'da veya yerel olarak daha büyük bir model deposu içindeki bir model dosyasının alt klasör konumu.
  • mirror (str, isteğe bağlı) — Çin'de bir model indirirken erişilebilirlik sorunlarını çözmek için kullanılacak ayna kaynağı. Kaynağın güncelliğini veya güvenliğini garanti etmiyoruz; daha fazla bilgi için lütfen ayna sitesine başvurun.

StableDiffusionPipeline metin kodlayıcısına Textual Inversion gömme değerlerini yükleyin (hem 🤗 Diffusers hem de Automatic1111 biçimleri desteklenir).

Örnek:

🤗 Diffusers biçiminde bir Textual Inversion gömme vektörü yüklemek için:

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")

Automatic1111 biçiminde bir Textual Inversion gömme vektörünü yüklemek için, vektörü önce indirin (örneğin civitAI üzerinden) ve ardından vektörü yükleyin

yerel olarak:

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

< >

( prompt: str | list[str]tokenizer: 'PreTrainedTokenizer' ) → str or list of str

Parametreler

  • prompt (str veya str listesi) — Görsel üretimini yönlendirmek için kullanılan istem veya istemler.
  • tokenizer (PreTrainedTokenizer) — İstemciyi girdi jetonlarına kodlamaktan sorumlu olan tokenizer.

Dönüş değeri

str veya str listesi

Dönüştürülen istem

Çok vektörlü metinsel tersine çevirme gömme değerine karşılık gelen özel bir token içeren istemleri işler ve bu token'ı, vektörlerden her birine karşılık gelen birden fazla özel token ile değiştirir. İstemde metinsel tersine çevirme token'ı yoksa veya metinsel tersine çevirme token'ı tek bir vektörse, girdi istemi aynen döndürülür.

unload_textual_inversion

< >

( tokens: str | list[str] | None = Nonetokenizer: 'PreTrainedTokenizer' | None = Nonetext_encoder: 'PreTrainedModel' | None = None )

StableDiffusionPipeline metin kodlayıcısından Textual Inversion gömme vektörlerini bellekten kaldırın

Örnek:

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
)
Update on GitHub