Buckets:
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 için destek sağlamaz. 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, pratik kullanım senaryolarında belirgin bir etkisi olması beklenmemektedir. Bununla birlikte, mükemmel inversiyon garantisi veren alternatif bir uygulamayı ayrı bir GitHub deposu üzerinden sunuyoruz.
Farklı önceden eğitilmiş modellere dayalı iki ayrı iş akışı sunuyoruz.
LEditsPPPipelineStableDiffusion[[diffusers.LEditsPPPipelineStableDiffusion]]
diffusers.LEditsPPPipelineStableDiffusion[[diffusers.LEditsPPPipelineStableDiffusion]]
diffusers.LEditsPPPipelineStableDiffusion(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: diffusers.schedulers.scheduling_ddim.DDIMScheduler | diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, requires_safety_checker: bool = True)
Parametreler:
vae (AutoencoderKL) : Görüntüleri gizil (latent) temsillere kodlamak ve bu temsillerden görüntülere çö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) : CLIPTokenizer sınıfının 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 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ü. Ayrıntılar için model kartına bakınız.
feature_extractor (CLIPImageProcessor) : safety_checker girdileri olarak kullanılacak özellikleri üretilen görüntülerden çı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[[diffusers.LEditsPPPipelineStableDiffusion.call]]
__call__(negative_prompt: str | list[str] | None = None, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, output_type: str | None = 'pil', return_dict: bool = True, editing_prompt: str | list[str] | None = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, reverse_editing_direction: bool | list[bool] | None = False, edit_guidance_scale: float | list[float] | None = 5, edit_warmup_steps: int | list[int] | None = 0, edit_cooldown_steps: int | list[int] | None = None, edit_threshold: float | list[float] | None = 0.9, user_mask: typing.Optional[torch.Tensor] = None, sem_guidance: list[torch.Tensor] | None = None, use_cross_attn_mask: bool = False, use_intersect_mask: bool = True, attn_store_steps: list[int] | None = [], store_averaged_over_steps: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], **kwargs)
Parametreler:
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi 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 bir torch üreteci listesi.
output_type (str, isteğe bağlı, varsayılan "pil") : Üretilen görüntünün çıktı biçimi. PIL: PIL.Image.Image veya np.array arasında seçim yapın.
return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine LEditsPPDiffusionPipelineOutput döndürülecek mi?
editing_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmek için istem veya istemler. Görsel, editing_prompt = None olarak ayarlanarak yeniden oluşturulur. İstemin yönlendirme yönü, reverse_editing_direction üzerinden belirtilmelidir.
editing_prompt_embeds (torch.Tensor>, isteğe bağlı) : Görsel üretimini yönlendirmek için kullanılacak önceden hesaplanmış gömümlemeler. Gömümlemenin yönlendirme yönü reverse_editing_direction aracılığıyla belirtilmelidir.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön 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++ Makalesi'ndeki 12. denklemin s_e'si 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 prompt için difüzyon adım sayısı.
edit_threshold (float veya list[float], isteğe bağlı, varsayılan 0.9) : Rehberlik için 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 faydalıdı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 (bool, varsayılan False) : Ç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++ makalesi'nin 12. denklemindeki 'M^1' olarak tanımlanı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++ makalesi'ndeki 12. denklemin 'M^1' olarak, gürültü tahmininden türetilen maskeler ise 'M^2' olarak tanımlanır.
attn_store_steps (list[int], isteğe bağlı) : Dikkat haritalarının AttentionStore'da 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 mı yoksa her adım için ayrı ayrı mı saklanacağını belirtir. 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 aktarılan 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ü, sıfır terminal SNR kullanıldığında aşırı pozlamayı düzeltmelidir.
clip_skip (int, isteğe bağlı) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları 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üş: 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[[diffusers.LEditsPPPipelineStableDiffusion.invert]]
invert(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.5, num_inversion_steps: int = 30, skip: float = 0.15, generator: typing.Optional[torch.Generator] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, height: int | None = None, width: int | None = None, resize_mode: str | None = 'default', crops_coords: tuple[int, int, int, int] | None = None)
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örüntüsünü açıklayan istem. source_prompt "" ise yönlendirme devre dışı bırakılır.
source_guidance_scale (float, varsayılan 3.5) : Tersine çevirme sırasında yönlendirme gücü.
num_inversion_steps (int, varsayılan 30) : Başlangıçtaki skip adımları atıldıktan sonra toplamda gerçekleştirilen tersine çevirme adım sayısı.
skip (float, varsayılan 0.15) : Tersine çevirme ve sonraki üretim için yoksayılacak başlangıç adımlarını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 çevirmeyi 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 aktarılan bir kwargs sözlüğü.
clip_skip (int, isteğe bağlı) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları 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ünün yüksekliği. 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 ise, 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 ise, 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 ise, 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. resize_mode fill ve crop değerlerinin yalnızca PIL görüntü girdisi için desteklendiğini unutmayın.
crops_coords (list[tuple[int, int, int, int]], opsiyonel, varsayılan None) : Batch'teki her bir görüntü için kırpma koordinatları. None ise görüntü kırpılmaz.
Dönüş: LEditsPPInversionPipelineOutput
Çıktı, yeniden boyutlandırılmış giriş görüntülerini ve ilgili VAE yeniden yapılandırmalarını içerecektir.
LEDITS++ Paper adlı makalede tanımlanan görüntü tersine çevirme işlemi için pipeline'a uygulanan fonksiyon. Zamanlayıcı DDIMScheduler olarak ayarlanırsa, bunun yerine edit-friendly DPDM tarafından önerilen tersine çevirme işlemi gerçekleştirilir.
encode_prompt[[diffusers.LEditsPPPipelineStableDiffusion.encode_prompt]]
encode_prompt(device, num_images_per_prompt, enable_edit_guidance, negative_prompt = None, editing_prompt = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
Parametreler:
device : (torch.device): torch cihazı
num_images_per_prompt (int) : her istem için oluşturulacak görsel sayısı
enable_edit_guidance (bool) : herhangi bir düzenleme yapılıp yapılmayacağına veya girdi görüntüsünün yeniden oluşturulup oluşturulmayacağına
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, 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ı) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön 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 bir LoRA ölçeği.
clip_skip (int, isteğe bağlı) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları 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[[diffusers.LEditsPPPipelineStableDiffusionXL]]
diffusers.LEditsPPPipelineStableDiffusionXL[[diffusers.LEditsPPPipelineStableDiffusionXL]]
diffusers.LEditsPPPipelineStableDiffusionXL(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler | diffusers.schedulers.scheduling_ddim.DDIMScheduler, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None)
Parametreler:
vae (AutoencoderKL) : Görüntüleri gizil (latent) temsillere kodlamak ve bu temsillerden görüntülere çö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 de 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ü, özellikle de laion/CLIP-ViT-bigG-14-laion2B-39B-b160k varyantını kullanır.
tokenizer (CLIPTokenizer) : CLIPTokenizer sınıfının tokenizer'ı.
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 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.
force_zeros_for_empty_prompt (bool, isteğe bağlı, varsayılan "True") : Negatif prompt gömme değerlerinin her zaman 0 olarak ayarlanıp ayarlanmayacağı. Ayrıca stabilityai/stable-diffusion-xl-base-1-0 yapılandırmasına da bakın.
add_watermarker (bool, isteğe bağlı) : Çıktı görsellerini filigranlamak 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 filigranlayıcı 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 dokümantasyonuna bakın.
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[[diffusers.LEditsPPPipelineStableDiffusionXL.call]]
__call__(denoising_end: float | None = None, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, crops_coords_top_left: tuple = (0, 0), target_size: tuple[int, int] | None = None, editing_prompt: str | list[str] | None = None, editing_prompt_embeddings: typing.Optional[torch.Tensor] = None, editing_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, reverse_editing_direction: bool | list[bool] | None = False, edit_guidance_scale: float | list[float] | None = 5, edit_warmup_steps: int | list[int] | None = 0, edit_cooldown_steps: int | list[int] | None = None, edit_threshold: float | list[float] | None = 0.9, sem_guidance: list[torch.Tensor] | None = None, use_cross_attn_mask: bool = False, use_intersect_mask: bool = False, user_mask: typing.Optional[torch.Tensor] = None, attn_store_steps: list[int] | None = [], store_averaged_over_steps: bool = True, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], **kwargs)
Parametreler:
denoising_end (float, isteğe bağlı) : Belirtilirse, toplam gürültü azaltma sürecinin, 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, ideal olarak bu hattın [**Görseli İyileştirme
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, 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ı) : Görsel üretimi yönlendirmek için tokenizer_2 ve text_encoder_2'ye gönderilecek negatif istem veya istemler. Tanımlanmamışsa, negative_prompt her iki metin kodlayıcıda da kullanılır
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön 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ı) : Ön 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şturulacaktır.
ip_adapter_image : (PipelineImageInput, isteğe bağlı): IP Adapters ile çalışmak için isteğe bağlı görüntü girişi.
output_type (str, isteğe bağlı, varsayılan "pil") : Üretilen görüntünün çıktı biçimi. PIL: PIL.Image.Image veya np.array arasında seçim yapın.
return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput döndürülecek mi?
cross_attention_kwargs (dict, isteğe bağlı) : Belirtilirse, diffusers.models.attention_processor içinde self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
guidance_rescale (float, opsiyonel, 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ü, sıfır terminal SNR kullanıldığında 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 değerini (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 üretimi yönlendirmek için istem veya istemler. Görsel, editing_prompt = None olarak ayarlanarak yeniden oluşturulur. İstemin yönlendirme yönü, reverse_editing_direction üzerinden belirtilmelidir.
editing_prompt_embeddings (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş düzenleme metin 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şturulacaktır.
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++ Makalesi'ndeki 12. denklemin s_e'si 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) : Rehberliğin (guidance) artık uygulanmadığı, her prompt için difüzyon adım sayısı.
edit_threshold (float veya list[float], isteğe bağlı, varsayılan 0.9) : Rehberlik için 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++ makalesi'ndeki 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ığı. Çapraz dikkat maskeleri LEDITS++ makalesi'ndeki 12. denklemin 'M^1' olarak, gürültü tahmininden türetilen maskeler ise 'M^2' olarak tanımlanır.
user_mask : Düzenleme süreci üzerinde daha iyi kontrol için kullanıcı tarafından sağlanan maske. Bu, LEDITS++'ın örtük maskeleri kullanıcı tercihlerini karşılamadığında 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 mı saklanacağı. 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ı) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları 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üş: 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[[diffusers.LEditsPPPipelineStableDiffusionXL.invert]]
invert(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.5, negative_prompt: str = None, negative_prompt_2: str = None, num_inversion_steps: int = 50, skip: float = 0.15, generator: typing.Optional[torch.Generator] = None, crops_coords_top_left: tuple = (0, 0), num_zero_noise_steps: int = 3, cross_attention_kwargs: dict[str, typing.Any] | None = None, height: int | None = None, width: int | None = None, resize_mode: str | None = 'default', crops_coords: tuple[int, int, int, int] | None = None)
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örüntüsünü açıklayan istem. source_prompt "" ise yönlendirme devre dışı bırakılır.
source_guidance_scale (float, varsayılan 3.5) : Tersine çevirme sırasında yönlendirme gücü.
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, 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ı) : Görsel üretimi yönlendirmek için tokenizer_2 ve text_encoder_2'ye gönderilecek negatif istem veya istemler. Tanımlanmamışsa, negative_prompt her iki metin kodlayıcıda da 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 çevirme ve sonraki üretim için yoksayılacak başlangıç adımlarını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 çevirmeyi 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 değerini (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) : Mevcut 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 ayarlanmazsa, DPMSolverMultistepScheduler ile birlikte kullanılan SD-XL gürültü artefaktları üretecektir.
cross_attention_kwargs (dict, isteğe bağlı) : Belirtilirse, diffusers.models.attention_processor içinde self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
Dönüş: LEditsPPInversionPipelineOutput
Çıktı, yeniden boyutlandırılmış giriş görüntülerini ve ilgili VAE yeniden yapılandırmalarını içerecektir.
LEDITS++ Paper adlı makalede tanımlanan görüntü tersine çevirme işlemi için pipeline'a uygulanan fonksiyon. Zamanlayıcı DDIMScheduler olarak ayarlanırsa, bunun yerine edit-friendly DPDM tarafından önerilen tersine çevirme işlemi gerçekleştirilir.
encode_prompt[[diffusers.LEditsPPPipelineStableDiffusionXL.encode_prompt]]
encode_prompt(device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, negative_prompt: str | None = None, negative_prompt_2: str | None = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None, enable_edit_guidance: bool = True, editing_prompt: str | None = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, editing_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None)
Parametreler:
device : (torch.device): torch cihazı
num_images_per_prompt (int) : her istem için oluşturulacak görsel sayısı
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerine negative_prompt_embeds geçirilmelidir.
negative_prompt_2 (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmek için tokenizer_2 ve text_encoder_2'ye gönderilecek negatif istem veya istemler. Tanımlanmamışsa, negative_prompt her iki metin kodlayıcıda da kullanılır
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön 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ı) : Ön 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şturulacaktır.
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ı) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.
enable_edit_guidance (bool) : Düzenleme istemcisine 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ı) : Ön oluşturulmuş düzenleme metin 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ı) : Ön oluşturulmuş düzenleme havuzlanmış metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, havuzlanmış editing_pooled_prompt_embeds, editing_prompt girdi argümanından oluşturulacaktır.
İsteği metin kodlayıcı gizli durumlarına kodlar.
get_guidance_scale_embedding[[diffusers.LEditsPPPipelineStableDiffusionXL.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
Parametreler:
w (torch.Tensor) : Belirtilen bir yönlendirme ölçeğiyle gömme vektörleri üretir; bu vektörler daha sonra zaman adımları gömmelerini zenginleştirmek için kullanılır.
embedding_dim (int, isteğe bağlı, varsayılan 512) : Üretilecek gömme boyutu.
dtype (torch.dtype, isteğe bağlı, varsayılan torch.float32) : Üretilen gömme (embedding) verilerinin veri türü.
Dönüş: torch.Tensor
(len(w), embedding_dim) biçiminde gömme vektörleri.
https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298 adresine bakın
LEditsPPDiffusionPipelineOutput[[diffusers.pipelines.LEditsPPDiffusionPipelineOutput]]
diffusers.pipelines.LEditsPPDiffusionPipelineOutput[[diffusers.pipelines.LEditsPPDiffusionPipelineOutput]]
diffusers.pipelines.LEditsPPDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_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]) : Üretilen ilgili görüntünün “iş yerinde uygun olmayan” (nsfw) içerik içerip içermediğini gösteren liste veya güvenlik kontrolü yapılamadıysa None.
LEdits++ Diffusion pipeline'leri için çıktı sınıfı.
LEditsPPInversionPipelineOutput[[diffusers.pipelines.LEditsPPInversionPipelineOutput]]
diffusers.pipelines.LEditsPPInversionPipelineOutput[[diffusers.pipelines.LEditsPPInversionPipelineOutput]]
diffusers.pipelines.LEditsPPInversionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, vae_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) : batch_size uzunluğunda, tüm giriş görüntülerinin VAE yeniden yapılandırma listesi (PIL görüntüleri olarak) veya (batch_size, height, width, num_channels) biçiminde NumPy dizisi.
LEdits++ Diffusion pipeline'leri için çıktı sınıfı.
Xet Storage Details
- Size:
- 50.6 kB
- Xet hash:
- 07daa0b47324620f49712ffb90c40f4882b7fce8dcedf0ecb0ae74dd9e2916b8
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.