# LEDITS++

  

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

O resumo do artigo é:

*Os modelos de difusão de texto para imagem têm recebido interesse crescente recentemente, devido à sua notável capacidade de gerar imagens de alta fidelidade a partir apenas de entradas de texto. Esforços de pesquisa subsequentes visam explorar e aplicar suas capacidades à edição real de imagens. No entanto, os métodos existentes de imagem para imagem são frequentemente ineficientes, imprecisos e de versatilidade limitada. Eles exigem ajuste fino demorado, se desviam desnecessariamente e com força excessiva da imagem de entrada e/ou não oferecem suporte a múltiplas edições simultâneas. Para abordar essas questões, apresentamos o LEDITS++, uma técnica de manipulação textual de imagem eficiente, versátil e precisa. A nova abordagem de inversão do LEDITS++ não requer ajuste nem otimização e produz resultados de alta fidelidade com poucas etapas de difusão. Em segundo lugar, nossa metodologia suporta múltiplas edições simultâneas e é agnóstica em relação à arquitetura. Em terceiro lugar, utilizamos uma nova técnica de mascaramento implícito que limita as alterações às regiões relevantes da imagem. Propomos o novo benchmark TEdBench++ como parte de nossa avaliação exaustiva. Nossos resultados demonstram as capacidades do LEDITS++ e suas melhorias em relação a métodos anteriores. A página do projeto está disponível em https://leditsplusplus-project.static.hf.space .*

> [!TIP]
> Você pode encontrar informações adicionais sobre LEDITS++ na [página do projeto](https://leditsplusplus-project.static.hf.space/index.html) e experimentá-lo em uma [demonstração](https://huggingface.co/spaces/editing-images/leditsplusplus).

> [!WARNING]
> Devido a alguns problemas de compatibilidade reversa com a implementação atual de [DPMSolverMultistepScheduler](/docs/diffusers/main/pt/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) no diffusers, esta implementação do LEdits++ não pode mais garantir inversão perfeita. É improvável que esse problema tenha efeitos perceptíveis em casos de uso práticos. No entanto, fornecemos uma implementação alternativa que garante inversão perfeita em um [repositório dedicado no GitHub](https://github.com/ml-research/ledits_pp).

Oferecemos dois pipelines distintos baseados em diferentes modelos pré-treinados.

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

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

**Parâmetros:**

vae ([AutoencoderKL](/docs/diffusers/main/pt/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Modelo de Variational Auto-Encoder (VAE) para codificar e decodificar imagens para e a partir de representações latentes.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : Codificador de texto congelado. O Stable Diffusion usa a parte de texto do [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), especificamente a variante [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 da classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/pt/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Arquitetura de U-Net condicional para desruidar os latentes da imagem codificada.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/pt/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) ou [DDIMScheduler](/docs/diffusers/main/pt/api/schedulers/ddim#diffusers.DDIMScheduler)) : Um scheduler a ser usado em combinação com `unet` para desruidar os latentes da imagem codificada. Pode ser um dos [DPMSolverMultistepScheduler](/docs/diffusers/main/pt/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) ou [DDIMScheduler](/docs/diffusers/main/pt/api/schedulers/ddim#diffusers.DDIMScheduler). Se qualquer outro scheduler for passado, ele será automaticamente definido como [DPMSolverMultistepScheduler](/docs/diffusers/main/pt/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

safety_checker (`StableDiffusionSafetyChecker`) : Módulo de classificação que estima se as imagens geradas podem ser consideradas ofensivas ou prejudiciais. Consulte o [model card](https://huggingface.co/CompVis/stable-diffusion-v1-4) para mais detalhes.

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : Modelo que extrai recursos de imagens geradas para serem usados como entradas para o `safety_checker`.

Pipeline para edição textual de imagens usando LEDits++ com Stable Diffusion.

Este modelo herda de [DiffusionPipeline](/docs/diffusers/main/pt/api/pipelines/overview#diffusers.DiffusionPipeline) e é baseado no [StableDiffusionPipeline](/docs/diffusers/main/pt/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline). Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um dispositivo específico, etc.).

#### __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)
```

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

**Parâmetros:**

negative_prompt (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts que não devem orientar a geração da imagem. Ignorado quando não se usa orientação (ou seja, ignorado se `guidance_scale` for menor que `1`).

generator (`torch.Generator`, *opcional*) : Um ou uma lista de [geradores do torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) para tornar a geração determinística.

output_type (`str`, *opcional*, padrão `"pil"`) : O formato de saída da imagem gerada. Escolha entre [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` ou `np.array`.

return_dict (`bool`, *opcional*, padrão `True`) : Se deve ou não retornar um [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/pt/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) em vez de uma tupla simples.

editing_prompt (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts para orientar a geração da imagem. A imagem é reconstruída ao definir `editing_prompt = None`. A direção de orientação do prompt deve ser especificada via `reverse_editing_direction`.

editing_prompt_embeds (`torch.Tensor>`, *opcional*) : Embebimentos pré-computados a serem usados para orientar a geração da imagem. A direção de orientação do embebimento deve ser especificada via `reverse_editing_direction`.

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativo pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto (ponderação do prompt). Se não forem fornecidos, `negative_prompt_embeds` são gerados a partir do argumento de entrada `negative_prompt`.

reverse_editing_direction (`bool` ou `list[bool]`, *opcional*, padrão `False`) : Se o prompt correspondente em `editing_prompt` deve ser aumentado ou diminuído.

edit_guidance_scale (`float` ou `list[float]`, *opcional*, padrão 5) : Escala de orientação para guiar a geração da imagem. Se fornecida como lista, os valores devem corresponder a `editing_prompt`. `edit_guidance_scale` é definido como `s_e` da equação 12 do [LEDITS++ Paper](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` ou `list[float]`, *opcional*, padrão 10) : Número de etapas de difusão (para cada prompt) para as quais a orientação não será aplicada.

edit_cooldown_steps (`float` ou `list[float]`, *opcional*, padrão `None`) : Número de passos de difusão (para cada prompt) após os quais a orientação deixará de ser aplicada.

edit_threshold (`float` ou `list[float]`, *opcional*, padrão 0,9) : Limiar de mascaramento do guidance. O limiar deve ser proporcional à região da imagem que é modificada. 'edit_threshold' é definido como 'λ' da equação 12 do [LEDITS++ Paper](https://huggingface.co/papers/2301.12247).

user_mask (`torch.Tensor`, *opcional*) : Máscara fornecida pelo usuário para um controle ainda melhor sobre o processo de edição. Isso é útil quando as máscaras implícitas do LEDITS++ não atendem às preferências do usuário.

sem_guidance (`list[torch.Tensor]`, *opcional*) : lista de vetores de orientação pré-gerados a serem aplicados na geração. O comprimento da lista deve corresponder a `num_inference_steps`.

use_cross_attn_mask (`bool`, padrão `False`) : Se máscaras de atenção cruzada são usadas. Máscaras de atenção cruzada são sempre usadas quando use_intersect_mask é definido como true. Máscaras de atenção cruzada são definidas como 'M^1' da equação 12 do [artigo LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask (`bool`, padrão `True`) : Se o termo de mascaramento é calculado como interseção das máscaras de atenção cruzada e das máscaras derivadas da estimativa de ruído. As máscaras de atenção cruzada são definidas como 'M^1' e as máscaras derivadas da estimativa de ruído são definidas como 'M^2' da equação 12 do [artigo LEDITS++](https://huggingface.co/papers/2311.16711).

attn_store_steps (`list[int]`, *opcional*) : Passos para os quais os mapas de atenção são armazenados no AttentionStore. Apenas para fins de visualização.

store_averaged_over_steps (`bool`, padrão `True`) : Se os mapas de atenção para os 'attn_store_steps' são armazenados com média sobre os passos de difusão. Se False, os mapas de atenção para cada passo são armazenados separadamente. Apenas para fins de visualização.

cross_attention_kwargs (`dict`, *opcional*) : Um dicionário de kwargs que, se especificado, é passado ao `AttentionProcessor` conforme definido em [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *opcional*, padrão 0.0) : Fator de rescalonamento de orientação de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). O fator de rescalonamento de orientação deve corrigir a sobreexposição ao usar SNR terminal zero.

clip_skip (`int`, *opcional*) : Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.

callback_on_step_end (`Callable`, *opcional*) : Uma função que é chamada no final de cada etapa de desruidamento durante a inferência. A função é chamada com os seguintes argumentos: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` incluirá uma lista de todos os tensores, conforme especificado por `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opcional*) : A lista de entradas de tensor para a função `callback_on_step_end`. Os tensores especificados na lista serão passados como argumento `callback_kwargs`. Você só poderá incluir variáveis listadas no atributo `._callback_tensor_inputs` da sua classe de pipeline.

**Retorna:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/pt/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) ou `tuple`

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/pt/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`.

A função de chamada do pipeline para edição. O método [invert()](/docs/diffusers/main/pt/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusion.invert) deve ser chamado antes. As edições serão sempre realizadas para a(s) última(s) imagem(ns) invertida(s).

Exemplos:
```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)
```

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

**Parâmetros:**

image (`PipelineImageInput`) : Entrada para a(s) imagem(ns) que serão editadas. Múltiplas imagens de entrada devem ter, por padrão, a mesma proporção de aspecto.

source_prompt (`str`, padrão `""`) : Prompt descrevendo a imagem de entrada que será usado para orientação durante a inversão. A orientação é desativada se o `source_prompt` for `""`.

source_guidance_scale (`float`, padrão `3.5`) : Força do guia durante a inversão.

num_inversion_steps (`int`, padrão `30`) : Número total de etapas de inversão realizadas após descartar as primeiras `skip` etapas.

skip (`float`, padrão `0.15`) : Porção dos passos iniciais que será ignorada para inversão e geração subsequente. Valores menores levarão a mudanças mais fortes na imagem de entrada. `skip` deve estar entre `0` e `1`.

generator (`torch.Generator`, *opcional*) : Um [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) para tornar a inversão determinística.

cross_attention_kwargs (`dict`, *opcional*) : Um dicionário de kwargs que, se especificado, é passado ao `AttentionProcessor` conforme definido em [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

clip_skip (`int`, *opcional*) : Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.

height (`int`, *opcional*, padrão `None`) : A altura da imagem pré-processada. Se `None`, usará o `get_default_height_width()` para obter a altura padrão.

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`, *opcional*, padrão é `default`) : O modo de redimensionamento, pode ser `default` ou `fill`. Se `default`, a imagem será redimensionada para caber dentro da largura e altura especificadas, e pode não manter a proporção original. Se `fill`, a imagem será redimensionada para caber dentro da largura e altura especificadas, mantendo a proporção, e então a imagem será centralizada dentro das dimensões, preenchendo o espaço vazio com dados da imagem. Se `crop`, a imagem será redimensionada para caber dentro da largura e altura especificadas, mantendo a proporção, e então a imagem será centralizada dentro das dimensões, cortando o excesso. Observe que resize_mode `fill` e `crop` são suportados apenas para entrada de imagem PIL.

crops_coords (`list[tuple[int, int, int, int]]`, *opcional*, padrão `None`) : As coordenadas de recorte para cada imagem no lote. Se `None`, a imagem não será recortada.

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

A saída conterá a(s) imagem(ns) de entrada redimensionada(s) e a(s) reconstrução(ões) correspondente(s) do VAE.

A função para o pipeline de inversão de imagem conforme descrito no [LEDITS++ Paper](https://huggingface.co/papers/2301.12247). Se o scheduler estiver definido como [DDIMScheduler](/docs/diffusers/main/pt/api/schedulers/ddim#diffusers.DDIMScheduler), a inversão proposta pelo [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) será realizada em vez disso.

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

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

**Parâmetros:**

device : (`torch.device`): dispositivo torch

num_images_per_prompt (`int`) : número de imagens que devem ser geradas por prompt

enable_edit_guidance (`bool`) : se deve realizar alguma edição ou reconstruir a imagem de entrada

negative_prompt (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts que não devem orientar a geração da imagem. Se não definido, é necessário passar `negative_prompt_embeds` em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se `guidance_scale` for menor que `1`).

editing_prompt (`str` ou `list[str]`, *opcional*) : Prompt(s) de edição a serem codificados. Se não definido, é necessário passar `editing_prompt_embeds` em vez disso.

editing_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não forem fornecidos, os embeddings de texto serão gerados a partir do argumento de entrada `prompt`.

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativos pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não forem fornecidos, negative_prompt_embeds será gerado a partir do argumento de entrada `negative_prompt`.

lora_scale (`float`, *opcional*) : Uma escala LoRA que será aplicada a todas as camadas LoRA do codificador de texto, caso as camadas LoRA sejam carregadas.

clip_skip (`int`, *opcional*) : Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.

Codifica o prompt em estados ocultos do codificador de texto.

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

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

**Parâmetros:**

vae ([AutoencoderKL](/docs/diffusers/main/pt/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Modelo de Variational Auto-Encoder (VAE) para codificar e decodificar imagens para e a partir de representações latentes.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : Codificador de texto congelado. O Stable Diffusion XL usa a parte de texto do [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), especificamente a variante [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)) : Segundo codificador de texto congelado. O Stable Diffusion XL usa a parte de texto e pool do [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection), especificamente a variante [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 da classe [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)) : Segundo Tokenizer da classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/pt/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Arquitetura de U-Net condicional para desruidar os latentes da imagem codificada.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/pt/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) ou [DDIMScheduler](/docs/diffusers/main/pt/api/schedulers/ddim#diffusers.DDIMScheduler)) : Um scheduler a ser usado em combinação com `unet` para desruidar os latentes da imagem codificada. Pode ser um dos [DPMSolverMultistepScheduler](/docs/diffusers/main/pt/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) ou [DDIMScheduler](/docs/diffusers/main/pt/api/schedulers/ddim#diffusers.DDIMScheduler). Se qualquer outro scheduler for passado, ele será automaticamente definido como [DPMSolverMultistepScheduler](/docs/diffusers/main/pt/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

force_zeros_for_empty_prompt (`bool`, *opcional*, padrão `"True"`) : Se os embeddings do prompt negativo devem ser forçados a sempre serem definidos como 0. Veja também a configuração de `stabilityai/stable-diffusion-xl-base-1-0`.

add_watermarker (`bool`, *opcional*) : Se deve usar a [invisible_watermark library](https://github.com/ShieldMnt/invisible-watermark/) para aplicar marca d'água nas imagens de saída. Se não definido, o padrão será True se o pacote estiver instalado; caso contrário, nenhuma marca d'água será usada.

Pipeline para edição textual de imagens usando LEDits++ com Stable Diffusion XL.

Este modelo herda de [DiffusionPipeline](/docs/diffusers/main/pt/api/pipelines/overview#diffusers.DiffusionPipeline) e é baseado no [StableDiffusionXLPipeline](/docs/diffusers/main/pt/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline). Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um dispositivo específico, etc.).

Além disso, o pipeline herda os seguintes métodos de carregamento:
- *LoRA*: [LEditsPPPipelineStableDiffusionXL.load_lora_weights()](/docs/diffusers/main/pt/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights)
- *Ponto de verificação*: [loaders.FromSingleFileMixin.from_single_file()](/docs/diffusers/main/pt/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file)

bem como os seguintes métodos de salvamento:
- *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)
```

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

**Parâmetros:**

denoising_end (`float`, *opcional*) : Quando especificado, determina a fração (entre 0.0 e 1.0) do processo total de remoção de ruído que deve ser concluída antes de ser encerrado prematuramente de forma intencional. Como resultado, a amostra retornada ainda reterá uma quantidade substancial de ruído, conforme determinado pelos passos discretos selecionados pelo agendador. O parâmetro denoising_end deve ser idealmente utilizado quando este pipeline faz parte de uma configuração multi-pipeline de "Mixture of Denoisers", conforme detalhado em [**Refining the Image

negative_prompt (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts que não devem orientar a geração da imagem. Se não definido, é necessário passar `negative_prompt_embeds` em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se `guidance_scale` for menor que `1`).

negative_prompt_2 (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts que não devem orientar a geração da imagem a serem enviados para `tokenizer_2` e `text_encoder_2`. Se não definido, `negative_prompt` é usado em ambos os text-encoders

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativos pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não forem fornecidos, negative_prompt_embeds será gerado a partir do argumento de entrada `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativo pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não for fornecido, os pooled negative_prompt_embeds serão gerados a partir do argumento de entrada `negative_prompt`.

ip_adapter_image : (`PipelineImageInput`, *opcional*): Entrada de imagem opcional para trabalhar com IP Adapters.

output_type (`str`, *opcional*, padrão `"pil"`) : O formato de saída da imagem gerada. Escolha entre [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` ou `np.array`.

return_dict (`bool`, *opcional*, padrão `True`) : Se deve ou não retornar um `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` em vez de uma tupla simples.

cross_attention_kwargs (`dict`, *opcional*) : Um dicionário de kwargs que, se especificado, é passado para o `AttentionProcessor` conforme definido em `self.processor` em [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *opcional*, padrão 0.7) : Fator de rescalonamento de orientação proposto por [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) `guidance_scale` é definido como `φ` na equação 16. de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). O fator de rescalonamento de orientação deve corrigir a sobreexposição ao usar SNR terminal zero.

crops_coords_top_left (`tuple[int]`, *opcional*, padrão (0, 0)) : `crops_coords_top_left` pode ser usado para gerar uma imagem que parece ter sido "recortada" a partir da posição `crops_coords_top_left` para baixo. Imagens favoráveis e bem centralizadas são geralmente obtidas ao definir `crops_coords_top_left` como (0, 0). Parte do micro-condicionamento do SDXL, conforme explicado na seção 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

target_size (`tuple[int]`, *opcional*, padrão (1024, 1024)) : Na maioria dos casos, `target_size` deve ser definido para a altura e largura desejadas da imagem gerada. Se não for especificado, o padrão será `(width, height)`. Parte do micro-conditioning do SDXL, conforme explicado na seção 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

editing_prompt (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts para orientar a geração da imagem. A imagem é reconstruída ao definir `editing_prompt = None`. A direção de orientação do prompt deve ser especificada via `reverse_editing_direction`.

editing_prompt_embeddings (`torch.Tensor`, *opcional*) : Embebimentos de texto de edição pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não fornecidos, editing_prompt_embeddings será gerado a partir do argumento de entrada `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto de edição pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não for fornecido, editing_prompt_embeddings será gerado a partir do argumento de entrada `editing_prompt`.

reverse_editing_direction (`bool` ou `list[bool]`, *opcional*, padrão `False`) : Se o prompt correspondente em `editing_prompt` deve ser aumentado ou diminuído.

edit_guidance_scale (`float` ou `list[float]`, *opcional*, padrão 5) : Escala de orientação para guiar a geração da imagem. Se fornecida como lista, os valores devem corresponder a `editing_prompt`. `edit_guidance_scale` é definido como `s_e` da equação 12 do [LEDITS++ Paper](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` ou `list[float]`, *opcional*, padrão 10) : Número de etapas de difusão (para cada prompt) para as quais o guidance não é aplicado.

edit_cooldown_steps (`float` ou `list[float]`, *opcional*, padrão `None`) : Número de passos de difusão (para cada prompt) após os quais a orientação deixa de ser aplicada.

edit_threshold (`float` ou `list[float]`, *opcional*, padrão 0,9) : Limiar de mascaramento do guidance. O limiar deve ser proporcional à região da imagem que é modificada. 'edit_threshold' é definido como 'λ' da equação 12 do [LEDITS++ Paper](https://huggingface.co/papers/2301.12247).

sem_guidance (`list[torch.Tensor]`, *opcional*) : lista de vetores de orientação pré-gerados a serem aplicados na geração. O comprimento da lista deve corresponder a `num_inference_steps`.

use_cross_attn_mask : Se máscaras de atenção cruzada são usadas. Máscaras de atenção cruzada são sempre usadas quando use_intersect_mask é definido como true. As máscaras de atenção cruzada são definidas como 'M^1' da equação 12 do [artigo LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask : Se o termo de mascaramento é calculado como a interseção das máscaras de atenção cruzada e das máscaras derivadas da estimativa de ruído. As máscaras de atenção cruzada são definidas como 'M^1' e as máscaras derivadas da estimativa de ruído são definidas como 'M^2' da equação 12 do [artigo LEDITS++](https://huggingface.co/papers/2311.16711).

user_mask : Máscara fornecida pelo usuário para um controle ainda melhor sobre o processo de edição. Isso é útil quando as máscaras implícitas do LEDITS++ não atendem às preferências do usuário.

attn_store_steps : Etapas para as quais os mapas de atenção são armazenados no AttentionStore. Apenas para fins de visualização.

store_averaged_over_steps : Se os mapas de atenção para 'attn_store_steps' são armazenados com média sobre os passos de difusão. Se False, os mapas de atenção para cada passo são armazenados separadamente. Apenas para fins de visualização.

clip_skip (`int`, *opcional*) : Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.

callback_on_step_end (`Callable`, *opcional*) : Uma função que é chamada no final de cada etapa de desruidamento durante a inferência. A função é chamada com os seguintes argumentos: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` incluirá uma lista de todos os tensores, conforme especificado por `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opcional*) : A lista de entradas de tensor para a função `callback_on_step_end`. Os tensores especificados na lista serão passados como argumento `callback_kwargs`. Você só poderá incluir variáveis listadas no atributo `._callback_tensor_inputs` da sua classe de pipeline.

**Retorna:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/pt/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) ou `tuple`

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/pt/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) se `return_dict` for True, caso contrário, uma `tuple. Ao retornar uma tupla, o primeiro elemento é uma lista com as imagens geradas.

A função de chamada do pipeline para edição. O método [invert()](/docs/diffusers/main/pt/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusionXL.invert) deve ser chamado antes. As edições serão sempre realizadas para a(s) última(s) imagem(ns) invertida(s).

Exemplos:
```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)
```

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

**Parâmetros:**

image (`PipelineImageInput`) : Entrada para a(s) imagem(ns) que serão editadas. Múltiplas imagens de entrada devem ter, por padrão, a mesma proporção de aspecto.

source_prompt (`str`, padrão `""`) : Prompt descrevendo a imagem de entrada que será usado para orientação durante a inversão. A orientação é desativada se o `source_prompt` for `""`.

source_guidance_scale (`float`, padrão `3.5`) : Força do guia durante a inversão.

negative_prompt (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts que não devem orientar a geração da imagem. Se não definido, é necessário passar `negative_prompt_embeds` em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se `guidance_scale` for menor que `1`).

negative_prompt_2 (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts que não devem orientar a geração da imagem a serem enviados para `tokenizer_2` e `text_encoder_2`. Se não definido, `negative_prompt` é usado em ambos os text-encoders

num_inversion_steps (`int`, padrão `50`) : Número total de etapas de inversão realizadas após descartar as primeiras `skip` etapas.

skip (`float`, padrão `0.15`) : Porção dos passos iniciais que será ignorada para inversão e geração subsequente. Valores menores levarão a mudanças mais fortes na imagem de entrada. `skip` deve estar entre `0` e `1`.

generator (`torch.Generator`, *opcional*) : Um [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) para tornar a inversão determinística.

crops_coords_top_left (`tuple[int]`, *opcional*, padrão (0, 0)) : `crops_coords_top_left` pode ser usado para gerar uma imagem que parece ter sido "recortada" a partir da posição `crops_coords_top_left` para baixo. Imagens favoráveis e bem centralizadas são geralmente obtidas ao definir `crops_coords_top_left` como (0, 0). Parte do micro-condicionamento do SDXL, conforme explicado na seção 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

num_zero_noise_steps (`int`, padrão `3`) : Número de etapas finais de difusão que não rebarulharão a imagem atual. Se nenhuma etapa for definida como zero, o SD-XL em combinação com [DPMSolverMultistepScheduler](/docs/diffusers/main/pt/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) produzirá artefatos de ruído.

cross_attention_kwargs (`dict`, *opcional*) : Um dicionário de kwargs que, se especificado, é passado para o `AttentionProcessor` conforme definido em `self.processor` em [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

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

A saída conterá a(s) imagem(ns) de entrada redimensionada(s) e a(s) reconstrução(ões) correspondente(s) do VAE.

A função para o pipeline de inversão de imagem conforme descrito no [LEDITS++ Paper](https://huggingface.co/papers/2301.12247). Se o scheduler estiver definido como [DDIMScheduler](/docs/diffusers/main/pt/api/schedulers/ddim#diffusers.DDIMScheduler), a inversão proposta pelo [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) será realizada em vez disso.

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

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

**Parâmetros:**

device : (`torch.device`): dispositivo torch

num_images_per_prompt (`int`) : número de imagens que devem ser geradas por prompt

negative_prompt (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts que não devem orientar a geração da imagem. Se não definido, é necessário passar `negative_prompt_embeds` em vez disso.

negative_prompt_2 (`str` ou `list[str]`, *opcional*) : O prompt ou os prompts que não devem orientar a geração da imagem a serem enviados para `tokenizer_2` e `text_encoder_2`. Se não definido, `negative_prompt` é usado em ambos os text-encoders

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativos pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não forem fornecidos, negative_prompt_embeds será gerado a partir do argumento de entrada `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativo pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não for fornecido, os pooled negative_prompt_embeds serão gerados a partir do argumento de entrada `negative_prompt`.

lora_scale (`float`, *opcional*) : Uma escala lora que será aplicada a todas as camadas LoRA do text encoder, caso as camadas LoRA sejam carregadas.

clip_skip (`int`, *opcional*) : Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.

enable_edit_guidance (`bool`) : Se deve ou não orientar para um prompt de edição.

editing_prompt (`str` ou `list[str]`, *opcional*) : Prompt(s) de edição a serem codificados. Se não definido e 'enable_edit_guidance' for True, é necessário passar `editing_prompt_embeds` em vez disso.

editing_prompt_embeds (`torch.Tensor`, *opcional*) : Embebings de texto de edição pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não fornecidos e 'enable_edit_guidance' for True, editing_prompt_embeds será gerado a partir do argumento de entrada `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto editado pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, *por exemplo*, ponderação de prompts. Se não for fornecido, os pooled editing_pooled_prompt_embeds serão gerados a partir do argumento de entrada `editing_prompt`.

Codifica o prompt em estados ocultos do codificador de texto.

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

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

**Parâmetros:**

w (`torch.Tensor`) : Gera vetores de incorporação com uma escala de orientação especificada para, em seguida, enriquecer as incorporações de passo de tempo.

embedding_dim (`int`, *opcional*, padrão 512) : Dimensão dos embeddings a serem gerados.

dtype (`torch.dtype`, *opcional*, padrão `torch.float32`) : Tipo de dados dos embeddings gerados.

**Retorna:** `torch.Tensor`

Vetores de incorporação com forma `(len(w), embedding_dim)`.

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

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

**Parâmetros:**

images (`list[PIL.Image.Image]` ou `np.ndarray`) : lista de imagens PIL desruídas de comprimento `batch_size` ou array NumPy de forma `(batch_size, height, width, num_channels)`.

nsfw_content_detected (`list[bool]`) : lista indicando se a imagem gerada correspondente contém conteúdo “não seguro para o trabalho” (nsfw) ou `None` se a verificação de segurança não pôde ser realizada.

Classe de saída para pipelines de Difusão 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)
```

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

**Parâmetros:**

input_images (`list[PIL.Image.Image]` ou `np.ndarray`) : lista das imagens de entrada recortadas e redimensionadas como imagens PIL de comprimento `batch_size` ou array NumPy de forma ` (batch_size, height, width, num_channels)`.

vae_reconstruction_images (`list[PIL.Image.Image]` ou `np.ndarray`) : lista de reconstruções do VAE de todas as imagens de entrada como imagens PIL de comprimento `batch_size` ou array NumPy de forma ` (batch_size, height, width, num_channels)`.

Classe de saída para pipelines de Difusão LEdits++.

