# LEDITS++

  

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

L'abstract de l'article est :

*Les modèles de diffusion texte-vers-image suscitent un intérêt croissant en raison de leur capacité remarquable à générer des images haute fidélité à partir d'entrées textuelles uniquement. Les travaux de recherche ultérieurs visent à exploiter et à appliquer leurs capacités à l'édition d'images réelles. Cependant, les méthodes existantes d'image-vers-image sont souvent inefficaces, imprécises et d'une polyvalence limitée. Elles nécessitent soit un ajustement fin chronophage, s'écartent inutilement et fortement de l'image d'entrée, et/ou ne prennent pas en charge plusieurs modifications simultanées. Pour remédier à ces problèmes, nous introduisons LEDITS++, une technique de manipulation d'images par texte, efficace, polyvalente et précise. L'approche d'inversion novatrice de LEDITS++ ne requiert ni ajustement ni optimisation et produit des résultats haute fidélité en quelques étapes de diffusion. Deuxièmement, notre méthodologie prend en charge plusieurs modifications simultanées et est indépendante de l'architecture. Troisièmement, nous utilisons une technique de masquage implicite novatrice qui limite les modifications aux régions pertinentes de l'image. Nous proposons le nouveau benchmark TEdBench++ dans le cadre de notre évaluation exhaustive. Nos résultats démontrent les capacités de LEDITS++ et ses améliorations par rapport aux méthodes précédentes. La page du projet est disponible à l'adresse https://leditsplusplus-project.static.hf.space .*

> [!TIP]
> Vous trouverez des informations supplémentaires sur LEDITS++ sur la [page du projet](https://leditsplusplus-project.static.hf.space/index.html) et pouvez l'essayer dans une [démo](https://huggingface.co/spaces/editing-images/leditsplusplus).

> [!WARNING]
> En raison de certains problèmes de compatibilité ascendante avec l’implémentation actuelle de [DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) dans diffusers, cette implémentation de LEdits++ ne peut plus garantir une inversion parfaite. Il est peu probable que ce problème ait des effets perceptibles dans les cas d’usage concrets. Toutefois, nous proposons une implémentation alternative garantissant une inversion parfaite dans un [dépôt GitHub](https://github.com/ml-research/ledits_pp) dédié.

Nous proposons deux pipelines distincts basés sur différents modèles pré-entraînés.

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

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

**Paramètres :**

vae ([AutoencoderKL](/docs/diffusers/main/fr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : encodeur de texte figé. Stable Diffusion utilise la partie texte de [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), plus précisément 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)) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/fr/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) ou [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler)) : Un planificateur à utiliser en combinaison avec `unet` pour débruyer les latents de l'image encodée. Peut être soit [DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) soit [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler). Si un autre planificateur est transmis, il sera automatiquement défini sur [DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

safety_checker (`StableDiffusionSafetyChecker`) : module de classification qui estime si les images générées pourraient être considérées comme offensives ou nuisibles. Veuillez consulter la [fiche du modèle](https://huggingface.co/CompVis/stable-diffusion-v1-4) pour plus de détails.

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : Modèle qui extrait les caractéristiques des images générées pour être utilisées en tant qu'entrées pour le `safety_checker`.

Pipeline pour l'édition d'images textuelles utilisant LEDits++ avec Stable Diffusion.

Ce modèle hérite de [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline) et s’appuie sur [StableDiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline). Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).

#### __appel__[[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 = ['latents'], **kwargs)
```

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

**Paramètres :**

negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d'image. Ignoré lorsque la guidance n'est pas utilisée (c'est-à-dire ignoré si `guidance_scale` est inférieur à `1`).

generator (`torch.Generator`, *facultatif*) : Un ou une liste de [générateurs torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) pour rendre la génération déterministe.

output_type (`str`, *facultatif*, par défaut `"pil"`) : Le format de sortie de l'image générée. Choisissez entre [PIL](https://pillow.readthedocs.io/en/stable/) : `PIL.Image.Image` ou `np.array`.

return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) plutôt qu'un simple tuple.

editing_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération de l’image. L’image est reconstruite en définissant `editing_prompt = None`. La direction de guidage du prompt doit être spécifiée via `reverse_editing_direction`.

editing_prompt_embeds (`torch.Tensor>`, *facultatif*) : Incrustations précalculées à utiliser pour guider la génération d’image. La direction de guidage de l’incrustation doit être spécifiée via `reverse_editing_direction`.

negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte négatif pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). Si non fourni, `negative_prompt_embeds` sont générés à partir de l'argument d'entrée `negative_prompt`.

reverse_editing_direction (`bool` ou `list[bool]`, *facultatif*, par défaut `False`) : Indique si le prompt correspondant dans `editing_prompt` doit être augmenté ou diminué.

edit_guidance_scale (`float` ou `list[float]`, *facultatif*, par défaut 5) : Échelle de guidage pour orienter la génération d’image. Si fournie sous forme de liste, les valeurs doivent correspondre à `editing_prompt`. `edit_guidance_scale` est défini comme `s_e` de l’équation 12 de l’[article LEDITS++](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` ou `list[float]`, *facultatif*, par défaut 10) : Nombre d'étapes de diffusion (pour chaque invite) pour lesquelles le guidage ne sera pas appliqué.

edit_cooldown_steps (`float` ou `list[float]`, *facultatif*, par défaut `None`) : Nombre d'étapes de diffusion (pour chaque invite) après lesquelles le guidage ne sera plus appliqué.

edit_threshold (`float` ou `list[float]`, *facultatif*, valeur par défaut 0,9) : Seuil de masquage du guidage. Le seuil doit être proportionnel à la région de l'image qui est modifiée. 'edit_threshold' est défini comme 'λ' de l'équation 12 de l'[article LEDITS++](https://huggingface.co/papers/2301.12247).

user_mask (`torch.Tensor`, *facultatif*) : masque fourni par l'utilisateur pour un contrôle encore plus fin du processus d'édition. Cela est utile lorsque les masques implicites de LEDITS++ ne répondent pas aux préférences de l'utilisateur.

sem_guidance (`list[torch.Tensor]`, *facultatif*) : liste de vecteurs de guidage pré-générés à appliquer lors de la génération. La longueur de la liste doit correspondre à `num_inference_steps`.

use_cross_attn_mask (`bool`, par défaut `False`) : Indique si des masques d'attention croisée sont utilisés. Les masques d'attention croisée sont toujours utilisés lorsque use_intersect_mask est défini sur true. Les masques d'attention croisée sont définis comme 'M^1' de l'équation 12 de l'[article LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask (`bool`, par défaut `True`) : Indique si le terme de masquage est calculé comme l'intersection des masques d'attention croisée et des masques dérivés de l'estimation du bruit. Les masques d'attention croisée sont définis comme 'M^1' et les masques dérivés de l'estimation du bruit comme 'M^2' de l'équation 12 de l'[article LEDITS++](https://huggingface.co/papers/2311.16711).

attn_store_steps (`list[int]`, *facultatif*) : Étapes pour lesquelles les cartes d'attention sont stockées dans l'AttentionStore. Uniquement à des fins de visualisation.

store_averaged_over_steps (`bool`, par défaut `True`) : Indique si les cartes d'attention pour les 'attn_store_steps' sont stockées en moyenne sur les étapes de diffusion. Si False, les cartes d'attention pour chaque étape sont stockées séparément. Uniquement à des fins de visualisation.

cross_attention_kwargs (`dict`, *facultatif*) : Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'`AttentionProcessor` tel que défini dans [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *facultatif*, valeur par défaut 0.0) : Facteur de rescaling du guidage issu de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). Le facteur de rescaling du guidage doit corriger l'exposition excessive lors de l'utilisation d'un SNR terminal nul.

clip_skip (`int`, *facultatif*) : Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt.

callback_on_step_end (`Callable`, *facultatif*) : une fonction appelée à la fin de chaque étape de débruitage pendant l’inférence. La fonction est appelée avec les arguments suivants : `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` contiendra une liste de tous les tenseurs, tels que spécifiés par `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *facultatif*) : La liste des entrées tensorielles pour la fonction `callback_on_step_end`. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument `callback_kwargs`. Vous ne pourrez inclure que les variables listées dans l'attribut `._callback_tensor_inputs` de votre classe de pipeline.

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

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/fr/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 fonction d'appel du pipeline pour l'édition. La méthode [invert()](/docs/diffusers/main/fr/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusion.invert) doit être appelée au préalable. Les modifications seront toujours effectuées sur la ou les dernières images inversées.

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

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

**Paramètres :**

image (`PipelineImageInput`) : Entrée pour l'image ou les images à éditer. Les images d'entrée multiples doivent avoir par défaut le même ratio d'aspect.

source_prompt (`str`, par défaut `""`) : Invite décrivant l'image d'entrée qui sera utilisée pour le guidage pendant l'inversion. Le guidage est désactivé si `source_prompt` est `""`.

source_guidance_scale (`float`, par défaut `3.5`) : Intensité du guidage pendant l'inversion.

num_inversion_steps (`int`, par défaut `30`) : Nombre total d'étapes d'inversion effectuées après avoir écarté les `skip` étapes initiales.

skip (`float`, par défaut `0.15`) : Proportion des étapes initiales qui sera ignorée pour l'inversion et la génération ultérieure. Des valeurs plus faibles entraîneront des modifications plus marquées de l'image d'entrée. `skip` doit être compris entre `0` et `1`.

generator (`torch.Generator`, *facultatif*) : Un [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) pour rendre l'inversion déterministe.

cross_attention_kwargs (`dict`, *facultatif*) : Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'`AttentionProcessor` tel que défini dans [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

clip_skip (`int`, *facultatif*) : Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt.

height (`int`, *facultatif*, valeur par défaut `None`) : La hauteur de l'image prétraitée. Si `None`, utilise `get_default_height_width()` pour obtenir la hauteur par défaut.

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`, *facultatif*, valeur par défaut `default`) : Le mode de redimensionnement, peut être `default` ou `fill`. Si `default`, l’image est redimensionnée pour s’adapter à la largeur et à la hauteur spécifiées, sans nécessairement conserver le ratio d’aspect d’origine. Si `fill`, l’image est redimensionnée pour s’adapter à la largeur et à la hauteur spécifiées en conservant le ratio d’aspect, puis centrée dans les dimensions, les espaces vides étant remplis avec des données issues de l’image. Si `crop`, l’image est redimensionnée pour s’adapter à la largeur et à la hauteur spécifiées en conservant le ratio d’aspect, puis centrée dans les dimensions, l’excédent étant rogné. Notez que les modes de redimensionnement `fill` et `crop` ne sont pris en charge que pour une entrée d’image PIL.

crops_coords (`list[tuple[int, int, int, int]]`, *facultatif*, valeur par défaut `None`) : Les coordonnées de recadrage pour chaque image du lot. Si `None`, l'image ne sera pas recadrée.

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

La sortie contiendra l'image d'entrée redimensionnée et la reconstruction VAE correspondante.

La fonction du pipeline pour l'inversion d'image telle que décrite dans l'[article LEDITS++](https://huggingface.co/papers/2301.12247). Si le planificateur est défini sur [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), l'inversion proposée par [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) sera effectuée à la place.

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

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

**Paramètres :**

device : (`torch.device`) : appareil torch

num_images_per_prompt (`int`) : nombre d'images à générer par invite

enable_edit_guidance (`bool`) : indique s'il faut effectuer une modification ou reconstruire l'image d'entrée à la place

negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passer `negative_prompt_embeds` à la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré si `guidance_scale` est inférieur à `1`).

editing_prompt (`str` ou `list[str]`, *facultatif*) : Prompt(s) de modification à encoder. S'il n'est pas défini, il faut passer `editing_prompt_embeds` à la place.

editing_prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée `prompt`.

negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par exemple* le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`.

lora_scale (`float`, *facultatif*) : une échelle LoRA qui sera appliquée à toutes les couches LoRA de l'encodeur de texte si des couches LoRA sont chargées.

clip_skip (`int`, *facultatif*) : Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt.

Encode le prompt dans les états cachés de l'encodeur de texte.

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

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

**Paramètres :**

vae ([AutoencoderKL](/docs/diffusers/main/fr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : encodeur de texte figé. Stable Diffusion XL utilise la partie texte de [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), plus précisément 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)) : deuxième encodeur de texte figé. Stable Diffusion XL utilise la partie texte et pool de [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection), plus précisément 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)) : Tokenizer de la 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)) : deuxième tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/fr/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) ou [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler)) : Un planificateur à utiliser en combinaison avec `unet` pour débruyer les latents de l'image encodée. Peut être soit [DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) soit [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler). Si un autre planificateur est transmis, il sera automatiquement défini sur [DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

force_zeros_for_empty_prompt (`bool`, *facultatif*, valeur par défaut `"True"`) : Indique si les embeddings du prompt négatif doivent être forcés à être toujours définis à 0. Voir également la configuration de `stabilityai/stable-diffusion-xl-base-1-0`.

add_watermarker (`bool`, *facultatif*) : Indique s'il faut utiliser la bibliothèque [invisible_watermark](https://github.com/ShieldMnt/invisible-watermark/) pour apposer un filigrane sur les images de sortie. Si non défini, la valeur par défaut est True si le package est installé, sinon aucun filigrane n'est utilisé.

Pipeline pour l'édition d'images textuelles utilisant LEDits++ avec Stable Diffusion XL.

Ce modèle hérite de [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline) et s’appuie sur [StableDiffusionXLPipeline](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline). Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).

De plus, le pipeline hérite des méthodes de chargement suivantes :
- *LoRA* : [LEditsPPPipelineStableDiffusionXL.load_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights)
- *Ckpt*: [loaders.FromSingleFileMixin.from_single_file()](/docs/diffusers/main/fr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file)

ainsi que les méthodes de sauvegarde suivantes :
- *LoRA* : `loaders.StableDiffusionXLPipeline.save_lora_weights`

#### __appel__[[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 = (0, 0), target_size: tuple[int, int] | None = None, editing_prompt: str | list[str] | None = None, editing_prompt_embeddings: typing.Optional[torch.Tensor] = None, editing_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, reverse_editing_direction: bool | list[bool] | None = False, edit_guidance_scale: float | list[float] | None = 5, edit_warmup_steps: int | list[int] | None = 0, edit_cooldown_steps: int | list[int] | None = None, edit_threshold: float | list[float] | None = 0.9, sem_guidance: list[torch.Tensor] | None = None, use_cross_attn_mask: bool = False, use_intersect_mask: bool = False, user_mask: typing.Optional[torch.Tensor] = None, attn_store_steps: list[int] | None = [], store_averaged_over_steps: bool = True, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], **kwargs)
```

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

**Paramètres :**

denoising_end (`float`, *facultatif*) : Lorsqu'il est spécifié, détermine la fraction (entre 0.0 et 1.0) du processus total de débruitage à achever avant qu'il ne soit volontairement interrompu prématurément. En conséquence, l'échantillon renvoyé conservera encore une quantité substantielle de bruit, telle que déterminée par les pas de temps discrets sélectionnés par le planificateur. Le paramètre denoising_end devrait idéalement être utilisé lorsque ce pipeline fait partie d'une configuration multi-pipelines « Mixture of Denoisers », comme détaillé dans [**Refining the Image

negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passer `negative_prompt_embeds` à la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré si `guidance_scale` est inférieur à `1`).

negative_prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer à `tokenizer_2` et `text_encoder_2`. S’il n’est pas défini, `negative_prompt` est utilisé dans les deux text-encoders

negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par exemple* le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* le pondération des prompts. S'il n'est pas fourni, pooled negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`.

ip_adapter_image : (`PipelineImageInput`, *facultatif*) : Entrée d'image facultative pour travailler avec les IP Adapters.

output_type (`str`, *facultatif*, par défaut `"pil"`) : Le format de sortie de l'image générée. Choisissez entre [PIL](https://pillow.readthedocs.io/en/stable/) : `PIL.Image.Image` ou `np.array`.

return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` plutôt qu'un simple tuple.

cross_attention_kwargs (`dict`, *facultatif*) : Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'`AttentionProcessor` tel que défini sous `self.processor` dans [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *facultatif*, valeur par défaut 0,7) : Facteur de rescaling du guidage proposé par [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) `guidance_scale` est défini comme `φ` dans l'équation 16. de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). Le facteur de rescaling du guidage doit corriger l'exposition excessive lors de l'utilisation d'un SNR terminal nul.

crops_coords_top_left (`tuple[int]`, *facultatif*, valeur par défaut (0, 0)) : `crops_coords_top_left` peut être utilisé pour générer une image qui semble « recadrée » à partir de la position `crops_coords_top_left` vers le bas. Des images favorables et bien centrées sont généralement obtenues en définissant `crops_coords_top_left` sur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

target_size (`tuple[int]`, *facultatif*, par défaut (1024, 1024)) : Dans la plupart des cas, `target_size` doit être défini sur la hauteur et la largeur souhaitées de l'image générée. S'il n'est pas spécifié, il prendra par défaut `(width, height)`. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

editing_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération de l’image. L’image est reconstruite en définissant `editing_prompt = None`. La direction de guidage du prompt doit être spécifiée via `reverse_editing_direction`.

editing_prompt_embeddings (`torch.Tensor`, *facultatif*) : Embeddings de texte d'édition pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* le pondération des prompts. S'il n'est pas fourni, editing_prompt_embeddings sera généré à partir de l'argument d'entrée `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte d'édition pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* le pondération des prompts. S'il n'est pas fourni, editing_prompt_embeddings sera généré à partir de l'argument d'entrée `editing_prompt`.

reverse_editing_direction (`bool` ou `list[bool]`, *facultatif*, par défaut `False`) : Indique si le prompt correspondant dans `editing_prompt` doit être augmenté ou diminué.

edit_guidance_scale (`float` ou `list[float]`, *facultatif*, par défaut 5) : Échelle de guidage pour orienter la génération d’image. Si fournie sous forme de liste, les valeurs doivent correspondre à `editing_prompt`. `edit_guidance_scale` est défini comme `s_e` de l’équation 12 de l’[article LEDITS++](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` ou `list[float]`, *facultatif*, par défaut 10) : Nombre d'étapes de diffusion (pour chaque invite) pour lesquelles le guidage n'est pas appliqué.

edit_cooldown_steps (`float` ou `list[float]`, *facultatif*, par défaut `None`) : Nombre d'étapes de diffusion (pour chaque invite) après lesquelles le guidage n'est plus appliqué.

edit_threshold (`float` ou `list[float]`, *facultatif*, valeur par défaut 0,9) : Seuil de masquage du guidage. Le seuil doit être proportionnel à la région de l'image qui est modifiée. 'edit_threshold' est défini comme 'λ' de l'équation 12 de l'[article LEDITS++](https://huggingface.co/papers/2301.12247).

sem_guidance (`list[torch.Tensor]`, *facultatif*) : liste de vecteurs de guidage pré-générés à appliquer lors de la génération. La longueur de la liste doit correspondre à `num_inference_steps`.

use_cross_attn_mask : Indique si des masques d'attention croisée sont utilisés. Les masques d'attention croisée sont toujours utilisés lorsque use_intersect_mask est défini sur true. Les masques d'attention croisée sont définis comme 'M^1' de l'équation 12 de l'[article LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask : Indique si le terme de masquage est calculé comme l'intersection des masques de cross-attention et des masques dérivés de l'estimation du bruit. Les masques de cross-attention sont définis comme 'M^1' et les masques dérivés de l'estimation du bruit comme 'M^2' de l'équation 12 de l'[article LEDITS++](https://huggingface.co/papers/2311.16711).

user_mask : Masque fourni par l'utilisateur pour un contrôle encore plus fin du processus d'édition. Cela est utile lorsque les masques implicites de LEDITS++ ne répondent pas aux préférences de l'utilisateur.

attn_store_steps : Étapes pour lesquelles les cartes d'attention sont stockées dans l'AttentionStore. Uniquement à des fins de visualisation.

store_averaged_over_steps : Indique si les cartes d'attention pour 'attn_store_steps' sont stockées en moyenne sur les étapes de diffusion. Si False, les cartes d'attention pour chaque étape sont stockées séparément. Uniquement à des fins de visualisation.

clip_skip (`int`, *facultatif*) : Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt.

callback_on_step_end (`Callable`, *facultatif*) : une fonction appelée à la fin de chaque étape de débruitage pendant l’inférence. La fonction est appelée avec les arguments suivants : `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs` contiendra une liste de tous les tenseurs, tels que spécifiés par `callback_on_step_end_tensor_inputs`.

callback_on_step_end_tensor_inputs (`list`, *facultatif*) : La liste des entrées tensorielles pour la fonction `callback_on_step_end`. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument `callback_kwargs`. Vous ne pourrez inclure que les variables listées dans l'attribut `._callback_tensor_inputs` de votre classe de pipeline.

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

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) si `return_dict` est True, sinon un `tuple. En cas de retour d'un tuple, le premier élément est une liste contenant les images générées.

La fonction d'appel du pipeline pour l'édition. La méthode [invert()](/docs/diffusers/main/fr/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusionXL.invert) doit être appelée au préalable. Les modifications seront toujours effectuées sur la ou les dernières images inversées.

Exemples :
```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 = (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)
```

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

**Paramètres :**

image (`PipelineImageInput`) : Entrée pour l'image ou les images à éditer. Les images d'entrée multiples doivent avoir par défaut le même ratio d'aspect.

source_prompt (`str`, par défaut `""`) : Invite décrivant l'image d'entrée qui sera utilisée pour le guidage pendant l'inversion. Le guidage est désactivé si `source_prompt` est `""`.

source_guidance_scale (`float`, par défaut `3.5`) : Intensité du guidage pendant l'inversion.

negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passer `negative_prompt_embeds` à la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré si `guidance_scale` est inférieur à `1`).

negative_prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer à `tokenizer_2` et `text_encoder_2`. S’il n’est pas défini, `negative_prompt` est utilisé dans les deux text-encoders

num_inversion_steps (`int`, par défaut `50`) : Nombre total d'étapes d'inversion effectuées après avoir écarté les `skip` étapes initiales.

skip (`float`, par défaut `0.15`) : Proportion des étapes initiales qui sera ignorée pour l'inversion et la génération ultérieure. Des valeurs plus faibles entraîneront des modifications plus marquées de l'image d'entrée. `skip` doit être compris entre `0` et `1`.

generator (`torch.Generator`, *facultatif*) : Un [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) pour rendre l'inversion déterministe.

crops_coords_top_left (`tuple[int]`, *facultatif*, valeur par défaut (0, 0)) : `crops_coords_top_left` peut être utilisé pour générer une image qui semble « recadrée » à partir de la position `crops_coords_top_left` vers le bas. Des images favorables et bien centrées sont généralement obtenues en définissant `crops_coords_top_left` sur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

num_zero_noise_steps (`int`, par défaut `3`) : Nombre d'étapes de diffusion finales qui ne réintroduiront pas de bruit dans l'image actuelle. Si aucune étape n'est définie à zéro, SD-XL combiné à [DPMSolverMultistepScheduler](/docs/diffusers/main/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) produira des artefacts de bruit.

cross_attention_kwargs (`dict`, *facultatif*) : Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'`AttentionProcessor` tel que défini sous `self.processor` dans [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

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

La sortie contiendra l'image d'entrée redimensionnée et la reconstruction VAE correspondante.

La fonction du pipeline pour l'inversion d'image telle que décrite dans l'[article LEDITS++](https://huggingface.co/papers/2301.12247). Si le planificateur est défini sur [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), l'inversion proposée par [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) sera effectuée à la place.

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

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

**Paramètres :**

device : (`torch.device`) : appareil torch

num_images_per_prompt (`int`) : nombre d'images à générer par invite

negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération de l'image. S'il n'est pas défini, il faut passer `negative_prompt_embeds` à la place.

negative_prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer à `tokenizer_2` et `text_encoder_2`. S’il n’est pas défini, `negative_prompt` est utilisé dans les deux text-encoders

negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par exemple* le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* le pondération des prompts. S'il n'est pas fourni, pooled negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`.

lora_scale (`float`, *facultatif*) : Échelle LoRA appliquée à toutes les couches LoRA de l'encodeur de texte si des couches LoRA sont chargées.

clip_skip (`int`, *facultatif*) : Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt.

enable_edit_guidance (`bool`) : Indique s'il faut guider vers un prompt d'édition ou non.

editing_prompt (`str` ou `list[str]`, *facultatif*) : Prompt(s) d'édition à encoder. S'il n'est pas défini et que 'enable_edit_guidance' est True, il faut passer `editing_prompt_embeds` à la place.

editing_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte d'édition pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* le pondération des prompts. S'il n'est pas fourni et que 'enable_edit_guidance' est True, editing_prompt_embeds sera généré à partir de l'argument d'entrée `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte poolés pour les modifications, pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* le pondération des prompts. S'il n'est pas fourni, les editing_pooled_prompt_embeds poolés seront générés à partir de l'argument d'entrée `editing_prompt`.

Encode le prompt dans les états cachés de l'encodeur de texte.

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

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

**Paramètres :**

w (`torch.Tensor`) : Génère des vecteurs d'incorporation avec une échelle de guidage spécifiée afin d'enrichir par la suite les incorporations de pas de temps.

embedding_dim (`int`, *facultatif*, par défaut 512) : Dimension des embeddings à générer.

dtype (`torch.dtype`, *facultatif*, par défaut `torch.float32`) : Type de données des embeddings générés.

**Retourne :** `torch.Tensor`

Vecteurs d'embedding de forme `(len(w), embedding_dim)`.

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

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

**Paramètres :**

images (`list[PIL.Image.Image]` ou `np.ndarray`) : liste d'images PIL débruitées de longueur `batch_size` ou tableau NumPy de forme `(batch_size, height, width, num_channels)`.

nsfw_content_detected (`list[bool]`) : liste indiquant si l'image générée correspondante contient du contenu « non approprié pour le travail » (nsfw) ou `None` si la vérification de sécurité n'a pas pu être effectuée.

Classe de sortie pour les pipelines de diffusion 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)
```

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

**Paramètres :**

input_images (`list[PIL.Image.Image]` ou `np.ndarray`) : liste des images d'entrée rognées et redimensionnées sous forme d'images PIL de longueur `batch_size` ou tableau NumPy de forme ` (batch_size, height, width, num_channels)`.

vae_reconstruction_images (`list[PIL.Image.Image]` ou `np.ndarray`) : liste de reconstructions VAE de toutes les images d'entrée, sous forme d'images PIL de longueur `batch_size` ou de tableau NumPy de forme ` (batch_size, height, width, num_channels)`.

Classe de sortie pour les pipelines de diffusion LEdits++.

