Diffusers documentation
InstructPix2Pix
InstructPix2Pix
InstructPix2Pix: Learning to Follow Image Editing Instructions, Tim Brooks, Aleksander Holynski ve Alexei A. Efros tarafından hazırlanmıştır.
Makalenin özeti şudur:
İnsan talimatlarından yola çıkarak görüntü düzenleme için bir yöntem öneriyoruz: bir giriş görüntüsü ve modele ne yapması gerektiğini belirten yazılı bir talimat verildiğinde, modelimiz bu talimatları izleyerek görüntüyü düzenler. Bu sorun için eğitim verisi elde etmek amacıyla, iki büyük önceden eğitilmiş modelin bilgisini — bir dil modeli (GPT-3) ve bir metinden görüntüye model (Stable Diffusion) — birleştirerek görüntü düzenleme örneklerinden oluşan büyük bir veri seti üretiyoruz. Koşullu difüzyon modelimiz olan InstructPix2Pix, ürettiğimiz veriler üzerinde eğitilir ve çıkarım sırasında gerçek görüntülere ve kullanıcı tarafından yazılan talimatlara genelleme yapar. Düzenlemeleri ileri yönde (forward pass) gerçekleştirdiği ve örnek başına ince ayar veya tersine çevirme (inversion) gerektirmediği için modelimiz, saniyeler içinde görüntüleri düzenler. Çeşitli bir giriş görüntüsü ve yazılı talimat koleksiyonu için ikna edici düzenleme sonuçları gösteriyoruz.
InstructPix2Pix hakkında ek bilgiyi makalede, orijinal kod tabanında bulabilir ve demo ile deneyebilirsiniz.
Scheduler'lar kılavuzunu inceleyerek scheduler hızı ve kalitesi arasındaki ödünleşimi nasıl keşfedebileceğinizi öğrenin ve aynı bileşenleri birden fazla pipeline'a nasıl verimli bir şekilde yükleyebileceğinizi öğrenmek için pipeline'lar arasında bileşenleri yeniden kullanma bölümüne göz atın.
StableDiffusionInstructPix2PixPipeline
sınıf diffusers.StableDiffusionInstructPix2PixPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = Nonerequires_safety_checker: bool = True )
Parametreler
- vae (AutoencoderKL) — 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
unetile 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_checkergirdileri olarak kullanılır.
Metin talimatlarını takip ederek piksel düzeyinde görüntü düzenleme için Pipeline (Stable Diffusion tabanlı).
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:
- Metinsel tersine çevirme gömme yüklemek için load_textual_inversion()
- LoRA ağırlıklarını yüklemek için load_lora_weights()
- LoRA ağırlıklarını kaydetmek için save_lora_weights()
- IP Adapter'ları yüklemek için load_ip_adapter()
__call__
< source >( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonenum_inference_steps: int = 100guidance_scale: float = 7.5image_guidance_scale: float = 1.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 = Truecallback_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']cross_attention_kwargs: dict[str, typing.Any] | None = None**kwargs ) → StableDiffusionPipelineOutput or tuple
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysaprompt_embedsparametresini iletmeniz gerekir. - image (
torch.Tensornp.ndarray,PIL.Image.Image,list[torch.Tensor],list[PIL.Image.Image]veyalist[np.ndarray]) —prompt’e göre yeniden boyanacak bir görüntü partisini temsil edenImageveya tensör. Ayrıcaimageolarak görüntü latentlerini de kabul edebilir, ancak latentler doğrudan geçirilirse tekrar kodlanmaz. - num_inference_steps (
int, isteğe bağlı, varsayılan 100) — 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. - guidance_scale (
float, isteğe bağlı, varsayılan 7.5) — Daha yüksek bir guidance scale değeri, modelin metinlepromptile yakından ilişkili görseller üretmesini teşvik eder, ancak bunun bedeli daha düşük görsel kalitedir. Guidance scale,guidance_scale > 1olduğunda etkinleştirilir. - image_guidance_scale (
float, isteğe bağlı, varsayılan 1.5) — Oluşturulan görüntüyü başlangıçimage'ine doğru iter. Görüntü yönlendirme ölçeği,image_guidance_scale > 1olarak ayarlanarak etkinleştirilir. Daha yüksek görüntü yönlendirme ölçeği, kaynakimage'iyle yakından ilişkili oluşturulan görüntüleri teşvik eder, genellikle bu da daha düşük görüntü kalitesi pahasına olur. Bu iş akışı en az1değerini gerektirir. - negative_prompt (
strveyalist[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 yerinenegative_prompt_embedsparametresini 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, isteğe bağlı) — Üretimi deterministik hale getirmek için kullanılan birtorch.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 rastgelegeneratorkullanı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ğerleripromptgirdi 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_promptgirdi argümanından üretilir. - ip_adapter_image — (
PipelineImageInput, isteğe bağlı): IP Adapters ile ç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_guidanceTrueolarak ayarlandıysa, negatif gömme değerini içermelidir. Sağlanmazsa, gömme değerleriip_adapter_imagegirdi 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.Imageveyanp.arrayarasında seçim yapın. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine StableDiffusionPipelineOutput döndürülüp döndürülmemesi. - 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 veyaPipelineCallback/MultiPipelineCallbacksalt sınıfı:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargs,callback_on_step_end_tensor_inputstarafından belirtilen tüm tensörlerin listesini içerecektir. - callback_on_step_end_tensor_inputs (
list, isteğe bağlı) —callback_on_step_endişlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler,callback_kwargsargümanı olarak geçirilir. Yalnızca pipeline sınıfınızın._callback_tensor_inputsözniteliğinde listelenen değişkenleri dahil edebilirsiniz. - cross_attention_kwargs (
dict, isteğe bağlı) — Belirtilirse,self.processoriçinde tanımlananAttentionProcessor'ye iletilen bir kwargs sözlüğü.
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 StableDiffusionInstructPix2PixPipeline
>>> def download_image(url):
... response = requests.get(url)
... return PIL.Image.open(BytesIO(response.content)).convert("RGB")
>>> img_url = "https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
>>> image = download_image(img_url).resize((512, 512))
>>> pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(
... "timbrooks/instruct-pix2pix", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "make the mountains snowy"
>>> image = pipe(prompt=prompt, image=image).images[0]load_textual_inversion
< source >( 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 (
strveyaos.PathLikeveyalist[str or os.PathLike]veyaDictveyalist[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üğü.
- Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin
- token (
strveyalist[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_pathbir liste ise,tokenda 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.bingibi belirli bir ağırlık adı altında kaydedilmiştir. - Kaydedilen metin tersine çevirme dosyası Automatic1111 biçimindedir.
- Kaydedilen metin ters çevirme dosyası 🤗 Diffusers biçimindedir ancak
- 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ılanFalse) — 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ılanFalse) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir.Trueolarak ayarlanırsa, model Hub'dan indirilmez. - hf_token (
strveya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise,diffusers-cli loginile oluşturulan jeton (~/.huggingfaceiç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
< source >( 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 (
strveyaos.PathLikeveyadict) — 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çindefault_{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 olarakFalse. 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, iletilenadapter_namezaten 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
< source >( 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 (
strveyaos.PathLike) — LoRA parametrelerinin kaydedileceği dizin. Var değilse oluşturulur. - unet_lora_layers (
dict[str, torch.nn.Module]veyadict[str, torch.Tensor]) —unetile eşleşen LoRA katmanlarının state dict'i. - text_encoder_lora_layers (
dict[str, torch.nn.Module]veyadict[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ılanTrue) — 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çinis_main_process=Truedeğ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ındatorch.saveyerine başka bir yöntem kullanmanız gerektiğinde faydalıdır.DIFFUSERS_SAVE_MODEortam değişkeni ile yapılandırılabilir. - safe_serialization (
bool, isteğe bağlı, varsayılanTrue) — Modelinsafetensorsile mi yoksa geleneksel PyTorch yöntemiylepicklekullanı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.
StableDiffusionXLInstructPix2PixPipeline
sınıf diffusers.StableDiffusionXLInstructPix2PixPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Noneis_cosxl_edit: bool | None = False )
Parametreler
- vae (AutoencoderKL) — 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ı. Stable Diffusion XL, CLIP'in metin bölümünü, özellikle clip-vit-large-patch14 varyantını kullanır. - text_encoder_2 (
CLIPTextModelWithProjection) — İkinci dondurulmuş metin kodlayıcı. Stable Diffusion XL, CLIP'in metin ve havuz (pool) bölümünü kullanır, özellikle laion/CLIP-ViT-bigG-14-laion2B-39B-b160k değişkenini. - tokenizer (
CLIPTokenizer) — CLIPTokenizer sınıfının tokenization aracı. - tokenizer_2 (
CLIPTokenizer) — CLIPTokenizer sınıfının ikinci Tokenizer'ı. - unet (UNet2DConditionModel) — Kodlanmış görüntü latentlerini gürültüden arındırmak için koşullu U-Net mimarisi.
- scheduler (SchedulerMixin) —
Kodlanmış görüntü latentlerini gürültüden arındırmak için
unetile birlikte kullanılacak bir zamanlayıcı. DDIMScheduler, LMSDiscreteScheduler veya PNDMScheduler olabilir. - requires_aesthetics_score (
bool, isteğe bağlı, varsayılan"False") —unet'in çıkarım sırasında aesthetic_score koşulunun geçirilmesini gerektirip gerektirmediğini belirtir. Ayrıcastabilityai/stable-diffusion-xl-refiner-1-0yapılandırmasına da bakın. - force_zeros_for_empty_prompt (
bool, isteğe bağlı, varsayılan"True") — Negatif istek gömme değerlerinin her zaman 0 olarak ayarlanıp ayarlanmayacağı. Ayrıcastabilityai/stable-diffusion-xl-base-1-0yapılandırmasına da bakın. - add_watermarker (
bool, isteğe bağlı) — Çıktı görsellerine filigran eklemek için invisible_watermark kütüphanesinin kullanılıp kullanılmayacağını belirtir. Tanımlanmamışsa, paket yüklüyse varsayılan olarak True olur, aksi halde filigran kullanılmaz. - is_cosxl_edit (
bool, isteğe bağlı) — Ayarlandığında görüntü latentleri ölçeklenir.
Metin talimatlarını takip ederek piksel düzeyinde görüntü düzenleme için pipeline. Stable Diffusion XL tabanlıdır.
Bu model DiffusionPipeline sınıfından devralır. Kütüphanenin tüm pipeline'lar için uyguladığı genel yöntemler (indirme veya kaydetme, belirli bir cihazda çalıştırma vb.) için üst sınıf belgelendirmesine bakın.
Pipeline ayrıca aşağıdaki yükleme yöntemlerini devralır:
- Metinsel tersine çevirme gömme yüklemek için load_textual_inversion()
.ckptdosyalarını yüklemek için from_single_file()- LoRA ağırlıklarını yüklemek için load_lora_weights()
- LoRA ağırlıklarını kaydetmek için save_lora_weights()
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 100denoising_end: float | None = Noneguidance_scale: float = 5.0image_guidance_scale: float = 1.5negative_prompt: str | list[str] | None = Nonenegative_prompt_2: 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] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int = 1cross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = None ) → ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerineprompt_embedsgeçirilmelidir. - prompt_2 (
strveyalist[str], isteğe bağlı) —tokenizer_2vetext_encoder_2'e gönderilecek istem veya istemler. Tanımlanmamışsa, her iki metin kodlayıcıdapromptkullanılır - image (
torch.TensorveyaPIL.Image.Imageveyanp.ndarrayveyalist[torch.Tensor]veyalist[PIL.Image.Image]veyalist[np.ndarray]) — Hattın (pipeline) değiştireceği görsel(ler). - 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. - 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. - denoising_end (
float, isteğe bağlı) — Belirtilirse, gürültü azaltma sürecinin tamamının, kasıtlı olarak erken sonlandırılmadan önce tamamlanacak oranını (0.0 ile 1.0 arasında) belirler. Sonuç olarak, zamanlayıcı tarafından seçilen ayrık zaman adımları tarafından belirlenen önemli miktarda gürültüyü koruyan bir örnek döndürülür. Görüntü Çıktısını İnce Ayarlama bölümünde ayrıntılı olarak açıklanan “Mixture of Denoisers” çoklu hattı kurulumunun bir parçası olarak bu hat kullanıldığında, denoising_end parametresinin ideal olarak kullanılması önerilir. - guidance_scale (
float, isteğe bağlı, varsayılan 5.0) — Classifier-Free Diffusion Guidance makalesinde tanımlandığı gibi yönlendirme ölçeği.guidance_scale, Imagen Paper'daki 2. denklemindekiwolarak tanımlanır. Yönlendirme ölçeği,guidance_scale > 1olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği,promptile yakından ilişkili görsellerin üretilmesini teşvik eder, genellikle bu da daha düşük görsel kalitesi pahasına olur. - image_guidance_scale (
float, isteğe bağlı, varsayılan 1.5) — Görsel yönlendirme ölçeği, üretilen görseli başlangıç görseli olanimageyönüne doğru iter. Görsel yönlendirme ölçeği,image_guidance_scale > 1olarak ayarlanarak etkinleştirilir. Daha yüksek görsel yönlendirme ölçeği, kaynak görsel olanimageile yakından ilişkili görsellerin üretilmesini teşvik eder, bu genellikle düşük görsel kalitesi pahasına olur. Bu iş akışı en az1değerini gerektirir. - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerinenegative_prompt_embedsparametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yaniguidance_scaledeğeri1'den küçükse) yok sayılır. - negative_prompt_2 (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek içintokenizer_2vetext_encoder_2'ye gönderilecek istem veya istemler. Tanımlanmamışsa, her iki metin kodlayıcıda danegative_promptkullanı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: https://huggingface.co/papers/2010.02502. Yalnızca schedulers.DDIMScheduler için geçerlidir, diğerlerinde yok sayılır. - generator (
torch.Generatorveyalist[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için bir veya torch üreteci listesi. - latents (
torch.Tensor, isteğe bağlı) — Gaussian dağılımdan örneklenmiş, 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 rastgelegeneratorkullanı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 için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleripromptgirdi 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_promptgirdi argümanından oluşturulur. - pooled_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, havuzlanmış metin gömme değerleripromptgirdi argümanından oluşturulur. - negative_pooled_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, havuzlanmış negative_prompt_embeds,negative_promptgirdi argümanından oluşturulur. - output_type (
str, isteğe bağlı, varsayılan"pil") — Görsel oluşturma çıktısının biçimi. Şunlardan birini seçin: PIL:PIL.Image.Imageveyanp.array. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~pipelines.stable_diffusion.StableDiffusionXLPipelineOutputdöndürülüp döndürülmemesi. - callback (
Callable, isteğe bağlı) — Çıkarım sırasında hercallback_stepsadımda çağrılacak bir işlev. İşlev aşağıdaki argümanlarla çağrılacaktır:callback(step: int, timestep: int, latents: torch.Tensor). - callback_steps (
int, isteğe bağlı, varsayılan 1) —callbackişlevinin çağrılma sıklığı. Belirtilmezse, callback her adımda çağrılır. - cross_attention_kwargs (
dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindekiself.processoraltında tanımlananAttentionProcessor'a iletilen bir kwargs sözlüğü. - guidance_rescale (
float, isteğe bağlı, varsayılan 0.0) — Common Diffusion Noise Schedules and Sample Steps are Flawed makalesinde önerilen guidance rescale faktörü.guidance_scale, Common Diffusion Noise Schedules and Sample Steps are Flawed makalesindeki 16. denklemdeφolarak tanımlanmıştır. Guidance rescale faktörü, zero terminal SNR kullanılırken aşırı pozlamayı düzeltmelidir. - original_size (
tuple[int], isteğe bağlı, varsayılan (1024, 1024)) —original_size,target_sizeile aynı değilse görüntü küçültülmüş veya büyütülmüş gibi görünür. Belirtilmediyseoriginal_sizevarsayılan olarak(height, width)değerini alır. SDXL’in mikro-konumlama (micro-conditioning) bileşenidir; bunun açıklaması https://huggingface.co/papers/2307.01952 adresindeki makalenin 2.2 bölümünde yer alır. - crops_coords_top_left (
tuple[int], isteğe bağlı, varsayılan (0, 0)) —crops_coords_top_left,crops_coords_top_leftkonumundan aşağıya doğru “kırpılmış” gibi görünen bir görüntü oluşturmak için kullanılabilir. Genellikle iyi merkezlenmiş, uygun görüntülercrops_coords_top_leftparametresini (0, 0) olarak ayarlayarak elde edilir. https://huggingface.co/papers/2307.01952 adresindeki 2.2 bölümünde açıklanan SDXL mikro-konumlama (micro-conditioning) bileşenidir. - target_size (
tuple[int], isteğe bağlı, varsayılan (1024, 1024)) — Çoğu durumda,target_sizeüretilen görüntünün istenen yükseklik ve genişliğine ayarlanmalıdır. Belirtilmezse varsayılan olarak(height, width)olur. https://huggingface.co/papers/2307.01952 adresindeki makalenin 2.2 bölümünde açıklanan SDXL mikro-konumlama (micro-conditioning) bileşenidir.
Dönüş değeri
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput veya tuple
return_dict True ise ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput, aksi halde bir tuple. Bir tuple döndürüldüğünde, ilk öğe üretilen görsellerin listesidir.
Üretim için pipeline çağrıldığında tetiklenen işlev.
Örnekler:
>>> import torch
>>> from diffusers import StableDiffusionXLInstructPix2PixPipeline
>>> from diffusers.utils import load_image
>>> resolution = 768
>>> image = load_image(
... "https://hf.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
... ).resize((resolution, resolution))
>>> edit_instruction = "Turn sky into a cloudy one"
>>> pipe = StableDiffusionXLInstructPix2PixPipeline.from_pretrained(
... "diffusers/sdxl-instructpix2pix-768", torch_dtype=torch.float16
... ).to("cuda")
>>> edited_image = pipe(
... prompt=edit_instruction,
... image=image,
... height=resolution,
... width=resolution,
... guidance_scale=3.0,
... image_guidance_scale=1.5,
... num_inference_steps=30,
... ).images[0]
>>> edited_imageencode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = None )
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — kodlanacak prompt - prompt_2 (
strveyalist[str], isteğe bağlı) —tokenizer_2vetext_encoder_2'e gönderilecek istem veya istemler. Tanımlanmamışsa, her iki metin kodlayıcıdapromptkullanılır - 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 (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerinenegative_prompt_embedsparametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yaniguidance_scaledeğeri1'den küçükse) yok sayılır. - negative_prompt_2 (
strveyalist[str], isteğe bağlı) —tokenizer_2vetext_encoder_2'ye gönderilecek, görsel üretimi yönlendirmeyecek istem veya istemler. Tanımlanmamışsa, her iki metin kodlayıcıda danegative_promptkullanı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ğerleripromptgirdi 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_promptgirdi argümanından oluşturulur. - pooled_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, havuzlanmış metin gömme değerleripromptgirdi argümanından oluşturulur. - negative_pooled_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, havuzlanmış negative_prompt_embeds,negative_promptgirdi 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 bir LoRA ölçeği.
İsteği metin kodlayıcı gizli durumlarına kodlar.