Diffusers documentation

LEDITS++

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

LEDITS++

LoRA

LEDITS++, Manuel Brack, Felix Friedrich, Katharina Kornmeier, Linoy Tsaban, Patrick Schramowski, Kristian Kersting ve Apolinário Passos tarafından LEDITS++: Limitless Image Editing using Text-to-Image Models makalesinde önerilmiştir.

Makalenin özeti şudur:

Metinden görüntüye difüzyon modelleri, yalnızca metin girdilerinden yüksek sadakatli görüntüler üretme konusundaki şaşırtıcı yetenekleri sayesinde son zamanlarda giderek artan bir ilgi görmektedir. Ardından gelen araştırma çalışmaları, bu yetenekleri gerçek görüntü düzenleme işlemlerinde kullanmayı ve uygulamayı hedeflemektedir. Ancak mevcut görüntüden görüntüye yöntemler genellikle verimsiz, imzasız ve sınırlı bir esnekliğe sahiptir. Bu yöntemler ya zaman alıcı ince ayar gerektirir, ya da girdi görüntüsünden gereksiz derecede güçlü bir şekilde sapar ve/veya birden fazla, eşzamanlı düzenleme desteğinden yoksundur. Bu sorunları ele almak için, verimli, çok yönlü ve hassas bir metin tabanlı görüntü manipülasyonu tekniği olan LEDITS++'ı tanıtıyoruz. LEDITS++'ın yeni tersine çevirme yaklaşımı, ayar veya optimizasyon gerektirmez ve birkaç difüzyon adımıyla yüksek sadakatli sonuçlar üretir. İkinci olarak, metodolojimiz birden fazla eşzamanlı düzenlemeyi destekler ve mimari bağımsızdır. Üçüncü olarak, değişiklikleri ilgili görüntü bölgeleriyle sınırlayan yeni bir örtük maskeleme tekniği kullanıyoruz. Kapsamlı değerlendirmemizin bir parçası olarak, yeni TEdBench++ benchmark'ını öneriyoruz. Sonuçlarımız, LEDITS++'ın yeteneklerini ve önceki yöntemlere kıyasla sağladığı iyileştirmeleri göstermektedir. Proje sayfası https://leditsplusplus-project.static.hf.space adresinde mevcuttur.

LEDITS++ hakkında ek bilgiyi proje sayfasında bulabilir ve demo ile deneyebilirsiniz.

Mevcut DPMSolverMultistepScheduler diffusers uygulamasıyla ilgili bazı geriye dönük uyumluluk sorunları nedeniyle, LEdits++'ın bu uygulaması artık mükemmel inversiyon garantisi verememektedir. Bu sorunun, uygulamalı kullanım senaryolarında belirgin bir etkisi olması olası değildir. Ancak, mükemmel inversiyon garantisi veren alternatif bir uygulamayı ayrı bir GitHub deposunda sunuyoruz.

Farklı önceden eğitilmiş modellere dayalı iki ayrı iş akışı sunuyoruz.

LEditsPPPipelineStableDiffusion

sınıf diffusers.LEditsPPPipelineStableDiffusion

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: diffusers.schedulers.scheduling_ddim.DDIMScheduler | diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepSchedulersafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilrequires_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ı. Stable Diffusion, CLIP'in metin bölümünü, özellikle de clip-vit-large-patch14 varyantını kullanır.
  • tokenizer (CLIPTokenizer) — Tokenizer of class CLIPTokenizer.
  • unet (UNet2DConditionModel) — Kodlanmış görüntü latentlerini gürültüden arındırmak için koşullu U-Net mimarisi.
  • scheduler (DPMSolverMultistepScheduler veya DDIMScheduler) — Kodlanmış görüntü latenslerini gürültüden arındırmak için unet ile birlikte kullanılacak bir zamanlayıcı. DPMSolverMultistepScheduler veya DDIMScheduler olabilir. Başka bir zamanlayıcı geçirilirse otomatik olarak DPMSolverMultistepScheduler olarak ayarlanır.
  • safety_checker (StableDiffusionSafetyChecker) — Üretilen görsellerin saldırgan veya zararlı olarak değerlendirilip değerlendirilemeyeceğini tahmin eden sınıflandırma modülü. Detaylar için model kartına bakınız.
  • feature_extractor (CLIPImageProcessor) — Üretilen görüntülerden safety_checker girdileri olarak kullanılacak özellikleri çıkaran model.

Stable Diffusion ile LEDits++ kullanarak metin tabanlı görüntü düzenlemesi için pipeline.

Bu model DiffusionPipeline sınıfından devralır ve StableDiffusionPipeline üzerine inşa edilir. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgeleri için üst sınıf dokümantasyonuna bakın.

__call__

< >

( negative_prompt: str | list[str] | None = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueediting_prompt: str | list[str] | None = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonereverse_editing_direction: bool | list[bool] | None = Falseedit_guidance_scale: float | list[float] | None = 5edit_warmup_steps: int | list[int] | None = 0edit_cooldown_steps: int | list[int] | None = Noneedit_threshold: float | list[float] | None = 0.9user_mask: typing.Optional[torch.Tensor] = Nonesem_guidance: list[torch.Tensor] | None = Noneuse_cross_attn_mask: bool = Falseuse_intersect_mask: bool = Trueattn_store_steps: list[int] | None = []store_averaged_over_steps: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0clip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → LEditsPPDiffusionPipelineOutput or tuple

Parametreler

  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Yönlendirme kullanılmadığında yok sayılır (yani guidance_scale 1'den küçükse yok sayılır).
  • generator (torch.Generator, isteğe bağlı) — Üretimi deterministik hale getirmek için bir veya torch üreteci listesi.
  • 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.Image veya np.array.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine LEditsPPDiffusionPipelineOutput döndürülüp döndürülmemesi.
  • editing_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmek için kullanılan istem veya istemler. Görsel, editing_prompt = None olarak ayarlanarak yeniden oluşturulur. İstemin yönlendirme yönü reverse_editing_direction parametresi ile belirtilmelidir.
  • editing_prompt_embeds (torch.Tensor>, isteğe bağlı) — Görsel üretimini yönlendirmek için kullanılacak önceden hesaplanmış gömme değerleri. Gömme yönlendirme yönü, reverse_editing_direction parametresi ile belirtilmelidir.
  • 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.
  • reverse_editing_direction (bool veya list[bool], isteğe bağlı, varsayılan False) — editing_prompt içindeki ilgili istemin artırılıp artırılmayacağı veya azaltılıp azaltılmayacağı.
  • edit_guidance_scale (float veya list[float], isteğe bağlı, varsayılan 5) — Görsel üretimini yönlendirmek için yönlendirme ölçeği. Liste olarak sağlanırsa değerler editing_prompt ile eşleşmelidir. edit_guidance_scale, LEDITS++ Paper'ın 12. denklemindeki s_e olarak tanımlanır.
  • edit_warmup_steps (float veya list[float], isteğe bağlı, varsayılan 10) — Rehberliğin uygulanmayacağı difüzyon adım sayısı (her istem için).
  • edit_cooldown_steps (float veya list[float], isteğe bağlı, varsayılan None) — Rehberliğin (guidance) artık uygulanmayacağı, her istem (prompt) için difüzyon adım sayısı.
  • edit_threshold (float veya list[float], isteğe bağlı, varsayılan 0.9) — Yönlendirmenin maskeleme eşiği. Eşik, değiştirilen görüntü bölgesiyle orantılı olmalıdır. ‘edit_threshold’, LEDITS++ Makalesi’ndeki 12. denklemin ‘λ’ değeri olarak tanımlanır.
  • user_mask (torch.Tensor, isteğe bağlı) — Düzenleme süreci üzerinde daha iyi kontrol için kullanıcı tarafından sağlanan maske. LEDITS++‘ın örtük maskeleri kullanıcı tercihlerini karşılamadığında bu özellik işe yarar.
  • sem_guidance (list[torch.Tensor], isteğe bağlı) — üretim sırasında uygulanacak önceden oluşturulmuş yönlendirme vektörlerinin listesi. Listenin uzunluğu num_inference_steps ile eşleşmelidir.
  • use_cross_attn_mask (bool, varsayılan False) — Cross-attention masklerinin kullanılıp kullanılmadığı. use_intersect_mask true olarak ayarlandığında cross-attention maskleri her zaman kullanılır. Cross-attention maskleri, LEDITS++ makalesindeki 12. denklemin ‘M^1’ olarak tanımlanmıştır.
  • use_intersect_mask (bool, varsayılan True) — Maskeleme teriminin, çapraz dikkat maskeleri ile gürültü tahmininden türetilen maskelerin kesişimi olarak hesaplanıp hesaplanmayacağını belirtir. Çapraz dikkat maskeleri, LEDITS++ makalesindeki 12. denklemin ‘M^1’ olarak tanımlanan maskeleridir; gürültü tahmininden türetilen maskeler ise ‘M^2’ olarak tanımlanır.
  • attn_store_steps (list[int], isteğe bağlı) — AttentionStore'da dikkat haritalarının saklandığı adımlar. Sadece görselleştirme amaçlıdır.
  • store_averaged_over_steps (bool, varsayılan True) — ‘attn_store_steps’ için dikkat haritalarının difüzyon adımları üzerinde ortalama olarak saklanıp saklanmayacağını belirtir. False ise, her adım için dikkat haritaları ayrı ayrı saklanır. Sadece görselleştirme amaçlıdır.
  • cross_attention_kwargs (dict, isteğe bağlı) — Belirtilirse, self.processor içinde tanımlanan AttentionProcessor'ye 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 makalesindeki guidance rescale faktörü. Guidance rescale faktörü, zero terminal SNR kullanıldığında aşırı pozlamayı düzeltmelidir.
  • 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, isteğe bağlı) — Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır: 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çerir.
  • 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

LEditsPPDiffusionPipelineOutput veya tuple

LEditsPPDiffusionPipelineOutput if return_dict is True, otherwise a tuple. When returning a tuple, the first element is a list with the generated images, and the second element is a list of bools denoting whether the corresponding generated image likely represents "not-safe-for-work" (nsfw) content, according to the safety_checker`.

Düzenleme için pipeline çağrı fonksiyonu. invert() metodu önceden çağrılmalıdır. Düzenlemeler her zaman son ters çevrilen görüntü(ler) için gerçekleştirilir.

Örnekler:

>>> import torch

>>> from diffusers import LEditsPPPipelineStableDiffusion
>>> from diffusers.utils import load_image

>>> pipe = LEditsPPPipelineStableDiffusion.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe.vae.enable_tiling()
>>> pipe = pipe.to("cuda")

>>> img_url = "https://www.aiml.informatik.tu-darmstadt.de/people/mbrack/cherry_blossom.png"
>>> image = load_image(img_url).resize((512, 512))

>>> _ = pipe.invert(image=image, num_inversion_steps=50, skip=0.1)

>>> edited_image = pipe(
...     editing_prompt=["cherry blossom"], edit_guidance_scale=10.0, edit_threshold=0.75
... ).images[0]

tersine çevir

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]source_prompt: str = ''source_guidance_scale: float = 3.5num_inversion_steps: int = 30skip: float = 0.15generator: typing.Optional[torch.Generator] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Noneheight: int | None = Nonewidth: int | None = Noneresize_mode: str | None = 'default'crops_coords: tuple[int, int, int, int] | None = None ) → LEditsPPInversionPipelineOutput

Parametreler

  • image (PipelineImageInput) — Düzenlenecek görüntü(ler) için girdi. Birden fazla girdi görüntüsü varsayılan olarak aynı en-boy oranına sahip olmalıdır.
  • source_prompt (str, varsayılan "") — Tersine çevirme sırasında yönlendirme için kullanılacak girdi görselini tanımlayan istem. source_prompt "" ise yönlendirme devre dışı bırakılır.
  • source_guidance_scale (float, varsayılan 3.5) — Tersine dönüşüm sırasında yönlendirmenin gücü.
  • num_inversion_steps (int, varsayılan 30) — Başlangıçtaki skip adımları atıldıktan sonra gerçekleştirilen toplam tersine çevirme adımı sayısı.
  • skip (float, varsayılan 0.15) — Tersine dönüşüm ve sonraki üretim için yoksayılacak ilk adımların oranı. Daha düşük değerler, girdi görselinde daha güçlü değişikliklere yol açar. skip değeri 0 ile 1 arasında olmalıdır.
  • generator (torch.Generator, isteğe bağlı) — Ters dönüşümü deterministik hale getirmek için bir torch.Generator.
  • 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.
  • height (int, isteğe bağlı, varsayılan None) — Ön işlenmiş görüntüdeki yükseklik. None ise, varsayılan yüksekliği almak için get_default_height_width() kullanılır.
  • width (int, optional, defaults to None) -- The width in preprocessed. If None, will use get_default_height_width() to get the default width.
  • resize_mode (str, isteğe bağlı, varsayılan default) — Yeniden boyutlandırma modu, default veya fill değerlerinden biri olabilir. default seçilirse, görüntü belirtilen genişlik ve yüksekliğe sığacak şekilde yeniden boyutlandırılır ve orijinal en-boy oranı korunmayabilir. fill seçilirse, görüntü en-boy oranını koruyarak belirtilen genişlik ve yüksekliğe sığacak şekilde yeniden boyutlandırılır, ardından boyutlar içinde ortalanır ve boşluklar görüntü verisiyle doldurulur. crop seçilirse, görüntü en-boy oranını koruyarak belirtilen genişlik ve yüksekliğe sığacak şekilde yeniden boyutlandırılır, ardından boyutlar içinde ortalanır ve fazlalık kesilir. fill ve crop resize_mode değerlerinin yalnızca PIL görüntü girdisi için desteklendiğini unutmayın.
  • crops_coords (list[tuple[int, int, int, int]], isteğe bağlı, varsayılan None) — Toplu işlemdeki her bir görüntü için kırpma koordinatları. None ise görüntü kırpılmaz.

Çıktı, yeniden boyutlandırılmış giriş görüntülerini ve ilgili VAE yeniden yapılandırmalarını içerecektir.

LEDITS++ Paper'de LEDITS++ Paper olarak tanımlanan görüntü tersine çevirme işlevi için pipeline. Zamanlayıcı DDIMScheduler olarak ayarlanırsa, bunun yerine edit-friendly DPDM tarafından önerilen tersine çevirme işlemi gerçekleştirilir.

encode_prompt

< >

( devicenum_images_per_promptenable_edit_guidancenegative_prompt = Noneediting_prompt = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parametreler

  • device — (torch.device): torch cihazı
  • num_images_per_prompt (int) — her prompt için oluşturulacak görsel sayısı
  • enable_edit_guidance (bool) — düzenleme yapılıp yapılmayacağı veya bunun yerine girdi görüntüsünün yeniden oluşturulup oluşturulmayacağı
  • 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.
  • editing_prompt (str veya list[str], isteğe bağlı) — Kodlanacak düzenleme istemcisi(leri). Tanımlanmamışsa, bunun yerine editing_prompt_embeds parametresinin geçirilmesi gerekir.
  • editing_prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömlemeleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömlemeleri 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.

LEditsPPPipelineStableDiffusionXL

sınıf diffusers.LEditsPPPipelineStableDiffusionXL

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler | diffusers.schedulers.scheduling_ddim.DDIMSchedulerimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Noneforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = None )

Parametreler

Stable Diffusion XL ile LEDits++ kullanarak metin tabanlı görüntü düzenleme için pipeline.

Bu model DiffusionPipeline sınıfından devralır ve StableDiffusionXLPipeline üzerine inşa edilir. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgeleri için üst sınıf belgelerini kontrol edin.

Ayrıca pipeline aşağıdaki yükleme yöntemlerini devralır:

ve aşağıdaki kaydetme yöntemleri:

  • LoRA: loaders.StableDiffusionXLPipeline.save_lora_weights

__call__

< >

( denoising_end: float | None = Nonenegative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_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] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0crops_coords_top_left: tuple = (0, 0)target_size: tuple[int, int] | None = Noneediting_prompt: str | list[str] | None = Noneediting_prompt_embeddings: typing.Optional[torch.Tensor] = Noneediting_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonereverse_editing_direction: bool | list[bool] | None = Falseedit_guidance_scale: float | list[float] | None = 5edit_warmup_steps: int | list[int] | None = 0edit_cooldown_steps: int | list[int] | None = Noneedit_threshold: float | list[float] | None = 0.9sem_guidance: list[torch.Tensor] | None = Noneuse_cross_attn_mask: bool = Falseuse_intersect_mask: bool = Falseuser_mask: typing.Optional[torch.Tensor] = Noneattn_store_steps: list[int] | None = []store_averaged_over_steps: bool = Trueclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → LEditsPPDiffusionPipelineOutput or tuple

Parametreler

  • 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 kesrini (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. denoising_end parametresi, bu hattın [**Görüntüyü İnce
  • 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.
  • negative_prompt_2 (str veya list[str], isteğe bağlı) — tokenizer_2 ve text_encoder_2'ye gönderilecek, görsel üretimi yönlendirmeyecek istem veya istemler. Tanımlanmamışsa, her iki metin kodlayıcıda da negative_prompt kullanılır.
  • 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.
  • 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_prompt girdi argümanından oluşturulur.
  • ip_adapter_image — (PipelineImageInput, isteğe bağlı): IP Adapters ile çalışmak için isteğe bağlı görüntü girdisi.
  • 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.Image veya np.array.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput döndürülüp döndürülmemesi.
  • cross_attention_kwargs (dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindeki self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
  • guidance_rescale (float, isteğe bağlı, varsayılan 0.7) — 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.
  • crops_coords_top_left (tuple[int], isteğe bağlı, varsayılan (0, 0)) — crops_coords_top_left, crops_coords_top_left konumundan 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üler crops_coords_top_left parametresini (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 (width, height) olur. https://huggingface.co/papers/2307.01952 adresindeki makalenin 2.2 bölümünde açıklanan SDXL mikro-konumlama (micro-conditioning) bileşenidir.
  • editing_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmek için kullanılan istem veya istemler. Görsel, editing_prompt = None olarak ayarlanarak yeniden oluşturulur. İstemin yönlendirme yönü reverse_editing_direction parametresi ile belirtilmelidir.
  • editing_prompt_embeddings (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş düzenleme metni gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, editing_prompt_embeddings, editing_prompt girdi argümanından oluşturulur.
  • editing_pooled_prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş havuzlanmış düzenleme metin gömümlemeleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, editing_prompt_embeddings, editing_prompt girdi argümanından oluşturulur.
  • reverse_editing_direction (bool veya list[bool], isteğe bağlı, varsayılan False) — editing_prompt içindeki ilgili istemin artırılıp artırılmayacağı veya azaltılıp azaltılmayacağı.
  • edit_guidance_scale (float veya list[float], isteğe bağlı, varsayılan 5) — Görsel üretimini yönlendirmek için yönlendirme ölçeği. Liste olarak sağlanırsa değerler editing_prompt ile eşleşmelidir. edit_guidance_scale, LEDITS++ Paper'ın 12. denklemindeki s_e olarak tanımlanır.
  • edit_warmup_steps (float veya list[float], isteğe bağlı, varsayılan 10) — Rehberliğin uygulanmadığı difüzyon adım sayısı (her istem için).
  • edit_cooldown_steps (float veya list[float], isteğe bağlı, varsayılan None) — Yönlendirmenin (guidance) artık uygulanmadığı, her istem (prompt) için difüzyon adım sayısı.
  • edit_threshold (float veya list[float], isteğe bağlı, varsayılan 0.9) — Yönlendirmenin maskeleme eşiği. Eşik, değiştirilen görüntü bölgesiyle orantılı olmalıdır. ‘edit_threshold’, LEDITS++ Makalesi’ndeki 12. denklemin ‘λ’ değeri olarak tanımlanır.
  • sem_guidance (list[torch.Tensor], isteğe bağlı) — üretim sırasında uygulanacak önceden oluşturulmuş yönlendirme vektörlerinin listesi. Listenin uzunluğu num_inference_steps ile eşleşmelidir.
  • use_cross_attn_mask — Çapraz dikkat maskelerinin kullanılıp kullanılmadığı. use_intersect_mask true olarak ayarlandığında çapraz dikkat maskeleri her zaman kullanılır. Çapraz dikkat maskeleri, LEDITS++ makalesindeki 12. denklemin ‘M^1’ olarak tanımlanır.
  • use_intersect_mask — Maskleme teriminin, çapraz dikkat maskeleri ile gürültü tahmininden türetilen maskelerin kesişimi olarak hesaplanıp hesaplanmadığını belirtir. Çapraz dikkat maskeleri, LEDITS++ makalesindeki 12. denklemin ‘M^1’ olarak tanımlanan maskeleri, gürültü tahmininden türetilen maskeler ise ‘M^2’ olarak tanımlanan maskelerdir.
  • user_mask — Düzenleme süreci üzerinde daha iyi kontrol için kullanıcı tarafından sağlanan maske. LEDITS++'in gizli maskeleri kullanıcı tercihlerini karşılamadığında bu özellik işe yarar.
  • attn_store_steps — AttentionStore'da dikkat haritalarının saklandığı adımlar. Sadece görselleştirme amaçlıdır.
  • store_averaged_over_steps — ‘attn_store_steps’ için dikkat haritalarının difüzyon adımları üzerinde ortalama olarak saklanıp saklanmayacağını belirtir. False ise, her adım için dikkat haritaları ayrı ayrı saklanır. Sadece görselleştirme amaçlıdır.
  • 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, isteğe bağlı) — Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır: 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çerir.
  • 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

LEditsPPDiffusionPipelineOutput veya tuple

return_dict True ise LEditsPPDiffusionPipelineOutput, aksi halde bir `tuple döner. Tuple döndürüldüğünde, ilk öğe üretilen görsellerin listesidir.

Düzenleme için pipeline çağrı fonksiyonu. invert() metodu önceden çağrılmalıdır. Düzenlemeler her zaman son ters çevrilen görüntü(ler) için gerçekleştirilir.

Örnekler:

>>> import torch

>>> from diffusers import LEditsPPPipelineStableDiffusionXL
>>> from diffusers.utils import load_image

>>> pipe = LEditsPPPipelineStableDiffusionXL.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe.vae.enable_tiling()
>>> pipe = pipe.to("cuda")

>>> img_url = "https://www.aiml.informatik.tu-darmstadt.de/people/mbrack/tennis.jpg"
>>> image = load_image(img_url).resize((1024, 1024))

>>> _ = pipe.invert(image=image, num_inversion_steps=50, skip=0.2)

>>> edited_image = pipe(
...     editing_prompt=["tennis ball", "tomato"],
...     reverse_editing_direction=[True, False],
...     edit_guidance_scale=[5.0, 10.0],
...     edit_threshold=[0.9, 0.85],
... ).images[0]

tersine çevir

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]source_prompt: str = ''source_guidance_scale = 3.5negative_prompt: str = Nonenegative_prompt_2: str = Nonenum_inversion_steps: int = 50skip: float = 0.15generator: typing.Optional[torch.Generator] = Nonecrops_coords_top_left: tuple = (0, 0)num_zero_noise_steps: int = 3cross_attention_kwargs: dict[str, typing.Any] | None = Noneheight: int | None = Nonewidth: int | None = Noneresize_mode: str | None = 'default'crops_coords: tuple[int, int, int, int] | None = None ) → LEditsPPInversionPipelineOutput

Parametreler

  • image (PipelineImageInput) — Düzenlenecek görüntü(ler) için girdi. Birden fazla girdi görüntüsü varsayılan olarak aynı en-boy oranına sahip olmalıdır.
  • source_prompt (str, varsayılan "") — Tersine çevirme sırasında yönlendirme için kullanılacak girdi görselini tanımlayan istem. source_prompt "" ise yönlendirme devre dışı bırakılır.
  • source_guidance_scale (float, varsayılan 3.5) — Tersine dönüşüm sırasında yönlendirmenin gücü.
  • 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.
  • negative_prompt_2 (str veya list[str], isteğe bağlı) — tokenizer_2 ve text_encoder_2'ye gönderilecek, görsel üretimi yönlendirmeyecek istem veya istemler. Tanımlanmamışsa, her iki metin kodlayıcıda da negative_prompt kullanılır.
  • num_inversion_steps (int, varsayılan 50) — Başlangıçtaki skip adımları atıldıktan sonra gerçekleştirilen toplam tersine çevirme adımı sayısı.
  • skip (float, varsayılan 0.15) — Tersine dönüşüm ve sonraki üretim için yoksayılacak ilk adımların oranı. Daha düşük değerler, girdi görselinde daha güçlü değişikliklere yol açar. skip değeri 0 ile 1 arasında olmalıdır.
  • generator (torch.Generator, isteğe bağlı) — Ters dönüşümü deterministik hale getirmek için bir torch.Generator.
  • crops_coords_top_left (tuple[int], isteğe bağlı, varsayılan (0, 0)) — crops_coords_top_left, crops_coords_top_left konumundan 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üler crops_coords_top_left parametresini (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.
  • num_zero_noise_steps (int, varsayılan 3) — Güncel görüntüyü yeniden gürültülemeyecek olan son difüzyon adımlarının sayısı. Hiçbir adım sıfıra ayarlanmadıysa SD-XL, DPMSolverMultistepScheduler ile birlikte kullanıldığında gürültü artefaktları üretecektir.
  • cross_attention_kwargs (dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindeki self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.

Çıktı, yeniden boyutlandırılmış giriş görüntülerini ve ilgili VAE yeniden yapılandırmalarını içerecektir.

LEDITS++ Paper'de LEDITS++ Paper olarak tanımlanan görüntü tersine çevirme işlevi için pipeline. Zamanlayıcı DDIMScheduler olarak ayarlanırsa, bunun yerine edit-friendly DPDM tarafından önerilen tersine çevirme işlemi gerçekleştirilir.

encode_prompt

< >

( device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1negative_prompt: str | None = Nonenegative_prompt_2: str | None = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = Noneenable_edit_guidance: bool = Trueediting_prompt: str | None = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Noneediting_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None )

Parametreler

  • device — (torch.device): torch cihazı
  • num_images_per_prompt (int) — her prompt için oluşturulacak görsel sayısı
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemesi istenen istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds geçirilmelidir.
  • negative_prompt_2 (str veya list[str], isteğe bağlı) — tokenizer_2 ve text_encoder_2'ye gönderilecek, görsel üretimi yönlendirmeyecek istem veya istemler. Tanımlanmamışsa, her iki metin kodlayıcıda da negative_prompt kullanılır.
  • 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.
  • 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_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 bir 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.
  • enable_edit_guidance (bool) — Düzenleme komutuna doğru yönlendirilip yönlendirilmeyeceğini belirtir.
  • editing_prompt (str veya list[str], isteğe bağlı) — Kodlanacak düzenleme istemcisi(leri). Tanımlanmamışsa ve ‘enable_edit_guidance’ True ise, bunun yerine editing_prompt_embeds geçirilmelidir.
  • editing_prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş düzenleme metni gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa ve ‘enable_edit_guidance’ True ise, editing_prompt_embeds, editing_prompt girdi argümanından oluşturulacaktır.
  • editing_pooled_prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş düzenleme birleştirilmiş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, birleştirilmiş editing_pooled_prompt_embeds, editing_prompt girdi argümanından oluşturulur.

İ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

LEditsPPDiffusionPipelineOutput

sınıf diffusers.pipelines.LEditsPPDiffusionPipelineOutput

< >

( 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.

LEdits++ Diffusion pipeline'leri için çıktı sınıfı.

LEditsPPInversionPipelineOutput

sınıf diffusers.pipelines.LEditsPPInversionPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarrayvae_reconstruction_images: list[PIL.Image.Image] | numpy.ndarray )

Parametreler

  • input_images (list[PIL.Image.Image] veya np.ndarray) — batch_size uzunluğunda kırpılmış ve yeniden boyutlandırılmış girdi görüntülerinin PIL görüntüleri listesi veya (batch_size, height, width, num_channels) biçiminde NumPy dizisi.
  • vae_reconstruction_images (list[PIL.Image.Image] veya np.ndarray) — Uzunluğu batch_size olan PIL görüntülerinden oluşan tüm giriş görüntülerinin VAE yeniden yapılandırma listesi veya şekli (batch_size, height, width, num_channels) olan NumPy dizisi.

LEdits++ Diffusion pipeline'leri için çıktı sınıfı.

Update on GitHub