# LEDITS++

  

LEDITS++ fue propuesto en [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.

El resumen del artículo es:

*Los modelos de difusión de texto a imagen han recibido un interés creciente recientemente por su asombrosa capacidad para generar imágenes de alta fidelidad a partir únicamente de entradas de texto. Los esfuerzos de investigación posteriores buscan explotar y aplicar sus capacidades a la edición de imágenes reales. Sin embargo, los métodos existentes de imagen a imagen suelen ser ineficientes, imprecisos y de versatilidad limitada. Ya sea que requieran un ajuste fino que consume mucho tiempo, se desvíen innecesariamente en gran medida de la imagen de entrada y/o carezcan de soporte para múltiples ediciones simultáneas. Para abordar estos problemas, presentamos LEDITS++, una técnica de manipulación de imágenes por texto que es eficiente, versátil y precisa. El nuevo enfoque de inversión de LEDITS++ no requiere ajuste ni optimización y produce resultados de alta fidelidad con unos pocos pasos de difusión. En segundo lugar, nuestra metodología admite múltiples ediciones simultáneas y es agnóstica de la arquitectura. En tercer lugar, utilizamos una nueva técnica de enmascarado implícito que limita los cambios a las regiones relevantes de la imagen. Proponemos el nuevo benchmark TEdBench++ como parte de nuestra evaluación exhaustiva. Nuestros resultados demuestran las capacidades de LEDITS++ y sus mejoras sobre los métodos anteriores. La página del proyecto está disponible en https://leditsplusplus-project.static.hf.space .*

> [!TIP]
> Puedes encontrar información adicional sobre LEDITS++ en la [página del proyecto](https://leditsplusplus-project.static.hf.space/index.html) y probarlo en una [demo](https://huggingface.co/spaces/editing-images/leditsplusplus).

> [!WARNING]
> Debido a algunos problemas de compatibilidad hacia atrás con la implementación actual de [DPMSolverMultistepScheduler](/docs/diffusers/main/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) en diffusers, esta implementación de LEdits++ ya no puede garantizar una inversión perfecta. Es poco probable que este problema tenga efectos notables en los casos de uso aplicados. Sin embargo, proporcionamos una implementación alternativa que garantiza una inversión perfecta en un [repositorio de GitHub](https://github.com/ml-research/ledits_pp) dedicado.

Ofrecemos dos pipelines distintos basados en diferentes modelos preentrenados.

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

[Fuente](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/es/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes hacia y desde representaciones latentes.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : Codificador de texto congelado. Stable Diffusion utiliza la parte de texto de [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), específicamente la 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)) : Tokenizador de la clase [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/es/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Arquitectura de U-Net condicional para desruidar los latentes de imagen codificados.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) o [DDIMScheduler](/docs/diffusers/main/es/api/schedulers/ddim#diffusers.DDIMScheduler)) : Un programador para usar en combinación con `unet` para desruidar los latentes de la imagen codificada. Puede ser [DPMSolverMultistepScheduler](/docs/diffusers/main/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) o [DDIMScheduler](/docs/diffusers/main/es/api/schedulers/ddim#diffusers.DDIMScheduler). Si se pasa cualquier otro programador, se establecerá automáticamente en [DPMSolverMultistepScheduler](/docs/diffusers/main/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

safety_checker (`StableDiffusionSafetyChecker`) : Módulo de clasificación que estima si las imágenes generadas podrían considerarse ofensivas o dañinas. Consulte la [ficha del modelo](https://huggingface.co/CompVis/stable-diffusion-v1-4) para obtener más detalles.

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : Modelo que extrae características de las imágenes generadas para usarlas como entradas del `safety_checker`.

Pipeline para la edición de imágenes textuales usando LEDits++ con Stable Diffusion.

Este modelo hereda de [DiffusionPipeline](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline) y se basa en [StableDiffusionPipeline](/docs/diffusers/main/es/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline). Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un 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)
```

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

**Parámetros:**

negative_prompt (`str` o `list[str]`, *opcional*) : El prompt o los prompts que no deben guiar la generación de la imagen. Se ignora cuando no se usa guía (es decir, se ignora si `guidance_scale` es menor que `1`).

generator (`torch.Generator`, *opcional*) : Uno o una lista de [generadores de torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) para hacer la generación determinista.

output_type (`str`, *opcional*, por defecto `"pil"`) : El formato de salida de la imagen generada. Elija entre [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` o `np.array`.

return_dict (`bool`, *opcional*, valor predeterminado `True`) : Indica si se debe devolver un [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/es/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) en lugar de una tupla simple.

editing_prompt (`str` o `list[str]`, *opcional*) : El prompt o prompts para guiar la generación de la imagen. La imagen se reconstruye estableciendo `editing_prompt = None`. La dirección de guía del prompt debe especificarse mediante `reverse_editing_direction`.

editing_prompt_embeds (`torch.Tensor>`, *opcional*) : Incrustaciones precalculadas para guiar la generación de la imagen. La dirección de guía de la incrustación debe especificarse mediante `reverse_editing_direction`.

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativos pregenerados. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, `negative_prompt_embeds` se generan a partir del argumento de entrada `negative_prompt`.

reverse_editing_direction (`bool` o `list[bool]`, *opcional*, valor predeterminado `False`) : Si el prompt correspondiente en `editing_prompt` debe aumentarse o disminuirse.

edit_guidance_scale (`float` o `list[float]`, *opcional*, valor predeterminado 5) : Escala de guía para orientar la generación de la imagen. Si se proporciona como lista, los valores deben corresponder a `editing_prompt`. `edit_guidance_scale` se define como `s_e` de la ecuación 12 del [artículo LEDITS++](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` o `list[float]`, *opcional*, valor predeterminado 10) : Número de pasos de difusión (para cada prompt) para los que no se aplicará la guía.

edit_cooldown_steps (`float` o `list[float]`, *opcional*, valor predeterminado `None`) : Número de pasos de difusión (para cada prompt) después de los cuales la guía dejará de aplicarse.

edit_threshold (`float` o `list[float]`, *opcional*, valor predeterminado 0.9) : Umbral de enmascaramiento de la guía. El umbral debe ser proporcional a la región de la imagen que se modifica. 'edit_threshold' se define como 'λ' de la ecuación 12 del [artículo LEDITS++](https://huggingface.co/papers/2301.12247).

user_mask (`torch.Tensor`, *opcional*) : Máscara proporcionada por el usuario para un control aún mejor sobre el proceso de edición. Esto resulta útil cuando las máscaras implícitas de LEDITS++ no satisfacen las preferencias del usuario.

sem_guidance (`list[torch.Tensor]`, *opcional*) : lista de vectores de guía pregenerados que se aplicarán durante la generación. La longitud de la lista debe corresponder a `num_inference_steps`.

use_cross_attn_mask (`bool`, por defecto `False`) : Si se utilizan máscaras de atención cruzada. Las máscaras de atención cruzada se utilizan siempre que use_intersect_mask esté establecido en true. Las máscaras de atención cruzada se definen como 'M^1' de la ecuación 12 del [artículo LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask (`bool`, por defecto `True`) : Si el término de enmascaramiento se calcula como la intersección de las máscaras de atención cruzada y las máscaras derivadas de la estimación de ruido. Las máscaras de atención cruzada se definen como 'M^1' y las máscaras derivadas de la estimación de ruido se definen como 'M^2' de la ecuación 12 del [artículo LEDITS++](https://huggingface.co/papers/2311.16711).

attn_store_steps (`list[int]`, *opcional*) : Pasos para los cuales los mapas de atención se almacenan en el AttentionStore. Solo con fines de visualización.

store_averaged_over_steps (`bool`, por defecto `True`) : Si los mapas de atención para 'attn_store_steps' se almacenan promediados sobre los pasos de difusión. Si es False, los mapas de atención de cada paso se almacenan por separado. Solo con fines de visualización.

cross_attention_kwargs (`dict`, *opcional*) : Un diccionario de kwargs que, si se especifica, se pasa al `AttentionProcessor` tal como se define en [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *opcional*, valor predeterminado 0.0) : Factor de reescalado de guía de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). El factor de reescalado de guía debe corregir la sobreexposición al usar SNR terminal cero.

clip_skip (`int`, *opcional*) : Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la capa previa a la final para calcular los embeddings del prompt.

callback_on_step_end (`Callable`, *opcional*) : Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` incluirá una lista de todos los tensores especificados por `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opcional*) : La lista de entradas de tensor para la función `callback_on_step_end`. Los tensores especificados en la lista se pasarán como argumento `callback_kwargs`. Solo podrá incluir variables enumeradas en el atributo `._callback_tensor_inputs` de su clase de pipeline.

**Devuelve:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/es/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) o `tuple`

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

La función de llamada al pipeline para la edición. El método [invert()](/docs/diffusers/main/es/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusion.invert) debe llamarse antes. Las ediciones siempre se realizarán para la(s) última(s) imagen(es) invertida(s).

Ejemplos:
```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]
```

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

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

**Parámetros:**

image (`PipelineImageInput`) : Entrada para la(s) imagen(es) que se van a editar. Múltiples imágenes de entrada deben tener la misma relación de aspecto por defecto.

source_prompt (`str`, por defecto `""`) : Prompt que describe la imagen de entrada y que se utilizará para la guía durante la inversión. La guía se desactiva si `source_prompt` es `""`.

source_guidance_scale (`float`, por defecto `3.5`) : Fuerza de la guía durante la inversión.

num_inversion_steps (`int`, por defecto `30`) : Número total de pasos de inversión realizados después de descartar los primeros `skip` pasos.

skip (`float`, por defecto `0.15`) : Porción de los pasos iniciales que se ignorará para la inversión y la generación posterior. Valores más bajos provocarán cambios más fuertes en la imagen de entrada. `skip` debe estar entre `0` y `1`.

generator (`torch.Generator`, *opcional*) : Un [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) para hacer la inversión determinista.

cross_attention_kwargs (`dict`, *opcional*) : Un diccionario de kwargs que, si se especifica, se pasa al `AttentionProcessor` tal como se define en [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

clip_skip (`int`, *opcional*) : Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la capa previa a la final para calcular los embeddings del prompt.

height (`int`, *opcional*, valor predeterminado `None`) : La altura de la imagen preprocesada. Si es `None`, se usará `get_default_height_width()` para obtener la altura predeterminada.

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*, valor predeterminado `default`) : El modo de redimensionado, puede ser `default` o `fill`. Si es `default`, se redimensionará la imagen para que quepa dentro del ancho y alto especificados, y es posible que no se mantenga la relación de aspecto original. Si es `fill`, se redimensionará la imagen para que quepa dentro del ancho y alto especificados, manteniendo la relación de aspecto, y luego se centrará la imagen dentro de las dimensiones, rellenando los espacios vacíos con datos de la imagen. Si es `crop`, se redimensionará la imagen para que quepa dentro del ancho y alto especificados, manteniendo la relación de aspecto, y luego se centrará la imagen dentro de las dimensiones, recortando el exceso. Tenga en cuenta que los modos de redimensionado `fill` y `crop` solo se admiten para entradas de imagen PIL.

crops_coords (`list[tuple[int, int, int, int]]`, *opcional*, valor predeterminado `None`) : Las coordenadas de recorte para cada imagen del lote. Si es `None`, no se recortará la imagen.

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

La salida contendrá la(s) imagen(es) de entrada redimensionada(s) y la(s) reconstrucción(es) correspondiente(s) del VAE.

La función para el pipeline de inversión de imagen tal como se describe en el [artículo de LEDITS++](https://huggingface.co/papers/2301.12247). Si el programador está configurado como [DDIMScheduler](/docs/diffusers/main/es/api/schedulers/ddim#diffusers.DDIMScheduler), se realizará la inversión propuesta por [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) en su lugar.

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

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

**Parámetros:**

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

num_images_per_prompt (`int`) : número de imágenes que deben generarse por prompt

enable_edit_guidance (`bool`) : si se debe realizar alguna edición o reconstruir la imagen de entrada

negative_prompt (`str` o `list[str]`, *opcional*) : El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar `negative_prompt_embeds` en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si `guidance_scale` es menor que `1`).

editing_prompt (`str` o `list[str]`, *opcional*) : Prompt(s) de edición que se codificarán. Si no se define, hay que pasar `editing_prompt_embeds` en su lugar.

editing_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto pregenerados. Se pueden usar para ajustar fácilmente las entradas de texto, *p. ej.* ponderación de prompts. Si no se proporcionan, los embeddings de texto se generarán a partir del argumento de entrada `prompt`.

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativos pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* el ponderado de prompts. Si no se proporcionan, negative_prompt_embeds se generará a partir del argumento de entrada `negative_prompt`.

lora_scale (`float`, *opcional*) : Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.

clip_skip (`int`, *opcional*) : Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la capa previa a la final para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del 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)
```

[Fuente](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/es/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes hacia y desde representaciones latentes.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : Codificador de texto congelado. Stable Diffusion XL utiliza la parte de texto de [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), específicamente la 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. Stable Diffusion XL utiliza la parte de texto y pool de [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection), específicamente la 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)) : Tokenizador de la clase [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 de la clase [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/es/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Arquitectura de U-Net condicional para desruidar los latentes de imagen codificados.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) o [DDIMScheduler](/docs/diffusers/main/es/api/schedulers/ddim#diffusers.DDIMScheduler)) : Un programador para usar en combinación con `unet` para desruidar los latentes de la imagen codificada. Puede ser [DPMSolverMultistepScheduler](/docs/diffusers/main/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) o [DDIMScheduler](/docs/diffusers/main/es/api/schedulers/ddim#diffusers.DDIMScheduler). Si se pasa cualquier otro programador, se establecerá automáticamente en [DPMSolverMultistepScheduler](/docs/diffusers/main/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

force_zeros_for_empty_prompt (`bool`, *opcional*, valor predeterminado `"True"`) : Si las incrustaciones del prompt negativo deben forzarse a establecerse siempre en 0. Consulte también la configuración de `stabilityai/stable-diffusion-xl-base-1-0`.

add_watermarker (`bool`, *opcional*) : Si se debe usar la [invisible_watermark library](https://github.com/ShieldMnt/invisible-watermark/) para aplicar marcas de agua a las imágenes de salida. Si no se define, el valor predeterminado será True si el paquete está instalado; de lo contrario, no se usará ninguna marca de agua.

Pipeline para la edición de imágenes textuales usando LEDits++ con Stable Diffusion XL.

Este modelo hereda de [DiffusionPipeline](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline) y se basa en [StableDiffusionXLPipeline](/docs/diffusers/main/es/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline). Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

Además, el pipeline hereda los siguientes métodos de carga:
- *LoRA*: [LEditsPPPipelineStableDiffusionXL.load_lora_weights()](/docs/diffusers/main/es/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights)
- *Punto de control*: [loaders.FromSingleFileMixin.from_single_file()](/docs/diffusers/main/es/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file)

as well as the following saving methods:
- *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)
```

[Fuente](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*) : Cuando se especifica, determina la fracción (entre 0.0 y 1.0) del proceso total de desruido que debe completarse antes de que se termine prematuramente de forma intencional. Como resultado, la muestra devuelta aún conservará una cantidad sustancial de ruido, tal como lo determinan los pasos discretos seleccionados por el programador. El parámetro denoising_end debería utilizarse idealmente cuando esta canalización forma parte de una configuración de múltiples canalizaciones "Mixture of Denoisers", como se detalla en [**Refining the Image

negative_prompt (`str` o `list[str]`, *opcional*) : El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar `negative_prompt_embeds` en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si `guidance_scale` es menor que `1`).

negative_prompt_2 (`str` o `list[str]`, *opcional*) : El prompt o los prompts que no deben guiar la generación de la imagen y que se enviarán a `tokenizer_2` y `text_encoder_2`. Si no se define, `negative_prompt` se utiliza en ambos text-encoders

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativos pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* el ponderado de prompts. Si no se proporcionan, negative_prompt_embeds se generará a partir del argumento de entrada `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativo agrupados pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* el ponderado de prompts. Si no se proporcionan, los pooled negative_prompt_embeds se generarán a partir del argumento de entrada `negative_prompt`.

ip_adapter_image : (`PipelineImageInput`, *opcional*): Entrada de imagen opcional para trabajar con IP Adapters.

output_type (`str`, *opcional*, por defecto `"pil"`) : El formato de salida de la imagen generada. Elija entre [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` o `np.array`.

return_dict (`bool`, *opcional*, valor predeterminado `True`) : Indica si se debe devolver un `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` en lugar de una tupla simple.

cross_attention_kwargs (`dict`, *opcional*) : Un diccionario de kwargs que, si se especifica, se pasa al `AttentionProcessor` tal como se define bajo `self.processor` en [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *opcional*, valor predeterminado 0.7) : Factor de reescalado de guía propuesto por [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) `guidance_scale` se define como `φ` en la ecuación 16. de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). El factor de reescalado de guía debe corregir la sobreexposición al usar SNR terminal cero.

crops_coords_top_left (`tuple[int]`, *opcional*, valor predeterminado (0, 0)) : `crops_coords_top_left` se puede utilizar para generar una imagen que parezca "recortada" desde la posición `crops_coords_top_left` hacia abajo. Generalmente, se logran imágenes favorables y bien centradas estableciendo `crops_coords_top_left` en (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

target_size (`tuple[int]`, *opcional*, valor predeterminado (1024, 1024)) : En la mayoría de los casos, `target_size` debe establecerse en la altura y el ancho deseados de la imagen generada. Si no se especifica, el valor predeterminado será `(width, height)`. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

editing_prompt (`str` o `list[str]`, *opcional*) : El prompt o prompts para guiar la generación de la imagen. La imagen se reconstruye estableciendo `editing_prompt = None`. La dirección de guía del prompt debe especificarse mediante `reverse_editing_direction`.

editing_prompt_embeddings (`torch.Tensor`, *opcional*) : Embeddings de texto de edición pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* ponderación de prompts. Si no se proporcionan, editing_prompt_embeddings se generará a partir del argumento de entrada `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto editado agrupados pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* ponderación de prompts. Si no se proporciona, editing_prompt_embeddings se generará a partir del argumento de entrada `editing_prompt`.

reverse_editing_direction (`bool` o `list[bool]`, *opcional*, valor predeterminado `False`) : Si el prompt correspondiente en `editing_prompt` debe aumentarse o disminuirse.

edit_guidance_scale (`float` o `list[float]`, *opcional*, valor predeterminado 5) : Escala de guía para orientar la generación de la imagen. Si se proporciona como lista, los valores deben corresponder a `editing_prompt`. `edit_guidance_scale` se define como `s_e` de la ecuación 12 del [artículo LEDITS++](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` o `list[float]`, *opcional*, valor predeterminado 10) : Número de pasos de difusión (para cada prompt) para los que no se aplica la guía.

edit_cooldown_steps (`float` o `list[float]`, *opcional*, valor predeterminado `None`) : Número de pasos de difusión (para cada prompt) después de los cuales la guía ya no se aplica.

edit_threshold (`float` o `list[float]`, *opcional*, valor predeterminado 0.9) : Umbral de enmascaramiento de la guía. El umbral debe ser proporcional a la región de la imagen que se modifica. 'edit_threshold' se define como 'λ' de la ecuación 12 del [artículo LEDITS++](https://huggingface.co/papers/2301.12247).

sem_guidance (`list[torch.Tensor]`, *opcional*) : lista de vectores de guía pregenerados que se aplicarán durante la generación. La longitud de la lista debe corresponder a `num_inference_steps`.

use_cross_attn_mask : Si se usan máscaras de atención cruzada. Las máscaras de atención cruzada siempre se usan cuando use_intersect_mask está establecido en true. Las máscaras de atención cruzada se definen como 'M^1' de la ecuación 12 del [artículo LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask : Si el término de enmascaramiento se calcula como la intersección de las máscaras de atención cruzada y las máscaras derivadas de la estimación de ruido. Las máscaras de atención cruzada se definen como 'M^1' y las máscaras derivadas de la estimación de ruido se definen como 'M^2' de la ecuación 12 del [artículo LEDITS++](https://huggingface.co/papers/2311.16711).

user_mask : Máscara proporcionada por el usuario para un control aún mejor sobre el proceso de edición. Esto resulta útil cuando las máscaras implícitas de LEDITS++ no satisfacen las preferencias del usuario.

attn_store_steps : Pasos para los que los mapas de atención se almacenan en el AttentionStore. Solo con fines de visualización.

store_averaged_over_steps : Si los mapas de atención para 'attn_store_steps' se almacenan promediados sobre los pasos de difusión. Si es False, los mapas de atención para cada paso se almacenan por separado. Solo con fines de visualización.

clip_skip (`int`, *opcional*) : Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la capa previa a la final para calcular los embeddings del prompt.

callback_on_step_end (`Callable`, *opcional*) : Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` incluirá una lista de todos los tensores especificados por `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *opcional*) : La lista de entradas de tensor para la función `callback_on_step_end`. Los tensores especificados en la lista se pasarán como argumento `callback_kwargs`. Solo podrá incluir variables enumeradas en el atributo `._callback_tensor_inputs` de su clase de pipeline.

**Devuelve:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/es/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) o `tuple`

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/es/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) si `return_dict` es True, de lo contrario una `tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.

La función de llamada al pipeline para la edición. El método [invert()](/docs/diffusers/main/es/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusionXL.invert) debe llamarse antes. Las ediciones siempre se realizarán para la(s) última(s) imagen(es) invertida(s).

Ejemplos:
```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]
```

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

[Fuente](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 la(s) imagen(es) que se van a editar. Múltiples imágenes de entrada deben tener la misma relación de aspecto por defecto.

source_prompt (`str`, por defecto `""`) : Prompt que describe la imagen de entrada y que se utilizará para la guía durante la inversión. La guía se desactiva si `source_prompt` es `""`.

source_guidance_scale (`float`, por defecto `3.5`) : Fuerza de la guía durante la inversión.

negative_prompt (`str` o `list[str]`, *opcional*) : El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar `negative_prompt_embeds` en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si `guidance_scale` es menor que `1`).

negative_prompt_2 (`str` o `list[str]`, *opcional*) : El prompt o los prompts que no deben guiar la generación de la imagen y que se enviarán a `tokenizer_2` y `text_encoder_2`. Si no se define, `negative_prompt` se utiliza en ambos text-encoders

num_inversion_steps (`int`, por defecto `50`) : Número total de pasos de inversión realizados después de descartar los primeros `skip` pasos.

skip (`float`, por defecto `0.15`) : Porción de los pasos iniciales que se ignorará para la inversión y la generación posterior. Valores más bajos provocarán cambios más fuertes en la imagen de entrada. `skip` debe estar entre `0` y `1`.

generator (`torch.Generator`, *opcional*) : Un [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) para hacer la inversión determinista.

crops_coords_top_left (`tuple[int]`, *opcional*, valor predeterminado (0, 0)) : `crops_coords_top_left` se puede utilizar para generar una imagen que parezca "recortada" desde la posición `crops_coords_top_left` hacia abajo. Generalmente, se logran imágenes favorables y bien centradas estableciendo `crops_coords_top_left` en (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

num_zero_noise_steps (`int`, por defecto `3`) : Número de pasos finales de difusión que no volverán a añadir ruido a la imagen actual. Si no se establecen pasos a cero, SD-XL en combinación con [DPMSolverMultistepScheduler](/docs/diffusers/main/es/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) producirá artefactos de ruido.

cross_attention_kwargs (`dict`, *opcional*) : Un diccionario de kwargs que, si se especifica, se pasa al `AttentionProcessor` tal como se define bajo `self.processor` en [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

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

La salida contendrá la(s) imagen(es) de entrada redimensionada(s) y la(s) reconstrucción(es) correspondiente(s) del VAE.

La función para el pipeline de inversión de imagen tal como se describe en el [artículo de LEDITS++](https://huggingface.co/papers/2301.12247). Si el programador está configurado como [DDIMScheduler](/docs/diffusers/main/es/api/schedulers/ddim#diffusers.DDIMScheduler), se realizará la inversión propuesta por [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) en su lugar.

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

[Fuente](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 de torch

num_images_per_prompt (`int`) : número de imágenes que deben generarse por prompt

negative_prompt (`str` o `list[str]`, *opcional*) : El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar `negative_prompt_embeds` en su lugar.

negative_prompt_2 (`str` o `list[str]`, *opcional*) : El prompt o los prompts que no deben guiar la generación de la imagen y que se enviarán a `tokenizer_2` y `text_encoder_2`. Si no se define, `negative_prompt` se utiliza en ambos text-encoders

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativos pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* el ponderado de prompts. Si no se proporcionan, negative_prompt_embeds se generará a partir del argumento de entrada `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativo agrupados pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* el ponderado de prompts. Si no se proporcionan, los pooled negative_prompt_embeds se generarán a partir del argumento de entrada `negative_prompt`.

lora_scale (`float`, *opcional*) : Una escala lora que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.

clip_skip (`int`, *opcional*) : Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la capa previa a la final para calcular los embeddings del prompt.

enable_edit_guidance (`bool`) : Si se debe guiar hacia un prompt de edición o no.

editing_prompt (`str` o `list[str]`, *opcional*) : Prompt(s) de edición a codificar. Si no se define y 'enable_edit_guidance' es True, se debe pasar `editing_prompt_embeds` en su lugar.

editing_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto de edición pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* ponderación de prompts. Si no se proporcionan y 'enable_edit_guidance' es True, editing_prompt_embeds se generará a partir del argumento de entrada `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto agrupados pregenerados para edición. Se pueden utilizar para ajustar fácilmente las entradas de texto, *p. ej.* ponderación de prompts. Si no se proporcionan, los editing_pooled_prompt_embeds agrupados se generarán a partir del argumento de entrada `editing_prompt`.

Codifica el prompt en estados ocultos del 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)
```

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

**Parámetros:**

w (`torch.Tensor`) : Genera vectores de incrustación con una escala de guía especificada para enriquecer posteriormente las incrustaciones de paso temporal.

embedding_dim (`int`, *opcional*, valor predeterminado 512) : Dimensión de las incrustaciones a generar.

dtype (`torch.dtype`, *opcional*, valor predeterminado `torch.float32`) : Tipo de datos de los embeddings generados.

**Devuelve:** `torch.Tensor`

Vectores de incrustación con forma `(len(w), embedding_dim)`.

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

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

**Parámetros:**

images (`list[PIL.Image.Image]` o `np.ndarray`) : lista de imágenes PIL desruidas de longitud `batch_size` o matriz NumPy de forma `(batch_size, height, width, num_channels)`.

nsfw_content_detected (`list[bool]`) : lista que indica si la imagen generada correspondiente contiene contenido “no apto para el trabajo” (nsfw) o `None` si no se pudo realizar la verificación de seguridad.

Clase de salida para las pipelines de difusión de 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)
```

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

**Parámetros:**

input_images (`list[PIL.Image.Image]` o `np.ndarray`) : lista de las imágenes de entrada recortadas y redimensionadas como imágenes PIL de longitud `batch_size` o matriz NumPy de forma ` (batch_size, height, width, num_channels)`.

vae_reconstruction_images (`list[PIL.Image.Image]` o `np.ndarray`) : lista de reconstrucciones de VAE de todas las imágenes de entrada como imágenes PIL de longitud `batch_size` o matriz NumPy de forma ` (batch_size, height, width, num_channels)`.

Clase de salida para las pipelines de difusión de LEdits++.

