Diffusers documentation

Inpainting

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

Inpainting

LoRA

Stable Diffusion modeli, Stable Diffusion kullanarak bir maske ve metin komutu sağlayarak bir görüntünün belirli kısımlarını düzenlemenizi sağlayan inpainting (görsel doldurma) işlemine de uygulanabilir.

İpuçları

Bu hattın, inpainting için özel olarak ince ayarlanmış kontrol noktalarıyla kullanılması önerilir; örneğin stable-diffusion-v1-5/stable-diffusion-inpainting. Varsayılan metinden görüntüye Stable Diffusion kontrol noktaları, örneğin stable-diffusion-v1-5/stable-diffusion-v1-5, da uyumludur ancak performansları daha düşük olabilir.

Scheduler hızı ve kalitesi arasındaki ödünleşimi nasıl keşfedebileceğinizi ve pipeline bileşenlerini nasıl verimli bir şekilde yeniden kullanabileceğinizi öğrenmek için Stable Diffusion İpuçları bölümünü mutlaka inceleyin!

Bir görev için resmi kontrol noktalarından birini kullanmakla ilgileniyorsanız, CompVis ve Stability AI Hub kuruluşlarını keşfedin!

StableDiffusionInpaintPipeline

sınıf diffusers.StableDiffusionInpaintPipeline

< >

( vae: diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL | diffusers.models.autoencoders.autoencoder_asym_kl.AsymmetricAutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = True )

Parametreler

  • vae ([AutoencoderKL, AsymmetricAutoencoderKL]) — Görselleri latent temsillere kodlamak ve bu temsillerden çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.
  • text_encoder (CLIPTextModel) — Donmuş metin kodlayıcı (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — Metni tokenleştirmek için bir CLIPTokenizer.
  • unet (UNet2DConditionModel) — Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan bir UNet2DConditionModel.
  • scheduler (SchedulerMixin) — Kodlanmış görüntü latentlerini gürültüden arındırmak için unet ile birlikte kullanılacak bir zamanlayıcı. DDIMScheduler, LMSDiscreteScheduler veya PNDMScheduler olabilir.
  • safety_checker (StableDiffusionSafetyChecker) — Üretilen görsellerin saldırgan veya zararlı olarak değerlendirilip değerlendirilemeyeceğini tahmin eden sınıflandırma modülü. Bir modelin potansiyel zararlarına ilişkin daha fazla ayrıntı için model kartına bakın.
  • feature_extractor (CLIPImageProcessor) — Üretilen görüntülerden özellik çıkarmak için kullanılan CLIPImageProcessor; safety_checker girdileri olarak kullanılır.

Stable Diffusion kullanılarak metin yönlendirmeli görsel inpainting için Pipeline.

Bu model DiffusionPipeline sınıfından devralır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.

Pipeline ayrıca aşağıdaki yükleme yöntemlerini devralır:

__call__

< >

( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: Tensor = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 1.0num_inference_steps: int = 50timesteps: list = Nonesigmas: list = Noneguidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → StableDiffusionPipelineOutput or tuple

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa prompt_embeds parametresini iletmeniz gerekir.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] veya list[np.ndarray]) — Image, inpainting işlemine tabi tutulacak bir görüntü partisyonunu temsil eden numpy dizisi veya tensör (görüntünün hangi kısımlarının mask_image ile maskeleme altına alınacağı ve prompt’a göre yeniden boyanacağı). Hem numpy dizisi hem de pytorch tensörü için beklenen değer aralığı [0, 1] arasındadır. Tensör veya tensör listesi olması durumunda beklenen şekil (B, C, H, W) veya (C, H, W) olmalıdır. Numpy dizisi veya dizi listesi olması durumunda beklenen şekil (B, H, W, C) veya (H, W, C) olmalıdır. image olarak görüntü latentlerini de kabul edebilir, ancak latentler doğrudan geçirildiğinde tekrar kodlanmaz.
  • mask_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] veya list[np.ndarray]) — image için maske uygulanacak bir görüntü partisini temsil eden Image, numpy dizisi veya tensör. Maske içindeki beyaz pikseller yeniden boyanırken siyah pikseller korunur. mask_image bir PIL görüntüsü ise, kullanılmadan önce tek kanala (parlaklık) dönüştürülür. Numpy dizisi veya pytorch tensörü ise 3 yerine tek bir renk kanalı (L) içermelidir; bu nedenle pytorch tensörü için beklenen şekil (B, 1, H, W), (B, H, W), (1, H, W) veya (H, W) olur. Numpy dizisi için ise beklenen şekiller (B, H, W, 1), (B, H, W), (H, W, 1) veya (H, W) şeklindedir.
  • masked_image_latents (torch.Tensor, isteğe bağlı) — Maskeleme uygulanmış görüntünün önceden kodlanmış latent değeri (inpainting için).
  • height (int, isteğe bağlı, varsayılan self.unet.config.sample_size * self.vae_scale_factor) — Oluşturulan görüntünün piksel cinsinden yüksekliği.
  • width (int, isteğe bağlı, varsayılan self.unet.config.sample_size * self.vae_scale_factor) — Oluşturulan görüntünün piksel cinsinden genişliği.
  • padding_mask_crop (int, isteğe bağlı, varsayılan None) — Görsel ve maskelemeye uygulanacak kırpma için kenar boşluğu boyutu. None ise görsel ve mask_image üzerinde kırpma uygulanmaz. padding_mask_crop None değilse, önce görselle aynı en-boy oranına sahip ve tüm maskelenmiş alanı içeren dikdörtgen bir bölge bulunur, ardından bu alan padding_mask_crop değerine göre genişletilir. Ardından görsel ve mask_image, inpainting için orijinal görsel boyutuna yeniden boyutlandırılmadan önce genişletilen alana göre kırpılır. Bu, maskelenmiş alanın küçükken görselin büyük olması ve inpainting için alakasız bilgiler (örneğin arka plan) içermesi durumunda faydalıdır.
  • strength (float, isteğe bağlı, varsayılan 1.0) — Referans image'in dönüştürülme derecesini belirtir. 0 ile 1 arasında olmalıdır. image bir başlangıç noktası olarak kullanılır ve strength değeri arttıkça daha fazla gürültü eklenir. Gürültü azaltma adımlarının sayısı, başlangıçta eklenen gürültü miktarına bağlıdır. strength 1 olduğunda eklenen gürültü maksimumdur ve gürültü azaltma süreci, num_inference_steps içinde belirtilen tam tekrar sayısı kadar çalışır. 1 değeri, image'i temelde yok sayar.
  • num_inference_steps (int, isteğe bağlı, varsayılan 50) — Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar. Bu parametre strength tarafından modüle edilir.
  • timesteps (list[int], isteğe bağlı) — timesteps argümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel zaman adımları. set_timesteps yönteminde. Tanımlanmamışsa, num_inference_steps geçirildiğinde varsayılan davranış kullanılacaktır. Azalan sırada olmalıdır.
  • sigmas (list[float], isteğe bağlı) — set_timesteps yöntemlerinde sigmas argümanını destekleyen zamanlayıcılarla gürültü azaltma sürecinde kullanılacak özel sigmalar. Tanımlanmamışsa, num_inference_steps geçirildiğinde varsayılan davranış kullanılır.
  • guidance_scale (float, isteğe bağlı, varsayılan 7.5) — Daha yüksek bir guidance scale değeri, modelin metinle prompt ile yakından ilişkili görseller üretmesini teşvik eder, ancak bunun bedeli daha düşük görsel kalitedir. Guidance scale, guidance_scale > 1 olduğunda etkinleştirilir.
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimde nelerin dahil edilmeyeceğini yönlendirmek için kullanılan istem veya istemler. Tanımlanmadıysa, bunun yerine negative_prompt_embeds parametresini iletmeniz gerekir. Yönlendirme kullanılmadığında (guidance_scale < 1) yok sayılır.
  • num_images_per_prompt (int, isteğe bağlı, varsayılan 1) — Her istem için oluşturulacak görsel sayısı.
  • eta (float, isteğe bağlı, varsayılan 0.0) — DDIM makalesindeki eta (η) parametresine karşılık gelir. Yalnızca DDIMScheduler için geçerlidir ve diğer zamanlayıcılarda yok sayılır.
  • generator (torch.Generator veya list[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için kullanılan bir torch.Generator.
  • latents (torch.Tensor, isteğe bağlı) — Gaussian dağılımdan örneklenen, gürültülü ve önceden oluşturulmuş latents; görüntü üretimi için girdi olarak kullanılabilir. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklemeye dayalı bir latents tensörü oluşturulur.
  • prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak (istifade ağırlıklandırma) için kullanılabilir. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından üretilir.
  • negative_prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından üretilir.
  • ip_adapter_image — (PipelineImageInput, isteğe bağlı): IP Adapter'larla çalışmak için isteğe bağlı görüntü girdisi.
  • ip_adapter_image_embeds (list[torch.Tensor], isteğe bağlı) — IP-Adapter için önceden oluşturulmuş gömme (embedding) değerleri. IP-adapter sayısı ile aynı uzunlukta bir liste olmalıdır. Her öğe, (batch_size, num_images, emb_dim) biçiminde bir tensör olmalıdır. do_classifier_free_guidance True olarak ayarlandıysa, negatif gömme değerini içermelidir. Sağlanmazsa, gömme değerleri ip_adapter_image girdi argümanından hesaplanır.
  • output_type (str, isteğe bağlı, varsayılan "pil") — Oluşturulan görüntünün çıktı biçimi. PIL.Image veya np.array arasında seçim yapın.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine StableDiffusionPipelineOutput döndürülüp döndürülmemesi.
  • cross_attention_kwargs (dict, isteğe bağlı) — Belirtilirse, self.processor içinde tanımlanan AttentionProcessor'ye iletilen bir kwargs sözlüğü.
  • clip_skip (int, isteğe bağlı) — İstem gömmelemelerini hesaplanırken CLIP'ten atlanacak katman sayısı. 1 değeri, istem gömmelemelerini hesaplamak için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, isteğe bağlı) — Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan, aşağıdaki argümanlara sahip bir fonksiyon veya PipelineCallback / MultiPipelineCallbacks alt sınıfı: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs, callback_on_step_end_tensor_inputs tarafından belirtilen tüm tensörlerin listesini içerecektir.
  • callback_on_step_end_tensor_inputs (list, isteğe bağlı) — callback_on_step_end işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, callback_kwargs argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın ._callback_tensor_inputs özniteliğinde listelenen değişkenleri dahil edebilirsiniz.

Dönüş değeri

StableDiffusionPipelineOutput veya tuple

return_dict True ise StableDiffusionPipelineOutput döndürülür, aksi halde bir tuple döndürülür; bu tuple'ın ilk öğesi üretilen görsellerin listesini, ikinci öğesi ise üretile görselin “not-safe-for-work” (nsfw) içerip içermediğini gösteren bool değerlerinin listesini içerir.

Üretim için pipeline'ın çağrı fonksiyonu.

Örnekler:

>>> import PIL
>>> import requests
>>> import torch
>>> from io import BytesIO

>>> from diffusers import StableDiffusionInpaintPipeline


>>> def download_image(url):
...     response = requests.get(url)
...     return PIL.Image.open(BytesIO(response.content)).convert("RGB")


>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"

>>> init_image = download_image(img_url).resize((512, 512))
>>> mask_image = download_image(mask_url).resize((512, 512))

>>> pipe = StableDiffusionInpaintPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-inpainting", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
>>> image = pipe(prompt=prompt, image=init_image, mask_image=mask_image).images[0]

enable_attention_slicing

< >

( slice_size: str | int = 'auto' )

Parametreler

  • slice_size (str veya int, isteğe bağlı, varsayılan "auto") — "auto" olduğunda, dikkat başlarına giden girdi ikiye bölünür ve dikkat iki adımda hesaplanır. "max" ise, her seferinde yalnızca bir dilim çalıştırılarak maksimum miktarda bellek tasarrufu sağlanır. Bir sayı verilirse, attention_head_dim // slice_size kadar dilim kullanılır. Bu durumda attention_head_dim değeri, slice_size değerinin katı olmalıdır.

Dilimlenmiş dikkat (attention) hesaplamasını etkinleştirir. Bu seçenek etkinleştirildiğinde, dikkat modülü, dikkati birden fazla adımda hesaplamak için girdi tensörünü dilimlere böler. Birden fazla dikkat başlığı (attention head) varsa, hesaplama her başlık üzerinde sıralı olarak gerçekleştirilir. Bu, küçük bir hız kaybı karşılığında bellek tasarrufu sağlamak için kullanışlıdır.

> ⚠️ PyTorch > 2.0 veya xFormers ile zaten scaled_dot_product_attention (SDPA) kullanıyorsanız dikkat dilimlemeyi (attention slicing) etkinleştirmeyin. Bu dikkat hesaplamaları zaten çok bellek verimlidir, bu nedenle bu işlevi etkinleştirmenize gerek yoktur. SDPA veya xFormers ile dikkat dilimlemeyi etkinleştirirseniz ciddi yavaşlamalara yol açabilir!

Örnekler:

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

disable_attention_slicing

< >

( )

Dilimlenmiş dikkat hesaplamasını devre dışı bırakır. enable_attention_slicing daha önce çağrıldıysa, dikkat tek adımda hesaplanır.

enable_xformers_memory_efficient_attention

< >

( attention_op: typing.Optional[typing.Callable] = None )

Parametreler

  • attention_op (Callable, isteğe bağlı) — memory_efficient_attention() fonksiyonunun op argümanı olarak kullanılacak varsayılan None operatörünü geçersiz kılar.

xFormers ile bellek verimli dikkati etkinleştirin. Bu seçenek etkinleştirildiğinde, GPU bellek kullanımının daha düşük olduğunu ve çıkarım sırasında olası bir hızlanmayı gözlemlemelisiniz. Eğitim sırasında hızlanma garanti edilmemektedir.

> ⚠️ Hem bellek verimli dikkat hem de dilimlenmiş dikkat etkinleştirildiğinde, bellek verimli dikkat > önceliklidir.

Örnekler:

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

disable_xformers_memory_efficient_attention

< >

( )

xFormers için bellek verimli dikkati devre dışı bırakın.

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

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )

Parametreler

  • pretrained_model_name_or_path_or_dict (str veya os.PathLike veya dict) — Bkz. lora_state_dict().
  • adapter_name (str, isteğe bağlı) — Yüklenen adaptör modeline atıfta bulunmak için kullanılacak adaptör adı. Belirtilmezse, yüklenen adaptörlerin toplam sayısını temsil eden i için default_{i} kullanılır.
  • low_cpu_mem_usage (bool, isteğe bağlı) — Rastgele ağırlıkları başlatmadan yalnızca önceden eğitilmiş LoRA ağırlıklarını yükleyerek model yükleme hızını artırır.
  • hotswap (bool, isteğe bağlı) — Varsayılan olarak False. Mevcut (LoRA) adaptörün, yeni yüklenen adaptörle yerinde değiştirilip değiştirilmeyeceğini belirtir. Bu, ek bir adaptör yüklemek yerine mevcut adaptör ağırlıklarının yeni adaptörün ağırlıklarıyla değiştirilmesi anlamına gelir. Bu işlem daha hızlı ve bellek açısından daha verimli olabilir. Ancak hotswap'in ana avantajı, model torch.compile ile derlendiğinde yeni adaptörün yüklenmesinin modelin yeniden derlenmesini gerektirmemesidir. Hotswap kullanıldığında, iletilen adapter_name zaten yüklenmiş bir adaptörün adı olmalıdır.

    Yeni ve eski adaptörlerin farklı rütbelere ve/veya LoRA alfa değerlerine (yani ölçeklemeye) sahip olması durumunda, adaptörü yüklemekten önce ek bir yöntemi çağırmalısınız:

pretrained_model_name_or_path_or_dict içinde belirtilen LoRA ağırlıklarını self.unet ve self.text_encoder içine yükler.

Tüm kwargs, self.lora_state_dict'ye iletilir.

State dict'in nasıl yüklendiğine dair daha fazla ayrıntı için lora_state_dict() işlevine bakın.

self.unet'e durum sözlüğünün nasıl yüklendiğine dair daha fazla ayrıntı için load_lora_into_unet() işlevine bakın.

self.text_encoder'e durum sözlüğünün nasıl yüklendiğine dair daha fazla ayrıntı için load_lora_into_text_encoder() işlevine bakın.

save_lora_weights

< >

( save_directory: str | os.PathLikeunet_lora_layers: dict = Nonetext_encoder_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Trueunet_lora_adapter_metadata = Nonetext_encoder_lora_adapter_metadata = None )

Parametreler

  • save_directory (str veya os.PathLike) — LoRA parametrelerinin kaydedileceği dizin. Var değilse oluşturulur.
  • unet_lora_layers (dict[str, torch.nn.Module] veya dict[str, torch.Tensor]) — unet ile eşleşen LoRA katmanlarının state dict'i.
  • text_encoder_lora_layers (dict[str, torch.nn.Module] veya dict[str, torch.Tensor]) — text_encoder'a karşılık gelen LoRA katmanlarının state dict'i. 🤗 Transformers'tan geldiği için metin kodlayıcı LoRA state dict'inin açıkça geçirilmesi gerekir.
  • is_main_process (bool, isteğe bağlı, varsayılan True) — Bu fonksiyonu çağıran sürecin ana süreç olup olmadığı. Dağıtık eğitim sırasında ve bu fonksiyonun tüm süreçlerde çağrılması gerektiğinde kullanışlıdır. Bu durumda, yarış durumlarını önlemek için is_main_process=True değerini yalnızca ana süreçte ayarlayın.
  • save_function (Callable) — Durum sözlüğünü kaydetmek için kullanılacak işlev. Dağıtık eğitim sırasında torch.save yerine başka bir yöntem kullanmanız gerektiğinde faydalıdır. DIFFUSERS_SAVE_MODE ortam değişkeni ile yapılandırılabilir.
  • safe_serialization (bool, isteğe bağlı, varsayılan True) — Modelin safetensors ile mi yoksa geleneksel PyTorch yöntemiyle pickle kullanılarak mı kaydedileceğini belirtir.
  • unet_lora_adapter_metadata — Durum sözlüğüyle birlikte serialize edilecek unet ile ilişkili LoRA adaptör meta verileri.
  • text_encoder_lora_adapter_metadata — Durum sözlüğüyle birlikte seri hale getirilecek metin kodlayıcıyla ilişkili LoRA adaptör meta verileri.

UNet ve metin kodlayıcıya karşılık gelen LoRA parametrelerini kaydedin.

encode_prompt

< >

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parametreler

  • prompt (str veya list[str], isteğe bağlı) — kodlanacak prompt
  • device — (torch.device): torch cihazı
  • num_images_per_prompt (int) — her prompt için oluşturulacak görsel sayısı
  • do_classifier_free_guidance (bool) — classifier free guidance kullanılacak mı
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
  • prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
  • negative_prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından oluşturulur.
  • lora_scale (float, isteğe bağlı) — LoRA katmanları yüklendiyse, metin kodlayıcısının tüm LoRA katmanlarına uygulanacak LoRA ölçeği.
  • clip_skip (int, isteğe bağlı) — İstem gömmelemelerini hesaplanırken CLIP'ten atlanacak katman sayısı. 1 değeri, istem gömmelemelerini hesaplamak için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.

İsteği metin kodlayıcı gizli durumlarına kodlar.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parametreler

  • w (torch.Tensor) — Belirtilen bir yönlendirme ölçeğiyle gömme vektörleri üretin ve ardından zaman adımları gömmelerini zenginleştirmek için kullanın.
  • embedding_dim (int, isteğe bağlı, varsayılan 512) — Oluşturulacak gömme boyutu.
  • dtype (torch.dtype, isteğe bağlı, varsayılan torch.float32) — Oluşturulan gömme vektörlerinin veri türü.

Dönüş değeri

torch.Tensor

(len(w), embedding_dim) biçiminde gömme vektörleri.

Bkz. https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionPipelineOutput

sınıf diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarraynsfw_content_detected: list[bool] | None )

Parametreler

  • images (list[PIL.Image.Image] veya np.ndarray) — batch_size uzunluğunda gürültüsü azaltılmış PIL görüntülerinin listesi veya (batch_size, height, width, num_channels) biçiminde NumPy dizisi.
  • nsfw_content_detected (list[bool]) — İlgili üretilen görüntünün “iş yerinde uygun olmayan” (nsfw) içerik içerip içermediğini gösteren liste veya güvenlik kontrolünün yapılamadığı durumlarda None.

Stable Diffusion hatları için çıktı sınıfı.

Update on GitHub