Diffusers documentation
LEDITS++
LEDITS++
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
< source >( 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
unetile 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_checkergirdileri 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__
< source >( 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 (
strveyalist[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 (yaniguidance_scale1'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.Imageveyanp.array. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine LEditsPPDiffusionPipelineOutput döndürülüp döndürülmemesi. - editing_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmek için kullanılan istem veya istemler. Görsel,editing_prompt = Noneolarak ayarlanarak yeniden oluşturulur. İstemin yönlendirme yönüreverse_editing_directionparametresi 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_directionparametresi 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_promptgirdi argümanından üretilir. - reverse_editing_direction (
boolveyalist[bool], isteğe bağlı, varsayılanFalse) —editing_promptiçindeki ilgili istemin artırılıp artırılmayacağı veya azaltılıp azaltılmayacağı. - edit_guidance_scale (
floatveyalist[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ğerlerediting_promptile eşleşmelidir.edit_guidance_scale, LEDITS++ Paper'ın 12. denklemindekis_eolarak tanımlanır. - edit_warmup_steps (
floatveyalist[float], isteğe bağlı, varsayılan 10) — Rehberliğin uygulanmayacağı difüzyon adım sayısı (her istem için). - edit_cooldown_steps (
floatveyalist[float], isteğe bağlı, varsayılanNone) — Rehberliğin (guidance) artık uygulanmayacağı, her istem (prompt) için difüzyon adım sayısı. - edit_threshold (
floatveyalist[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ğunum_inference_stepsile eşleşmelidir. - use_cross_attn_mask (
bool, varsayılanFalse) — 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ılanTrue) — 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ılanTrue) — ‘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.processoriçinde tanımlananAttentionProcessor'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_inputstarafından belirtilen tüm tensörlerin listesini içerir. - 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.
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
< source >( 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ılan3.5) — Tersine dönüşüm sırasında yönlendirmenin gücü. - num_inversion_steps (
int, varsayılan30) — Başlangıçtakiskipadımları atıldıktan sonra gerçekleştirilen toplam tersine çevirme adımı sayısı. - skip (
float, varsayılan0.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.skipdeğeri0ile1arasında olmalıdır. - generator (
torch.Generator, isteğe bağlı) — Ters dönüşümü deterministik hale getirmek için birtorch.Generator. - cross_attention_kwargs (
dict, isteğe bağlı) — Belirtilirse,self.processoriçinde tanımlananAttentionProcessor'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ılanNone) — Ön işlenmiş görüntüdeki yükseklik.Noneise, varsayılan yüksekliği almak içinget_default_height_width()kullanılır. - width (
int, optional, defaults toNone) -- The width in preprocessed. IfNone, will use get_default_height_width()to get the default width. - resize_mode (
str, isteğe bağlı, varsayılandefault) — Yeniden boyutlandırma modu,defaultveyafilldeğerlerinden biri olabilir.defaultseç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.fillseç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.cropseç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.fillvecropresize_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ılanNone) — Toplu işlemdeki her bir görüntü için kırpma koordinatları.Noneise görüntü kırpılmaz.
Dönüş değeri
Çı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
< source >( 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 (
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. - editing_prompt (
strveyalist[str], isteğe bağlı) — Kodlanacak düzenleme istemcisi(leri). Tanımlanmamışsa, bunun yerineediting_prompt_embedsparametresinin 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ömlemeleripromptgirdi 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. - 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
< source >( 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
- 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) — Tokenizer of class CLIPTokenizer.
- 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 (DPMSolverMultistepScheduler veya DDIMScheduler) —
Kodlanmış görüntü latenslerini gürültüden arındırmak için
unetile birlikte kullanılacak bir zamanlayıcı. DPMSolverMultistepScheduler veya DDIMScheduler olabilir. Başka bir zamanlayıcı geçirilirse otomatik olarak DPMSolverMultistepScheduler olarak ayarlanır. - 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.
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:
- LoRA: LEditsPPPipelineStableDiffusionXL.load_lora_weights()
- Kontrol noktası: loaders.FromSingleFileMixin.from_single_file()
ve aşağıdaki kaydetme yöntemleri:
- LoRA:
loaders.StableDiffusionXLPipeline.save_lora_weights
__call__
< source >( 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 (
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. - 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. - 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. - 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.Imageveyanp.array. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputdöndürülüp döndürülmemesi. - 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.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_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(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 (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmek için kullanılan istem veya istemler. Görsel,editing_prompt = Noneolarak ayarlanarak yeniden oluşturulur. İstemin yönlendirme yönüreverse_editing_directionparametresi 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_promptgirdi 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_promptgirdi argümanından oluşturulur. - reverse_editing_direction (
boolveyalist[bool], isteğe bağlı, varsayılanFalse) —editing_promptiçindeki ilgili istemin artırılıp artırılmayacağı veya azaltılıp azaltılmayacağı. - edit_guidance_scale (
floatveyalist[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ğerlerediting_promptile eşleşmelidir.edit_guidance_scale, LEDITS++ Paper'ın 12. denklemindekis_eolarak tanımlanır. - edit_warmup_steps (
floatveyalist[float], isteğe bağlı, varsayılan 10) — Rehberliğin uygulanmadığı difüzyon adım sayısı (her istem için). - edit_cooldown_steps (
floatveyalist[float], isteğe bağlı, varsayılanNone) — Yönlendirmenin (guidance) artık uygulanmadığı, her istem (prompt) için difüzyon adım sayısı. - edit_threshold (
floatveyalist[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ğunum_inference_stepsile 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_inputstarafından belirtilen tüm tensörlerin listesini içerir. - 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.
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
< source >( 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ılan3.5) — Tersine dönüşüm sırasında yönlendirmenin gücü. - 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. - num_inversion_steps (
int, varsayılan50) — Başlangıçtakiskipadımları atıldıktan sonra gerçekleştirilen toplam tersine çevirme adımı sayısı. - skip (
float, varsayılan0.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.skipdeğeri0ile1arasında olmalıdır. - generator (
torch.Generator, isteğe bağlı) — Ters dönüşümü deterministik hale getirmek için birtorch.Generator. - 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. - num_zero_noise_steps (
int, varsayılan3) — 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çindekiself.processoraltında tanımlananAttentionProcessor'a iletilen bir kwargs sözlüğü.
Dönüş değeri
Çı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
< source >( 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 (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemesi istenen istem veya istemler. Tanımlanmazsa, bunun yerinenegative_prompt_embedsgeçirilmelidir. - 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. - 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. - 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. - 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 (
strveyalist[str], isteğe bağlı) — Kodlanacak düzenleme istemcisi(leri). Tanımlanmamışsa ve ‘enable_edit_guidance’ True ise, bunun yerineediting_prompt_embedsgeç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_promptgirdi 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_promptgirdi argümanından oluşturulur.
İsteği metin kodlayıcı gizli durumlarına kodlar.
get_guidance_scale_embedding
< source >( 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ılantorch.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.
LEditsPPDiffusionPipelineOutput
sınıf diffusers.pipelines.LEditsPPDiffusionPipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarraynsfw_content_detected: list[bool] | None )
Parametreler
- images (
list[PIL.Image.Image]veyanp.ndarray) —batch_sizeuzunluğ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ığı durumlardaNone.
LEdits++ Diffusion pipeline'leri için çıktı sınıfı.
LEditsPPInversionPipelineOutput
sınıf diffusers.pipelines.LEditsPPInversionPipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarrayvae_reconstruction_images: list[PIL.Image.Image] | numpy.ndarray )
Parametreler
- input_images (
list[PIL.Image.Image]veyanp.ndarray) —batch_sizeuzunluğ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]veyanp.ndarray) — Uzunluğubatch_sizeolan 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ı.