# LEDITS++

  

LEDITS++ diusulkan dalam [LEDITS++: Limitless Image Editing using Text-to-Image Models](https://huggingface.co/papers/2311.16711) oleh Manuel Brack, Felix Friedrich, Katharina Kornmeier, Linoy Tsaban, Patrick Schramowski, Kristian Kersting, Apolinário Passos.

Abstrak dari makalah tersebut adalah:

*Model difusi teks-ke-gambar baru-baru ini mendapat perhatian yang semakin besar karena kemampuannya yang menakjubkan untuk menghasilkan gambar berkeandalan tinggi hanya dari input teks. Upaya penelitian selanjutnya bertujuan untuk memanfaatkan dan menerapkan kemampuannya pada pengeditan gambar nyata. Namun, metode gambar-ke-gambar yang ada sering kali tidak efisien, tidak presisi, dan memiliki keterbatasan dalam hal serbaguna. Metode-metode tersebut membutuhkan penyesuaian halus yang memakan waktu, menyimpang secara tidak perlu dari gambar input, dan/atau tidak mendukung beberapa pengeditan simultan. Untuk mengatasi masalah-masalah ini, kami memperkenalkan LEDITS++, sebuah teknik manipulasi gambar berbasis teks yang efisien namun serbaguna dan presisi. Pendekatan inversi baru dari LEDITS++ tidak memerlukan penyetelan maupun optimasi dan menghasilkan hasil berkeandalan tinggi dengan beberapa langkah difusi. Kedua, metodologi kami mendukung beberapa pengeditan simultan dan tidak bergantung pada arsitektur. Ketiga, kami menggunakan teknik masking implisit baru yang membatasi perubahan pada area gambar yang relevan. Kami mengusulkan benchmark baru TEdBench++ sebagai bagian dari evaluasi kami yang komprehensif. Hasil kami menunjukkan kemampuan LEDITS++ dan perbaikannya dibandingkan metode sebelumnya. Halaman proyek tersedia di https://leditsplusplus-project.static.hf.space .*

> [!TIP]
> Anda dapat menemukan informasi tambahan tentang LEDITS++ di [halaman proyek](https://leditsplusplus-project.static.hf.space/index.html) dan mencobanya dalam [demo](https://huggingface.co/spaces/editing-images/leditsplusplus).

> [!WARNING]
> Karena beberapa masalah kompatibilitas mundur dengan implementasi [DPMSolverMultistepScheduler](/docs/diffusers/main/id/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) saat ini pada diffusers, implementasi LEdits++ ini tidak lagi dapat menjamin inversi yang sempurna. Masalah ini kemungkinan kecil akan memberikan efek yang terlihat pada kasus penggunaan yang diterapkan. Namun, kami menyediakan implementasi alternatif yang menjamin inversi sempurna di [repo GitHub](https://github.com/ml-research/ledits_pp) khusus.

Kami menyediakan dua pipeline yang berbeda berdasarkan model pre-trained yang berbeda.

## LEditsPPPipelineStableDiffusion[[diffusers.LEditsPPPipelineStableDiffusion]]

#### diffusers.LEditsPPPipelineStableDiffusion[[diffusers.LEditsPPPipelineStableDiffusion]]

```python
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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L269)

**Parameter:**

vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : Text-encoder yang dibekukan. Stable Diffusion menggunakan bagian teks dari [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), khususnya varian [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14).

tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : Tokenizer dari kelas [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/id/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Arsitektur U-Net bersyarat untuk mendenoise latens gambar yang telah dikodekan.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/id/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) atau [DDIMScheduler](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.DDIMScheduler)) : Scheduler yang digunakan bersama `unet` untuk menghilangkan noise pada latens gambar yang telah dienkod. Bisa berupa [DPMSolverMultistepScheduler](/docs/diffusers/main/id/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) atau [DDIMScheduler](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.DDIMScheduler). Jika scheduler lain yang diberikan, akan secara otomatis disetel menjadi [DPMSolverMultistepScheduler](/docs/diffusers/main/id/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

safety_checker (`StableDiffusionSafetyChecker`) : Modul klasifikasi yang memperkirakan apakah gambar yang dihasilkan dapat dianggap ofensif atau berbahaya. Silakan lihat [model card](https://huggingface.co/CompVis/stable-diffusion-v1-4) untuk detailnya.

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : Model yang mengekstrak fitur dari gambar yang dihasilkan untuk digunakan sebagai input bagi `safety_checker`.

Pipeline untuk pengeditan gambar berbasis teks menggunakan LEDits++ dengan Stable Diffusion.

Model ini mewarisi dari [DiffusionPipeline](/docs/diffusers/main/id/api/pipelines/overview#diffusers.DiffusionPipeline) dan dibangun di atas [StableDiffusionPipeline](/docs/diffusers/main/id/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).

#### __call__[[diffusers.LEditsPPPipelineStableDiffusion.__call__]]

```python
__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[str] = ['latents'], **kwargs)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L720)

**Parameter:**

negative_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Diabaikan saat tidak menggunakan panduan (yaitu, diabaikan jika `guidance_scale` kurang dari `1`).

generator (`torch.Generator`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) untuk membuat generasi menjadi deterministik.

output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`.

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) alih-alih tuple biasa.

editing_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Gambar direkonstruksi dengan mengatur `editing_prompt = None`. Arah panduan prompt harus ditentukan melalui `reverse_editing_direction`.

editing_prompt_embeds (`torch.Tensor>`, *opsional*) : Embedding yang sudah dihitung sebelumnya untuk digunakan dalam memandu generasi gambar. Arah panduan embedding harus ditentukan melalui `reverse_editing_direction`.

negative_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (pemberian bobot pada prompt). Jika tidak disediakan, `negative_prompt_embeds` akan dibuat dari argumen input `negative_prompt`.

reverse_editing_direction (`bool` atau `list[bool]`, *opsional*, defaultnya `False`) : Apakah prompt yang sesuai dalam `editing_prompt` harus ditingkatkan atau dikurangi.

edit_guidance_scale (`float` atau `list[float]`, *opsional*, default 5) : Skala panduan untuk mengarahkan generasi gambar. Jika diberikan sebagai daftar, nilainya harus sesuai dengan `editing_prompt`. `edit_guidance_scale` didefinisikan sebagai `s_e` dari persamaan 12 pada [LEDITS++ Paper](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` atau `list[float]`, *opsional*, default 10) : Jumlah langkah difusi (untuk setiap prompt) di mana panduan tidak akan diterapkan.

edit_cooldown_steps (`float` atau `list[float]`, *opsional*, defaultnya `None`) : Jumlah langkah difusi (untuk setiap prompt) setelahnya panduan tidak lagi diterapkan.

edit_threshold (`float` atau `list[float]`, *opsional*, default 0.9) : Ambang batas masking untuk guidance. Ambang batas harus proporsional terhadap area gambar yang dimodifikasi. 'edit_threshold' didefinisikan sebagai 'λ' dari persamaan 12 pada [LEDITS++ Paper](https://huggingface.co/papers/2301.12247).

user_mask (`torch.Tensor`, *opsional*) : Mask yang disediakan pengguna untuk kontrol yang lebih baik atas proses pengeditan. Ini berguna ketika mask implisit LEDITS++ tidak memenuhi preferensi pengguna.

sem_guidance (`list[torch.Tensor]`, *opsional*) : daftar vektor panduan yang telah dibuat sebelumnya untuk diterapkan saat generasi. Panjang daftar harus sesuai dengan `num_inference_steps`.

use_cross_attn_mask (`bool`, defaultnya `False`) : Apakah mask cross-attention digunakan. Mask cross-attention selalu digunakan ketika use_intersect_mask diset ke true. Mask cross-attention didefinisikan sebagai 'M^1' dari persamaan 12 pada [paper LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask (`bool`, defaultnya `True`) : Apakah istilah masking dihitung sebagai irisan dari mask cross-attention dan mask yang diturunkan dari estimasi noise. Mask cross-attention didefinisikan sebagai 'M^1' dan mask yang diturunkan dari estimasi noise didefinisikan sebagai 'M^2' dari persamaan 12 pada [paper LEDITS++](https://huggingface.co/papers/2311.16711).

attn_store_steps (`list[int]`, *opsional*) : Langkah-langkah di mana peta perhatian disimpan dalam AttentionStore. Hanya untuk keperluan visualisasi.

store_averaged_over_steps (`bool`, defaultnya `True`) : Apakah peta perhatian untuk 'attn_store_steps' disimpan sebagai rata-rata dari langkah difusi. Jika False, peta perhatian untuk setiap langkah disimpan secara terpisah. Hanya untuk keperluan visualisasi.

cross_attention_kwargs (`dict`, *opsional*) : Kamus kwargs yang jika ditentukan akan diteruskan ke `AttentionProcessor` seperti yang didefinisikan dalam [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *opsional*, default 0.0) : Faktor rescale guidance dari [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). Faktor rescale guidance harus memperbaiki overexposure saat menggunakan zero terminal SNR.

clip_skip (`int`, *opsional*) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` akan berisi daftar semua tensor sesuai yang ditentukan oleh `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opsional*) : Daftar input tensor untuk fungsi `callback_on_step_end`. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen `callback_kwargs`. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut `._callback_tensor_inputs` dari kelas pipeline Anda.

**Mengembalikan:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) atau `tuple`

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.pipelines.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 `bool`s denoting whether the corresponding generated image likely represents "not-safe-for-work" (nsfw) content, according to the `safety_checker`.

Fungsi panggilan untuk pipeline pengeditan. Metode [invert()](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusion.invert) harus dipanggil terlebih dahulu. Pengeditan selalu dilakukan untuk gambar terbalik terakhir.

Contoh:
```py
>>> 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]
```

#### invert[[diffusers.LEditsPPPipelineStableDiffusion.invert]]

```python
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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L1223)

**Parameter:**

image (`PipelineImageInput`) : Input untuk gambar yang akan diedit. Beberapa gambar input harus memiliki rasio aspek yang sama.

source_prompt (`str`, defaultnya `""`) : Prompt yang menggambarkan gambar input yang akan digunakan untuk panduan selama inversi. Panduan dinonaktifkan jika `source_prompt` adalah `""`.

source_guidance_scale (`float`, defaultnya `3.5`) : Kekuatan panduan selama inversi.

num_inversion_steps (`int`, defaultnya `30`) : Jumlah total langkah inversi yang dilakukan setelah membuang `skip` langkah awal.

skip (`float`, defaultnya `0.15`) : Bagian dari langkah awal yang akan diabaikan untuk inversi dan generasi berikutnya. Nilai yang lebih rendah akan menghasilkan perubahan yang lebih kuat pada gambar input. `skip` harus berada di antara `0` dan `1`.

generator (`torch.Generator`, *opsional*) : Sebuah [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) untuk membuat inversi menjadi deterministik.

cross_attention_kwargs (`dict`, *opsional*) : Kamus kwargs yang jika ditentukan akan diteruskan ke `AttentionProcessor` seperti yang didefinisikan dalam [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

clip_skip (`int`, *opsional*) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

height (`int`, *opsional*, defaultnya `None`) : Tinggi pada gambar yang telah dipreprocess. Jika `None`, akan menggunakan `get_default_height_width()` untuk mendapatkan tinggi default.

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`, *opsional*, defaultnya `default`) : Mode resize, dapat berupa `default` atau `fill`. Jika `default`, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan, dan rasio aspek asli mungkin tidak dipertahankan. Jika `fill`, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan dengan mempertahankan rasio aspek, kemudian gambar diposisikan di tengah dimensi tersebut, mengisi area kosong dengan data dari gambar. Jika `crop`, gambar akan di-resize agar muat di dalam lebar dan tinggi yang ditentukan dengan mempertahankan rasio aspek, kemudian gambar diposisikan di tengah dimensi tersebut, memotong bagian yang berlebih. Perhatikan bahwa resize_mode `fill` dan `crop` hanya didukung untuk input gambar PIL.

crops_coords (`list[tuple[int, int, int, int]]`, *opsional*, defaultnya `None`) : Koordinat pemotongan untuk setiap gambar dalam batch. Jika `None`, gambar tidak akan dipotong.

**Mengembalikan:** [LEditsPPInversionPipelineOutput](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPInversionPipelineOutput)

Output akan berisi gambar input yang telah di-resize dan rekonstruksi VAE yang sesuai.

Fungsi untuk pipeline inversi gambar seperti yang dijelaskan dalam [LEDITS++ Paper](https://huggingface.co/papers/2301.12247). Jika scheduler diatur ke [DDIMScheduler](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.DDIMScheduler), inversi yang diusulkan oleh [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) akan dilakukan sebagai gantinya.

#### encode_prompt[[diffusers.LEditsPPPipelineStableDiffusion.encode_prompt]]

```python
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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L521)

**Parameter:**

device : (`torch.device`): perangkat torch

num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt

enable_edit_guidance (`bool`) : apakah akan melakukan pengeditan apa pun atau merekonstruksi gambar input

negative_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan `negative_prompt_embeds` sebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jika `guidance_scale` kurang dari `1`).

editing_prompt (`str` atau `list[str]`, *opsional*) : Prompt pengeditan yang akan dienkod. Jika tidak didefinisikan, Anda harus meneruskan `editing_prompt_embeds` sebagai gantinya.

editing_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input `prompt`.

negative_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input `negative_prompt`.

lora_scale (`float`, *opsional*) : Skala LoRA yang akan diterapkan ke semua lapisan LoRA dari text encoder jika lapisan LoRA dimuat.

clip_skip (`int`, *opsional*) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

Mengkodekan prompt menjadi hidden states dari text encoder.

## LEditsPPPipelineStableDiffusionXL[[diffusers.LEditsPPPipelineStableDiffusionXL]]

#### diffusers.LEditsPPPipelineStableDiffusionXL[[diffusers.LEditsPPPipelineStableDiffusionXL]]

```python
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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L273)

**Parameter:**

vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : Text-encoder yang dibekukan. Stable Diffusion XL menggunakan bagian teks dari [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), khususnya varian [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14).

text_encoder_2 ([CLIPTextModelWithProjection](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModelWithProjection)) : Pengkode teks beku kedua. Stable Diffusion XL menggunakan bagian teks dan pool dari [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection), khususnya varian [laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k).

tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : Tokenizer dari kelas [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

tokenizer_2 ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : Tokenizer kedua dari kelas [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/id/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Arsitektur U-Net bersyarat untuk mendenoise latens gambar yang telah dikodekan.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/id/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) atau [DDIMScheduler](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.DDIMScheduler)) : Scheduler yang digunakan bersama `unet` untuk menghilangkan noise pada latens gambar yang telah dienkod. Bisa berupa [DPMSolverMultistepScheduler](/docs/diffusers/main/id/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) atau [DDIMScheduler](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.DDIMScheduler). Jika scheduler lain yang diberikan, akan secara otomatis disetel menjadi [DPMSolverMultistepScheduler](/docs/diffusers/main/id/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

force_zeros_for_empty_prompt (`bool`, *opsional*, defaultnya `"True"`) : Apakah embedding prompt negatif harus dipaksa selalu diatur ke 0. Lihat juga konfigurasi dari `stabilityai/stable-diffusion-xl-base-1-0`.

add_watermarker (`bool`, *opsional*) : Apakah akan menggunakan [invisible_watermark library](https://github.com/ShieldMnt/invisible-watermark/) untuk memberi watermark pada gambar output. Jika tidak didefinisikan, nilainya akan default ke True jika paket tersebut terinstal, jika tidak, tidak akan ada watermarker yang digunakan.

Pipeline untuk pengeditan gambar berbasis teks menggunakan LEDits++ dengan Stable Diffusion XL.

Model ini mewarisi dari [DiffusionPipeline](/docs/diffusers/main/id/api/pipelines/overview#diffusers.DiffusionPipeline) dan dibangun di atas [StableDiffusionXLPipeline](/docs/diffusers/main/id/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).

Selain itu, pipeline mewarisi metode pemuatan berikut:
- *LoRA*: [LEditsPPPipelineStableDiffusionXL.load_lora_weights()](/docs/diffusers/main/id/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights)
- *Ckpt*: [loaders.FromSingleFileMixin.from_single_file()](/docs/diffusers/main/id/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file)

serta metode penyimpanan berikut:
- *LoRA*: `loaders.StableDiffusionXLPipeline.save_lora_weights`

#### __call__[[diffusers.LEditsPPPipelineStableDiffusionXL.__call__]]

```python
__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[int, int] = (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[str] = ['latents'], **kwargs)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L782)

**Parameter:**

denoising_end (`float`, *opsional*) : Jika ditentukan, menentukan fraksi (antara 0.0 dan 1.0) dari total proses denoising yang harus diselesaikan sebelum proses tersebut dihentikan secara dini secara sengaja. Akibatnya, sampel yang dikembalikan masih akan mempertahankan sejumlah besar noise, sebagaimana ditentukan oleh langkah-langkah diskrit yang dipilih oleh scheduler. Parameter denoising_end sebaiknya digunakan ketika pipeline ini merupakan bagian dari setup multi-pipeline "Mixture of Denoisers", sebagaimana diuraikan dalam [**Refining the Image

negative_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan `negative_prompt_embeds` sebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jika `guidance_scale` kurang dari `1`).

negative_prompt_2 (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar untuk dikirim ke `tokenizer_2` dan `text_encoder_2`. Jika tidak didefinisikan, `negative_prompt` digunakan di kedua text-encoder

negative_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan dihasilkan dari argumen input `negative_prompt`.

ip_adapter_image : (`PipelineImageInput`, *opsional*): Input gambar opsional untuk bekerja dengan IP Adapters.

output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`.

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` alih-alih tuple biasa.

cross_attention_kwargs (`dict`, *opsional*) : Kamus kwargs yang jika ditentukan akan diteruskan ke `AttentionProcessor` seperti yang didefinisikan di bawah `self.processor` dalam [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *opsional*, default 0.7) : Faktor rescale guidance yang diusulkan oleh [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) `guidance_scale` didefinisikan sebagai `φ` dalam persamaan 16. dari [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). Faktor rescale guidance harus memperbaiki overexposure saat menggunakan zero terminal SNR.

crops_coords_top_left (`tuple[int]`, *opsional*, defaultnya (0, 0)) : `crops_coords_top_left` dapat digunakan untuk menghasilkan gambar yang tampak "dipotong" dari posisi `crops_coords_top_left` ke bawah. Gambar yang bagus dan terpusat biasanya dicapai dengan mengatur `crops_coords_top_left` ke (0, 0). Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

target_size (`tuple[int]`, *opsional*, defaultnya (1024, 1024)) : Untuk sebagian besar kasus, `target_size` sebaiknya diatur ke tinggi dan lebar yang diinginkan dari gambar yang dihasilkan. Jika tidak ditentukan, nilainya akan default ke `(width, height)`. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

editing_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Gambar direkonstruksi dengan mengatur `editing_prompt = None`. Arah panduan prompt harus ditentukan melalui `reverse_editing_direction`.

editing_prompt_embeddings (`torch.Tensor`, *opsional*) : Embedding teks edit yang telah dibuat sebelumnya. Dapat digunakan untuk menyesuaikan input teks dengan mudah, *misalnya* penimbangan prompt. Jika tidak disediakan, editing_prompt_embeddings akan dibuat dari argumen input `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks edit yang sudah dipoolkan sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, editing_prompt_embeddings akan dihasilkan dari argumen input `editing_prompt`.

reverse_editing_direction (`bool` atau `list[bool]`, *opsional*, defaultnya `False`) : Apakah prompt yang sesuai dalam `editing_prompt` harus ditingkatkan atau dikurangi.

edit_guidance_scale (`float` atau `list[float]`, *opsional*, default 5) : Skala panduan untuk mengarahkan generasi gambar. Jika diberikan sebagai daftar, nilainya harus sesuai dengan `editing_prompt`. `edit_guidance_scale` didefinisikan sebagai `s_e` dari persamaan 12 pada [LEDITS++ Paper](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` atau `list[float]`, *opsional*, default 10) : Jumlah langkah difusi (untuk setiap prompt) di mana panduan tidak diterapkan.

edit_cooldown_steps (`float` atau `list[float]`, *opsional*, defaultnya `None`) : Jumlah langkah difusi (untuk setiap prompt) setelahnya panduan tidak lagi diterapkan.

edit_threshold (`float` atau `list[float]`, *opsional*, default 0.9) : Ambang batas masking untuk guidance. Ambang batas harus proporsional terhadap area gambar yang dimodifikasi. 'edit_threshold' didefinisikan sebagai 'λ' dari persamaan 12 pada [LEDITS++ Paper](https://huggingface.co/papers/2301.12247).

sem_guidance (`list[torch.Tensor]`, *opsional*) : daftar vektor panduan yang telah dibuat sebelumnya untuk diterapkan saat generasi. Panjang daftar harus sesuai dengan `num_inference_steps`.

use_cross_attn_mask : Apakah mask cross-attention digunakan. Mask cross-attention selalu digunakan ketika use_intersect_mask diatur ke true. Mask cross-attention didefinisikan sebagai 'M^1' dari persamaan 12 pada [paper LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask : Apakah istilah masking dihitung sebagai irisan dari mask cross-attention dan mask yang diturunkan dari estimasi noise. Mask cross-attention didefinisikan sebagai 'M^1' dan mask yang diturunkan dari estimasi noise didefinisikan sebagai 'M^2' dari persamaan 12 pada [paper LEDITS++](https://huggingface.co/papers/2311.16711).

user_mask : Mask yang disediakan pengguna untuk kontrol yang lebih baik atas proses pengeditan. Ini berguna ketika mask implisit dari LEDITS++ tidak memenuhi preferensi pengguna.

attn_store_steps : Langkah-langkah di mana peta perhatian disimpan dalam AttentionStore. Hanya untuk keperluan visualisasi.

store_averaged_over_steps : Apakah peta perhatian untuk 'attn_store_steps' disimpan sebagai rata-rata dari langkah difusi. Jika False, peta perhatian untuk setiap langkah disimpan secara terpisah. Hanya untuk keperluan visualisasi.

clip_skip (`int`, *opsional*) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` akan berisi daftar semua tensor sesuai yang ditentukan oleh `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opsional*) : Daftar input tensor untuk fungsi `callback_on_step_end`. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen `callback_kwargs`. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut `._callback_tensor_inputs` dari kelas pipeline Anda.

**Mengembalikan:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) atau `tuple`

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) jika `return_dict` bernilai True, selain itu berupa `tuple. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.

Fungsi panggilan untuk pipeline pengeditan. Metode [invert()](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusionXL.invert) harus dipanggil terlebih dahulu. Pengeditan selalu dilakukan untuk gambar terbalik terakhir.

Contoh:
```py
>>> 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]
```

#### invert[[diffusers.LEditsPPPipelineStableDiffusionXL.invert]]

```python
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[int, int] = (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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L1414)

**Parameter:**

image (`PipelineImageInput`) : Input untuk gambar yang akan diedit. Beberapa gambar input harus memiliki rasio aspek yang sama.

source_prompt (`str`, defaultnya `""`) : Prompt yang menggambarkan gambar input yang akan digunakan untuk panduan selama inversi. Panduan dinonaktifkan jika `source_prompt` adalah `""`.

source_guidance_scale (`float`, defaultnya `3.5`) : Kekuatan panduan selama inversi.

negative_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan `negative_prompt_embeds` sebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jika `guidance_scale` kurang dari `1`).

negative_prompt_2 (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar untuk dikirim ke `tokenizer_2` dan `text_encoder_2`. Jika tidak didefinisikan, `negative_prompt` digunakan di kedua text-encoder

num_inversion_steps (`int`, defaultnya `50`) : Jumlah total langkah inversi yang dilakukan setelah membuang `skip` langkah awal.

skip (`float`, defaultnya `0.15`) : Bagian dari langkah awal yang akan diabaikan untuk inversi dan generasi berikutnya. Nilai yang lebih rendah akan menghasilkan perubahan yang lebih kuat pada gambar input. `skip` harus berada di antara `0` dan `1`.

generator (`torch.Generator`, *opsional*) : Sebuah [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) untuk membuat inversi menjadi deterministik.

crops_coords_top_left (`tuple[int]`, *opsional*, defaultnya (0, 0)) : `crops_coords_top_left` dapat digunakan untuk menghasilkan gambar yang tampak "dipotong" dari posisi `crops_coords_top_left` ke bawah. Gambar yang bagus dan terpusat biasanya dicapai dengan mengatur `crops_coords_top_left` ke (0, 0). Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

num_zero_noise_steps (`int`, defaultnya `3`) : Jumlah langkah difusi akhir yang tidak akan melakukan renoise pada gambar saat ini. Jika tidak ada langkah yang diatur ke nol, SD-XL yang dikombinasikan dengan [DPMSolverMultistepScheduler](/docs/diffusers/main/id/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) akan menghasilkan artefak noise.

cross_attention_kwargs (`dict`, *opsional*) : Kamus kwargs yang jika ditentukan akan diteruskan ke `AttentionProcessor` seperti yang didefinisikan di bawah `self.processor` dalam [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

**Mengembalikan:** [LEditsPPInversionPipelineOutput](/docs/diffusers/main/id/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPInversionPipelineOutput)

Output akan berisi gambar input yang telah di-resize dan rekonstruksi VAE yang sesuai.

Fungsi untuk pipeline inversi gambar seperti yang dijelaskan dalam [LEDITS++ Paper](https://huggingface.co/papers/2301.12247). Jika scheduler diatur ke [DDIMScheduler](/docs/diffusers/main/id/api/schedulers/ddim#diffusers.DDIMScheduler), inversi yang diusulkan oleh [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) akan dilakukan sebagai gantinya.

#### encode_prompt[[diffusers.LEditsPPPipelineStableDiffusionXL.encode_prompt]]

```python
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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L399)

**Parameter:**

device : (`torch.device`): perangkat torch

num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt

negative_prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan `negative_prompt_embeds` sebagai gantinya.

negative_prompt_2 (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar untuk dikirim ke `tokenizer_2` dan `text_encoder_2`. Jika tidak didefinisikan, `negative_prompt` digunakan di kedua text-encoder

negative_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, *misalnya* penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan dihasilkan dari argumen input `negative_prompt`.

lora_scale (`float`, *opsional*) : Skala lora yang akan diterapkan ke semua lapisan LoRA dari text encoder jika lapisan LoRA dimuat.

clip_skip (`int`, *opsional*) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

enable_edit_guidance (`bool`) : Apakah akan mengarahkan ke prompt pengeditan atau tidak.

editing_prompt (`str` atau `list[str]`, *opsional*) : Prompt pengeditan yang akan dienkod. Jika tidak didefinisikan dan 'enable_edit_guidance' bernilai True, Anda harus meneruskan `editing_prompt_embeds` sebagai gantinya.

editing_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks edit yang telah dibuat sebelumnya. Dapat digunakan untuk menyesuaikan input teks dengan mudah, *misalnya* penimbangan prompt. Jika tidak disediakan dan 'enable_edit_guidance' adalah True, editing_prompt_embeds akan dihasilkan dari argumen input `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *opsional*) : Embedding teks pooled hasil edit yang sudah dibuat sebelumnya. Dapat digunakan untuk menyesuaikan input teks dengan mudah, *misalnya* pembobotan prompt. Jika tidak disediakan, editing_pooled_prompt_embeds yang di-pool akan dibuat dari argumen input `editing_prompt`.

Mengkodekan prompt menjadi hidden states dari text encoder.

#### get_guidance_scale_embedding[[diffusers.LEditsPPPipelineStableDiffusionXL.get_guidance_scale_embedding]]

```python
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L696)

**Parameter:**

w (`torch.Tensor`) : Menghasilkan vektor embedding dengan skala panduan yang ditentukan untuk selanjutnya memperkaya embedding timestep.

embedding_dim (`int`, *opsional*, default 512) : Dimensi dari embedding yang akan dihasilkan.

dtype (`torch.dtype`, *opsional*, defaultnya `torch.float32`) : Tipe data dari embedding yang dihasilkan.

**Mengembalikan:** `torch.Tensor`

Vektor embedding dengan bentuk `(len(w), embedding_dim)`.

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

## LEditsPPDiffusionPipelineOutput[[diffusers.pipelines.LEditsPPDiffusionPipelineOutput]]

#### diffusers.pipelines.LEditsPPDiffusionPipelineOutput[[diffusers.pipelines.LEditsPPDiffusionPipelineOutput]]

```python
diffusers.pipelines.LEditsPPDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_content_detected: list[bool] | None)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_output.py#L10)

**Parameter:**

images (`list[PIL.Image.Image]` atau `np.ndarray`) : daftar gambar PIL yang telah didenoise dengan panjang `batch_size` atau array NumPy dengan bentuk `(batch_size, height, width, num_channels)`.

nsfw_content_detected (`list[bool]`) : daftar yang menunjukkan apakah gambar yang dihasilkan yang sesuai mengandung konten “not-safe-for-work” (nsfw) atau `None` jika pemeriksaan keamanan tidak dapat dilakukan.

Kelas output untuk pipeline difusi LEdits++.

## LEditsPPInversionPipelineOutput[[diffusers.pipelines.LEditsPPInversionPipelineOutput]]

#### diffusers.pipelines.LEditsPPInversionPipelineOutput[[diffusers.pipelines.LEditsPPInversionPipelineOutput]]

```python
diffusers.pipelines.LEditsPPInversionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, vae_reconstruction_images: list[PIL.Image.Image] | numpy.ndarray)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_output.py#L28)

**Parameter:**

input_images (`list[PIL.Image.Image]` atau `np.ndarray`) : daftar gambar input yang dipotong dan di-resize sebagai gambar PIL dengan panjang `batch_size` atau array NumPy dengan bentuk ` (batch_size, height, width, num_channels)`.

vae_reconstruction_images (`list[PIL.Image.Image]` atau `np.ndarray`) : daftar rekonstruksi VAE dari semua gambar input sebagai gambar PIL dengan panjang `batch_size` atau array NumPy dengan bentuk ` (batch_size, height, width, num_channels)`.

Kelas output untuk pipeline difusi LEdits++.

