# Stable Diffusion XL

  
  

Stable Diffusion XL (SDXL) a été proposé dans [SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis](https://huggingface.co/papers/2307.01952) par Dustin Podell, Zion English, Kyle Lacey, Andreas Blattmann, Tim Dockhorn, Jonas Müller, Joe Penna et Robin Rombach.

L'abstract de l'article est :

*Nous présentons SDXL, un modèle de diffusion latente pour la synthèse d’images à partir de texte. Par rapport aux versions précédentes de Stable Diffusion, SDXL exploite un backbone UNet trois fois plus volumineux : l’augmentation du nombre de paramètres du modèle est principalement due à un plus grand nombre de blocs d’attention et à un contexte d’attention croisée plus large, SDXL utilisant un second encodeur de texte. Nous concevons plusieurs schémas de conditionnement novateurs et entraînons SDXL sur plusieurs rapports d’aspect. Nous introduisons également un modèle de raffinement, utilisé pour améliorer la fidélité visuelle des échantillons générés par SDXL à l’aide d’une technique post-hoc d’image à image. Nous démontrons que SDXL présente des performances nettement améliorées par rapport aux versions précédentes de Stable Diffusion et obtient des résultats compétitifs avec ceux des générateurs d’images d’état de l’art fonctionnant en boîte noire.*

## Astuces

- L'utilisation de SDXL avec un planificateur DPM++ pour moins de 50 étapes est connue pour produire des [artefacts visuels](https://github.com/huggingface/diffusers/issues/5433) car le solveur devient numériquement instable. Pour corriger ce problème, consultez cette [PR](https://github.com/huggingface/diffusers/pull/5541) qui recommande pour les solveurs ODE/SDE :
	- Définissez `use_karras_sigmas=True` ou `lu_lambdas=True` pour améliorer la qualité des images
	- Définissez `euler_at_final=True` si vous utilisez un solveur avec des tailles de pas uniformes (DPM++2M ou DPM++2M SDE)
- La plupart des points de contrôle SDXL fonctionnent de manière optimale avec une taille d'image de 1024x1024. Les tailles d'image 768x768 et 512x512 sont également prises en charge, mais les résultats ne sont pas aussi bons. Tout ce qui est inférieur à 512x512 n'est pas recommandé et ne le sera probablement pas non plus pour les points de contrôle par défaut tels que [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0).
- SDXL peut transmettre un prompt différent pour chacun des encodeurs de texte sur lesquels il a été entraîné. Nous pouvons même transmettre différentes parties du même prompt aux encodeurs de texte.
- Les images de sortie de SDXL peuvent être améliorées en utilisant un modèle de raffinement dans un contexte d'image à image.
- SDXL propose `negative_original_size`, `negative_crops_coords_top_left` et `negative_target_size` pour conditionner négativement le modèle sur les paramètres de résolution et de recadrage de l’image.

> [!TIP]
> Consultez l'organisation [Stability AI](https://huggingface.co/stabilityai) sur le Hub pour les points de contrôle officiels des modèles de base et de raffinement !

Assurez-vous d'avoir installé les bibliothèques suivantes.

```py
# uncomment to install the necessary libraries in Colab
#!pip install -q diffusers transformers accelerate invisible-watermark>=0.2.0
```

> [!WARNING]
> Nous recommandons d’installer la bibliothèque [invisible-watermark](https://pypi.org/project/invisible-watermark/) pour aider à identifier les images générées. Si la bibliothèque invisible-watermark est installée, elle est utilisée par défaut. Pour désactiver le filigrane :
>
> ```py
> pipeline = StableDiffusionXLPipeline.from_pretrained(..., add_watermarker=False)
> ```

## Charger les points de contrôle des modèles

Les poids du modèle peuvent être stockés dans des sous-dossiers distincts sur le Hub ou localement, auquel cas vous devez utiliser la méthode [from_pretrained()](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) :

```py
from diffusers import StableDiffusionXLPipeline, StableDiffusionXLImg2ImgPipeline
import torch

pipeline = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

refiner = StableDiffusionXLImg2ImgPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-refiner-1.0", dtype=torch.float16, use_safetensors=True, variant="fp16"
).to("cuda")
```

Vous pouvez également utiliser la méthode [from_single_file()](/docs/diffusers/main/fr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file) pour charger un point de contrôle de modèle stocké dans un format de fichier unique (`.ckpt` ou `.safetensors`) depuis le Hub ou localement :

```py
from diffusers import StableDiffusionXLPipeline, StableDiffusionXLImg2ImgPipeline
import torch

pipeline = StableDiffusionXLPipeline.from_single_file(
    "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/sd_xl_base_1.0.safetensors",
    dtype=torch.float16
).to("cuda")  # or "mps", "xpu", "cpu"

refiner = StableDiffusionXLImg2ImgPipeline.from_single_file(
    "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/blob/main/sd_xl_refiner_1.0.safetensors", dtype=torch.float16
).to("cuda")
```

## Texte vers image

Pour la génération d’images à partir de texte, transmettez un prompt texte. Par défaut, SDXL génère une image de 1024x1024 pour de meilleurs résultats. Vous pouvez essayer de définir les paramètres `height` et `width` sur 768x768 ou 512x512, mais tout ce qui est inférieur à 512x512 a peu de chances de fonctionner.

```py
from diffusers import AutoPipelineForText2Image
import torch

pipeline_text2image = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipeline_text2image(prompt=prompt).images[0]
image
```

    

## Image vers image

Pour la conversion d’image en image, SDXL fonctionne particulièrement bien avec des tailles d’image comprises entre 768x768 et 1024x1024. Transmettez une image initiale et un prompt de texte pour conditionner l’image avec :

```py
from diffusers import AutoPipelineForImage2Image
from diffusers.utils import load_image, make_image_grid

# use from_pipe to avoid consuming additional memory when loading a checkpoint
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_text2image).to("cuda")  # or "mps", "xpu", "cpu"

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png"
init_image = load_image(url)
prompt = "a dog catching a frisbee in the jungle"
image = pipeline(prompt, image=init_image, strength=0.8, guidance_scale=10.5).images[0]
make_image_grid([init_image, image], rows=1, cols=2)
```

    

## Inpainting

Pour l'inpainting, vous aurez besoin de l'image d'origine et d'un masque indiquant la zone à remplacer dans l'image d'origine. Créez un prompt décrivant ce que vous souhaitez insérer à la place de la zone masquée.

```py
from diffusers import AutoPipelineForInpainting
from diffusers.utils import load_image, make_image_grid

# use from_pipe to avoid consuming additional memory when loading a checkpoint
pipeline = AutoPipelineForInpainting.from_pipe(pipeline_text2image).to("cuda")  # or "mps", "xpu", "cpu"

img_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png"
mask_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-inpaint-mask.png"

init_image = load_image(img_url)
mask_image = load_image(mask_url)

prompt = "A deep sea diver floating"
image = pipeline(prompt=prompt, image=init_image, mask_image=mask_image, strength=0.85, guidance_scale=12.5).images[0]
make_image_grid([init_image, mask_image, image], rows=1, cols=3)
```

    

## Améliorer la qualité de l'image

SDXL inclut un [modèle de raffinement](https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0) spécialisé dans le débruitage des images de la phase à faible bruit pour générer des images de meilleure qualité à partir du modèle de base. Il existe deux façons d’utiliser le raffineur :

1. utiliser les modèles de base et de raffinement ensemble pour produire une image raffinée
2. utiliser le modèle de base pour générer une image, puis utiliser le modèle de raffinement pour ajouter plus de détails à l'image (c'est ainsi que SDXL a été initialement entraîné)

### Modèle de base + modèle de raffinement

Lorsque vous utilisez le modèle de base et le modèle de raffinement ensemble pour générer une image, on parle d'un [*ensemble de débruiteurs experts*](https://research.nvidia.com/labs/dir/eDiff-I/). L'approche par ensemble de débruiteurs experts nécessite moins d'étapes de débruitage au total que le passage de la sortie du modèle de base au modèle de raffinement, ce qui devrait donc être nettement plus rapide à exécuter. Cependant, vous ne serez pas en mesure d'inspecter la sortie du modèle de base, car elle contient encore une grande quantité de bruit.

Ensemble de débruiteurs experts, le modèle de base agit en tant qu'expert pendant l'étape de diffusion à bruit élevé et le modèle de raffinement agit en tant qu'expert pendant l'étape de diffusion à bruit faible. Chargez le modèle de base et le modèle de raffinement :

```py
from diffusers import DiffusionPipeline
import torch

base = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

refiner = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-refiner-1.0",
    text_encoder_2=base.text_encoder_2,
    vae=base.vae,
    dtype=torch.float16,
    use_safetensors=True,
    variant="fp16",
).to("cuda")
```

Pour utiliser cette approche, vous devez définir le nombre de timesteps pour que chaque modèle parcoure ses étapes respectives. Pour le modèle de base, cela est contrôlé par le paramètre [`denoising_end`](./stable_diffusion_xl#diffusers.StableDiffusionXLPipeline.__call__.denoising_end) et, pour le modèle de raffinement, par le paramètre [`denoising_start`](./stable_diffusion_xl#diffusers.StableDiffusionXLImg2ImgPipeline.__call__.denoising_start).

> [!TIP]
> Les paramètres `denoising_end` et `denoising_start` doivent être des nombres flottants compris entre 0 et 1. Ces paramètres sont représentés sous forme de proportion des pas de temps discrets définis par le planificateur. Si vous utilisez également le paramètre `strength`, il sera ignoré, car le nombre d'étapes de débruitage est déterminé par les pas de temps discrets sur lesquels le modèle a été entraîné et par la fraction de coupure déclarée.

Définissons `denoising_end=0.8` afin que le modèle de base effectue les 80 % premiers de débruitage, correspondant aux pas de temps **à bruit élevé**, et définissons `denoising_start=0.8` afin que le modèle de raffinement effectue les 20 % derniers de débruitage, correspondant aux pas de temps **à bruit faible**. La sortie du modèle de base doit être dans l'espace **latent** plutôt qu'une image PIL.

```py
prompt = "A majestic lion jumping from a big stone at night"

image = base(
    prompt=prompt,
    num_inference_steps=40,
    denoising_end=0.8,
    output_type="latent",
).images
image = refiner(
    prompt=prompt,
    num_inference_steps=40,
    denoising_start=0.8,
    image=image,
).images[0]
image
```

  
    
    modèle de base par défaut
  
  
    
    ensemble de débruiteurs experts
  

Le modèle de raffinement peut également être utilisé pour l'inpainting dans le [StableDiffusionXLInpaintPipeline](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLInpaintPipeline) :

```py
from diffusers import StableDiffusionXLInpaintPipeline
from diffusers.utils import load_image, make_image_grid
import torch

base = StableDiffusionXLInpaintPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

refiner = StableDiffusionXLInpaintPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-refiner-1.0",
    text_encoder_2=base.text_encoder_2,
    vae=base.vae,
    dtype=torch.float16,
    use_safetensors=True,
    variant="fp16",
).to("cuda")

img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"

init_image = load_image(img_url)
mask_image = load_image(mask_url)

prompt = "A majestic tiger sitting on a bench"
num_inference_steps = 75
high_noise_frac = 0.7

image = base(
    prompt=prompt,
    image=init_image,
    mask_image=mask_image,
    num_inference_steps=num_inference_steps,
    denoising_end=high_noise_frac,
    output_type="latent",
).images
image = refiner(
    prompt=prompt,
    image=image,
    mask_image=mask_image,
    num_inference_steps=num_inference_steps,
    denoising_start=high_noise_frac,
).images[0]
make_image_grid([init_image, mask_image, image.resize((512, 512))], rows=1, cols=3)
```

Cette méthode d'ensemble de débruiteurs experts fonctionne bien avec tous les planificateurs disponibles !

### Modèle de base à affiner

SDXL améliore la qualité des images en utilisant le modèle de raffinement pour ajouter des détails de haute qualité à l'image entièrement débruitée produite par le modèle de base, dans un contexte d'image à image.

Charger les modèles de base et de raffinement :

```py
from diffusers import DiffusionPipeline
import torch

base = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

refiner = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-refiner-1.0",
    text_encoder_2=base.text_encoder_2,
    vae=base.vae,
    dtype=torch.float16,
    use_safetensors=True,
    variant="fp16",
).to("cuda")
```

> [!WARNING]
> Vous pouvez utiliser le refiner SDXL avec un modèle de base différent. Par exemple, vous pouvez utiliser les pipelines [Hunyuan-DiT](../hunyuandit) ou [PixArt-Sigma](../pixart_sigma) pour générer des images avec une meilleure adhérence au prompt. Une fois une image générée, vous pouvez la transmettre au modèle refiner SDXL pour améliorer la qualité de la génération finale.

Générer une image à partir du modèle de base et définir la sortie du modèle dans l'espace **latent** :

```py
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"

image = base(prompt=prompt, output_type="latent").images[0]
```

Transmettez l'image générée au modèle de raffinement :

```py
image = refiner(prompt=prompt, image=image[None, :]).images[0]
```

  
    
    modèle de base
  
  
    
    modèle de base + modèle de raffinement
  

Pour l'inpainting, chargez le modèle de base et le modèle de raffinement dans le [StableDiffusionXLInpaintPipeline](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLInpaintPipeline), supprimez les paramètres `denoising_end` et `denoising_start`, et choisissez un nombre plus faible d'étapes d'inférence pour le raffinement.

## Micro-conditionnement

L’entraînement de SDXL implique plusieurs techniques de conditionnement supplémentaires, appelées *micro-conditionnement*. Elles incluent la taille de l’image d’origine, la taille de l’image cible et les paramètres de recadrage. Les micro-conditionnements peuvent être utilisés lors de l’inférence pour générer des images de haute qualité et centrées.

> [!TIP]
> Vous pouvez utiliser à la fois les paramètres de micro-conditionnement et de micro-conditionnement négatif grâce au classifier-free guidance. Ils sont disponibles dans [StableDiffusionXLPipeline](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline), [StableDiffusionXLImg2ImgPipeline](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLImg2ImgPipeline), [StableDiffusionXLInpaintPipeline](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLInpaintPipeline) et [StableDiffusionXLControlNetPipeline](/docs/diffusers/main/fr/api/pipelines/controlnet_sdxl#diffusers.StableDiffusionXLControlNetPipeline).

### Conditionnement par la taille

Il existe deux types de conditionnement par taille :

- Le conditionnement par [`original_size`](./stable_diffusion_xl#diffusers.StableDiffusionXLPipeline.__call__.original_size) provient des images agrandies du lot d’entraînement (car il serait gaspilleur de supprimer les images plus petites, qui représentent près de 40 % des données d’entraînement totales). De cette manière, SDXL apprend que les artefacts d’agrandissement ne doivent pas être présents dans les images haute résolution. Lors de l’inférence, vous pouvez utiliser `original_size` pour indiquer la résolution d’origine de l’image. L’utilisation de la valeur par défaut `(1024, 1024)` produit des images de meilleure qualité, ressemblant aux images 1024x1024 du jeu de données. Si vous choisissez d’utiliser une résolution plus basse, comme `(256, 256)`, le modèle génère toujours des images 1024x1024, mais elles ressembleront aux images basse résolution (motifs plus simples, flou) du jeu de données.

- Le conditionnement par [`target_size`](./stable_diffusion_xl#diffusers.StableDiffusionXLPipeline.__call__.target_size) provient de l’ajustement fin de SDXL pour prendre en charge différents rapports d’aspect d’image. Lors de l’inférence, si vous utilisez la valeur par défaut `(1024, 1024)`, vous obtiendrez une image ressemblant à la composition des images carrées du jeu de données. Nous recommandons d’utiliser la même valeur pour `target_size` et `original_size`, mais n’hésitez pas à expérimenter avec d’autres options !

🤗 Diffusers vous permet également de spécifier des conditions négatives concernant la taille d'une image pour orienter la génération loin de certaines résolutions d'image :

```py
from diffusers import StableDiffusionXLPipeline
import torch

pipe = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(
    prompt=prompt,
    negative_original_size=(512, 512),
    negative_target_size=(1024, 1024),
).images[0]
```

  
  Images conditionnées négativement sur des résolutions d'image de (128, 128), (256, 256) et (512, 512).

### Conditionnement par recadrage

Les images générées par les modèles Stable Diffusion précédents peuvent parfois sembler recadrées. Cela s’explique par le fait que les images sont effectivement recadrées lors de l’entraînement afin que toutes les images d’un lot aient la même taille. En conditionnant sur les coordonnées de recadrage, SDXL *apprend* que l’absence de recadrage – coordonnées `(0, 0)` – est généralement corrélée à des sujets centrés et à des visages complets (c’est la valeur par défaut dans 🤗 Diffusers). Vous pouvez expérimenter avec différentes coordonnées si vous souhaitez générer des compositions décentrées !

```py
from diffusers import StableDiffusionXLPipeline
import torch

pipeline = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipeline(prompt=prompt, crops_coords_top_left=(256, 0)).images[0]
image
```

    

Vous pouvez également spécifier des coordonnées de recadrage négatives pour orienter la génération loin de certains paramètres de recadrage :

```py
from diffusers import StableDiffusionXLPipeline
import torch

pipe = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(
    prompt=prompt,
    negative_original_size=(512, 512),
    negative_crops_coords_top_left=(0, 0),
    negative_target_size=(1024, 1024),
).images[0]
image
```

## Utiliser un prompt différent pour chaque text-encoder

SDXL utilise deux encodeurs de texte, il est donc possible de transmettre un prompt différent à chaque encodeur de texte, ce qui peut [améliorer la qualité](https://github.com/huggingface/diffusers/issues/4004#issuecomment-1627764201). Transmettez votre prompt d’origine à `prompt` et le second prompt à `prompt_2` (utilisez `negative_prompt` et `negative_prompt_2` si vous utilisez des prompts négatifs) :

```py
from diffusers import StableDiffusionXLPipeline
import torch

pipeline = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")  # or "mps", "xpu", "cpu"

# prompt is passed to OAI CLIP-ViT/L-14
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
# prompt_2 is passed to OpenCLIP-ViT/bigG-14
prompt_2 = "Van Gogh painting"
image = pipeline(prompt=prompt, prompt_2=prompt_2).images[0]
image
```

    

Les encodeurs de texte doubles prennent également en charge les embeddings d'inversion textuelle, qui doivent être chargés séparément comme expliqué dans le guide [inversion textuelle](../../../using-diffusers/legacy_adapters#textual-inversion).

## Optimisations

SDXL est un modèle de grande taille et vous devrez peut-être optimiser la mémoire pour le faire fonctionner sur votre matériel. Voici quelques conseils pour économiser de la mémoire et accélérer l'inférence.

1. Déchargez le modèle sur le CPU avec [enable_model_cpu_offload()](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline.enable_model_cpu_offload) en cas d’erreurs de mémoire insuffisante :

```diff
- base.to("cuda")  # or "mps", "xpu", "cpu"
- refiner.to("cuda")
+ base.enable_model_cpu_offload()
+ refiner.enable_model_cpu_offload()
```

2. Utilisez `torch.compile` pour un gain de vitesse d’environ 20 % (il vous faut `torch>=2.0`) :

```diff
+ base.unet = torch.compile(base.unet, mode="reduce-overhead", fullgraph=True)
+ refiner.unet = torch.compile(refiner.unet, mode="reduce-overhead", fullgraph=True)
```

3. Activer [xFormers](../../../optimization/attention_backends) pour exécuter SDXL si `torch<2.0` :

```diff
+ base.enable_xformers_memory_efficient_attention()
+ refiner.enable_xformers_memory_efficient_attention()
```

## Ressources

Si vous souhaitez expérimenter avec une version minimale du [UNet2DConditionModel](/docs/diffusers/main/fr/api/models/unet2d-cond#diffusers.UNet2DConditionModel) utilisé dans SDXL, consultez l'implémentation [minSDXL](https://github.com/cloneofsimo/minSDXL), écrite en PyTorch et directement compatible avec 🤗 Diffusers.

## StableDiffusionXLPipeline[[diffusers.StableDiffusionXLPipeline]]

#### diffusers.StableDiffusionXLPipeline[[diffusers.StableDiffusionXLPipeline]]

```python
diffusers.StableDiffusionXLPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, 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/stable_diffusion_xl/pipeline_stable_diffusion_xl.py#L170)

**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`) : 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`) : 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`) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

tokenizer_2 (`CLIPTokenizer`) : Second 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 ([SchedulerMixin](/docs/diffusers/main/fr/api/schedulers/overview#diffusers.SchedulerMixin)) : Un planificateur à utiliser en combinaison avec `unet` pour débruyer les latents de l'image encodée. Peut être l'un des [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), [LMSDiscreteScheduler](/docs/diffusers/main/fr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler) ou [PNDMScheduler](/docs/diffusers/main/fr/api/schedulers/pndm#diffusers.PNDMScheduler).

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 la génération d'images à partir de texte utilisant Stable Diffusion XL.

Ce modèle hérite de [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (téléchargement ou sauvegarde, exécution sur un appareil particulier, etc.).

Le pipeline hérite également des méthodes de chargement suivantes :
- [load_textual_inversion()](/docs/diffusers/main/fr/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion) pour charger les embeddings d'inversion textuelle
- [from_single_file()](/docs/diffusers/main/fr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file) pour charger des fichiers `.ckpt`
- [load_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights) pour charger les poids LoRA
- [save_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.save_lora_weights) pour enregistrer les poids LoRA
- [load_ip_adapter()](/docs/diffusers/main/fr/api/loaders/ip_adapter#diffusers.loaders.IPAdapterMixin.load_ip_adapter) pour charger des IP Adapters

#### __appel__[[diffusers.StableDiffusionXLPipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_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, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] | None = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] | None = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py#L823)

**Paramètres :**

prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passer `prompt_embeds` à la place.

prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer au `tokenizer_2` et au `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux text-encoders

height (`int`, *facultatif*, par défaut self.unet.config.sample_size * self.vae_scale_factor) : La hauteur en pixels de l'image générée. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0) ni avec des points de contrôle qui n'ont pas été spécifiquement affinés sur de faibles résolutions.

width (`int`, *facultatif*, par défaut self.unet.config.sample_size * self.vae_scale_factor) : La largeur en pixels de l'image générée. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0) ni avec des points de contrôle qui n'ont pas été spécifiquement affinés sur de faibles résolutions.

num_inference_steps (`int`, *facultatif*, valeur par défaut 50) : Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente.

timesteps (`list[int]`, *facultatif*) : Étapes de temps personnalisées à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `timesteps` dans leur méthode `set_timesteps`. S'il n'est pas défini, le comportement par défaut lorsque `num_inference_steps` est passé sera utilisé. Doit être dans l'ordre décroissant.

sigmas (`list[float]`, *facultatif*) : Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `sigmas` dans leur méthode `set_timesteps`. S'ils ne sont pas définis, le comportement par défaut lorsque `num_inference_steps` est passé sera utilisé.

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 Output**](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl#refining-the-image-output)

guidance_scale (`float`, *facultatif*, valeur par défaut 5.0) : Échelle de guidage telle que définie dans [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` est défini comme `w` de l'équation 2. de [Imagen Paper](https://huggingface.co/papers/2205.11487). L'échelle de guidage est activée en définissant `guidance_scale > 1`. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au `prompt` texte, généralement au détriment de la qualité de l'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

num_images_per_prompt (`int`, *facultatif*, valeur par défaut 1) : Le nombre d'images à générer par invite.

eta (`float`, *facultatif*, valeur par défaut 0.0) : Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. S'applique uniquement à [schedulers.DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), sera ignoré pour les autres.

generator (`torch.Generator` ou `list[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.

latents (`torch.Tensor`, *facultatif*) : Latents bruités pré-générés, échantillonnés à partir d'une distribution gaussienne, à utiliser comme entrées pour la génération d'images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S'il n'est pas fourni, un tenseur de latents sera généré par échantillonnage à l'aide du `generator` aléatoire fourni.

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`.

pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte 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 embeddings de texte seront générés à partir de l'argument d'entrée `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.

ip_adapter_image_embeds (`list[torch.Tensor]`, *facultatif*) : Incrustations d’images pré-générées pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme `(batch_size, num_images, emb_dim)`. Il doit contenir l’incrustation d’image négative si `do_classifier_free_guidance` est défini sur `True`. S’il n’est pas fourni, les incrustations sont calculées à partir de l’argument d’entrée `ip_adapter_image`.

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.0) : Facteur de rééchelonnement 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 rééchelonnement du guidage doit corriger l'exposition excessive lors de l'utilisation d'un SNR terminal nul.

original_size (`tuple[int]`, *facultatif*, valeur par défaut (1024, 1024)) : Si `original_size` n'est pas identique à `target_size`, l'image apparaîtra sous-échantillonnée ou suréchantillonnée. `original_size` est défini par défaut sur `(height, width)` s'il n'est pas spécifié. 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).

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 `(height, width)`. 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).

negative_original_size (`tuple[int]`, *facultatif*, par défaut (1024, 1024)) : Permet de conditionner négativement le processus de génération en fonction d'une résolution d'image spécifique. 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). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

negative_crops_coords_top_left (`tuple[int]`, *facultatif*, valeur par défaut (0, 0)) : Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. 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). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

negative_target_size (`tuple[int]`, *facultatif*, par défaut (1024, 1024)) : Permet de conditionner négativement le processus de génération en fonction de la résolution de l'image cible. Il doit être identique à `target_size` dans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

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`, `PipelineCallback`, `MultiPipelineCallbacks`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` ou `MultiPipelineCallbacks` qui est appelée à la fin de chaque étape de débruitage pendant l’inférence, 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 :** `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` ou `tuple`

`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` 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.

Fonction appelée lors de l'appel du pipeline pour la génération.

Exemples :
```py
>>> import torch
>>> from diffusers import StableDiffusionXLPipeline

>>> pipe = StableDiffusionXLPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]
```

#### encode_prompt[[diffusers.StableDiffusionXLPipeline.encode_prompt]]

```python
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_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)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py#L283)

**Paramètres :**

prompt (`str` ou `list[str]`, *facultatif*) : invite à encoder

prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer au `tokenizer_2` et au `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux text-encoders

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

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

do_classifier_free_guidance (`bool`) : indique s'il faut utiliser le guidage sans classifieur ou non

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

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`.

pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte 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 embeddings de texte seront générés à partir de l'argument d'entrée `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.

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

#### get_guidance_scale_embedding[[diffusers.StableDiffusionXLPipeline.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/stable_diffusion_xl/pipeline_stable_diffusion_xl.py#L758)

**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

## StableDiffusionXLImg2ImgPipeline[[diffusers.StableDiffusionXLImg2ImgPipeline]]

#### diffusers.StableDiffusionXLImg2ImgPipeline[[diffusers.StableDiffusionXLImg2ImgPipeline]]

```python
diffusers.StableDiffusionXLImg2ImgPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py#L188)

**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`) : 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`) : 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`) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

tokenizer_2 (`CLIPTokenizer`) : Second 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 ([SchedulerMixin](/docs/diffusers/main/fr/api/schedulers/overview#diffusers.SchedulerMixin)) : Un planificateur à utiliser en combinaison avec `unet` pour débruyer les latents de l'image encodée. Peut être l'un des [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), [LMSDiscreteScheduler](/docs/diffusers/main/fr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler) ou [PNDMScheduler](/docs/diffusers/main/fr/api/schedulers/pndm#diffusers.PNDMScheduler).

requires_aesthetics_score (`bool`, *facultatif*, valeur par défaut `"False"`) : Indique si le `unet` nécessite qu'une condition `aesthetic_score` soit transmise lors de l'inférence. Voir également la configuration de `stabilityai/stable-diffusion-xl-refiner-1-0`.

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 la génération d'images à partir de texte utilisant Stable Diffusion XL.

Ce modèle hérite de [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (téléchargement ou sauvegarde, exécution sur un appareil particulier, etc.).

Le pipeline hérite également des méthodes de chargement suivantes :
- [load_textual_inversion()](/docs/diffusers/main/fr/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion) pour charger les embeddings d'inversion textuelle
- [from_single_file()](/docs/diffusers/main/fr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file) pour charger des fichiers `.ckpt`
- [load_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights) pour charger les poids LoRA
- [save_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.save_lora_weights) pour enregistrer les poids LoRA
- [load_ip_adapter()](/docs/diffusers/main/fr/api/loaders/ip_adapter#diffusers.loaders.IPAdapterMixin.load_ip_adapter) pour charger des IP Adapters

#### __appel__[[diffusers.StableDiffusionXLImg2ImgPipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, strength: float = 0.3, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_start: float | None = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_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, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py#L975)

**Paramètres :**

prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passer `prompt_embeds` à la place.

prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer au `tokenizer_2` et au `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux text-encoders

image (`torch.Tensor` ou `PIL.Image.Image` ou `np.ndarray` ou `list[torch.Tensor]` ou `list[PIL.Image.Image]` ou `list[np.ndarray]`) : L'image ou les images à modifier avec le pipeline.

strength (`float`, *facultatif*, valeur par défaut 0,3) : Indique conceptuellement dans quelle mesure transformer l'`image` de référence. Doit être compris entre 0 et 1. `image` sera utilisée comme point de départ, en y ajoutant davantage de bruit à mesure que `strength` augmente. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsque `strength` vaut 1, le bruit ajouté sera maximal et le processus de débruitage s'exécutera pendant le nombre complet d'itérations spécifié dans `num_inference_steps`. Une valeur de 1 ignore donc essentiellement `image`. Notez que si `denoising_start` est déclaré comme un entier, la valeur de `strength` sera ignorée.

num_inference_steps (`int`, *facultatif*, valeur par défaut 50) : Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente.

timesteps (`list[int]`, *facultatif*) : Étapes de temps personnalisées à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `timesteps` dans leur méthode `set_timesteps`. S'il n'est pas défini, le comportement par défaut lorsque `num_inference_steps` est passé sera utilisé. Doit être dans l'ordre décroissant.

sigmas (`list[float]`, *facultatif*) : Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `sigmas` dans leur méthode `set_timesteps`. S'ils ne sont pas définis, le comportement par défaut lorsque `num_inference_steps` est passé sera utilisé.

denoising_start (`float`, *facultatif*) : Si spécifié, indique la fraction (entre 0.0 et 1.0) du processus total de débruitage à ignorer avant son lancement. Par conséquent, la partie initiale du processus de débruitage est sautée et il est supposé que l'`image` transmise est partiellement débruitée. Notez que lorsque cela est spécifié, la force sera ignorée. Le paramètre `denoising_start` est particulièrement utile lorsque ce pipeline est intégré dans une configuration multi-pipelines « Mixture of Denoisers », comme détaillé dans [**Améliorer la qualité de l'image**](https://huggingface.co/docs/diffusers/using-diffusers/sdxl#refine-image-quality).

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 (environ 20 % des dernières étapes de temps sont encore nécessaires) et devrait être débruité par un pipeline successeur dont `denoising_start` est défini à 0.8, afin qu’il ne débruite que les 20 % finaux du 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 [**Améliorer la qualité de l’image**](https://huggingface.co/docs/diffusers/using-diffusers/sdxl#refine-image-quality).

guidance_scale (`float`, *facultatif*, valeur par défaut 7,5) : Échelle de guidage telle que définie dans [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` est défini comme `w` de l'équation 2. de [Imagen Paper](https://huggingface.co/papers/2205.11487). L'échelle de guidage est activée en définissant `guidance_scale > 1`. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au `prompt` texte, généralement au détriment de la qualité de l'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

num_images_per_prompt (`int`, *facultatif*, valeur par défaut 1) : Le nombre d'images à générer par invite.

eta (`float`, *facultatif*, valeur par défaut 0.0) : Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. S'applique uniquement à [schedulers.DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), sera ignoré pour les autres.

generator (`torch.Generator` ou `list[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.

latents (`torch.Tensor`, *facultatif*) : Latents bruités pré-générés, échantillonnés à partir d'une distribution gaussienne, à utiliser comme entrées pour la génération d'images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S'il n'est pas fourni, un tenseur de latents sera généré par échantillonnage à l'aide du `generator` aléatoire fourni.

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`.

pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte 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 embeddings de texte seront générés à partir de l'argument d'entrée `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.

ip_adapter_image_embeds (`list[torch.Tensor]`, *facultatif*) : Incrustations d’images pré-générées pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme `(batch_size, num_images, emb_dim)`. Il doit contenir l’incrustation d’image négative si `do_classifier_free_guidance` est défini sur `True`. S’il n’est pas fourni, les incrustations sont calculées à partir de l’argument d’entrée `ip_adapter_image`.

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.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.0) : Facteur de rééchelonnement 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 rééchelonnement du guidage doit corriger l'exposition excessive lors de l'utilisation d'un SNR terminal nul.

original_size (`tuple[int]`, *facultatif*, valeur par défaut (1024, 1024)) : Si `original_size` n'est pas identique à `target_size`, l'image apparaîtra sous-échantillonnée ou suréchantillonnée. `original_size` est défini par défaut sur `(height, width)` s'il n'est pas spécifié. 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).

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 `(height, width)`. 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).

negative_original_size (`tuple[int]`, *facultatif*, par défaut (1024, 1024)) : Permet de conditionner négativement le processus de génération en fonction d'une résolution d'image spécifique. 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). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

negative_crops_coords_top_left (`tuple[int]`, *facultatif*, valeur par défaut (0, 0)) : Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. 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). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

negative_target_size (`tuple[int]`, *facultatif*, par défaut (1024, 1024)) : Permet de conditionner négativement le processus de génération en fonction de la résolution de l'image cible. Il doit être identique à `target_size` dans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

aesthetic_score (`float`, *facultatif*, valeur par défaut 6.0) : Utilisé pour simuler un score esthétique de l'image générée en influençant la condition de texte positive. 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).

negative_aesthetic_score (`float`, *facultatif*, valeur par défaut 2.5) : 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). Peut être utilisé pour simuler un score esthétique de l'image générée en influençant la condition de texte négatif.

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`, `PipelineCallback`, `MultiPipelineCallbacks`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` ou `MultiPipelineCallbacks` qui est appelée à la fin de chaque étape de débruitage pendant l’inférence, 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 :** `~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput` ou `tuple`

`~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput` 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.

Fonction appelée lors de l'appel du pipeline pour la génération.

Exemples :
```py
>>> import torch
>>> from diffusers import StableDiffusionXLImg2ImgPipeline
>>> from diffusers.utils import load_image

>>> pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-refiner-1.0", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"

>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image).images[0]
```

#### encode_prompt[[diffusers.StableDiffusionXLImg2ImgPipeline.encode_prompt]]

```python
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_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)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py#L301)

**Paramètres :**

prompt (`str` ou `list[str]`, *facultatif*) : invite à encoder

prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer au `tokenizer_2` et au `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux text-encoders

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

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

do_classifier_free_guidance (`bool`) : indique s'il faut utiliser le guidage sans classifieur ou non

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

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`.

pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte 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 embeddings de texte seront générés à partir de l'argument d'entrée `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.

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

#### get_guidance_scale_embedding[[diffusers.StableDiffusionXLImg2ImgPipeline.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/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py#L906)

**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

## StableDiffusionXLInpaintPipeline[[diffusers.StableDiffusionXLInpaintPipeline]]

#### diffusers.StableDiffusionXLInpaintPipeline[[diffusers.StableDiffusionXLInpaintPipeline]]

```python
diffusers.StableDiffusionXLInpaintPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py#L215)

**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`) : 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`) : 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`) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

tokenizer_2 (`CLIPTokenizer`) : Second 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 ([SchedulerMixin](/docs/diffusers/main/fr/api/schedulers/overview#diffusers.SchedulerMixin)) : Un planificateur à utiliser en combinaison avec `unet` pour débruyer les latents de l'image encodée. Peut être l'un des [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), [LMSDiscreteScheduler](/docs/diffusers/main/fr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler) ou [PNDMScheduler](/docs/diffusers/main/fr/api/schedulers/pndm#diffusers.PNDMScheduler).

requires_aesthetics_score (`bool`, *facultatif*, par défaut `"False"`) : Indique si le `unet` nécessite le passage d'une condition aesthetic_score lors de l'inférence. Voir également la configuration de `stabilityai/stable-diffusion-xl-refiner-1-0`.

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 la génération d'images à partir de texte utilisant Stable Diffusion XL.

Ce modèle hérite de [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (téléchargement ou sauvegarde, exécution sur un appareil particulier, etc.).

Le pipeline hérite également des méthodes de chargement suivantes :
- [load_textual_inversion()](/docs/diffusers/main/fr/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion) pour charger les embeddings d'inversion textuelle
- [from_single_file()](/docs/diffusers/main/fr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file) pour charger des fichiers `.ckpt`
- [load_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights) pour charger les poids LoRA
- [save_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.save_lora_weights) pour enregistrer les poids LoRA
- [load_ip_adapter()](/docs/diffusers/main/fr/api/loaders/ip_adapter#diffusers.loaders.IPAdapterMixin.load_ip_adapter) pour charger des IP Adapters

#### __appel__[[diffusers.StableDiffusionXLInpaintPipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, masked_image_latents: Tensor = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 0.9999, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_start: float | None = None, denoising_end: float | None = None, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_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, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py#L1080)

**Paramètres :**

prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passer `prompt_embeds` à la place.

prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer au `tokenizer_2` et au `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux text-encoders

image (`PIL.Image.Image`) : `Image`, ou tenseur représentant un lot d'images qui sera inpainté, *c'est-à-dire* que certaines parties de l'image seront masquées avec `mask_image` et repeintes selon `prompt`.

mask_image (`PIL.Image.Image`) : `Image` ou tenseur représentant un lot d'images, à masquer avec `image`. Les pixels blancs du masque seront repeints, tandis que les pixels noirs seront conservés. Si `mask_image` est une image PIL, elle sera convertie en un seul canal (luminance) avant utilisation. S'il s'agit d'un tenseur, il doit contenir un seul canal de couleur (L) au lieu de trois, la forme attendue étant donc `(B, H, W, 1)`.

masked_image_latents (`torch.Tensor`, *facultatif*) : Latent pré-encodé de l'image masquée (pour l'inpainting).

height (`int`, *facultatif*, par défaut self.unet.config.sample_size * self.vae_scale_factor) : La hauteur en pixels de l'image générée. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0) ni avec des points de contrôle qui n'ont pas été spécifiquement affinés sur de faibles résolutions.

width (`int`, *facultatif*, par défaut self.unet.config.sample_size * self.vae_scale_factor) : La largeur en pixels de l'image générée. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0) ni avec des points de contrôle qui n'ont pas été spécifiquement affinés sur de faibles résolutions.

padding_mask_crop (`int`, *facultatif*, valeur par défaut `None`) : La taille de la marge dans le recadrage à appliquer à l'image et au masquage. Si `None`, aucun recadrage n'est appliqué à l'image et à mask_image. Si `padding_mask_crop` n'est pas `None`, il recherche d'abord une région rectangulaire ayant le même ratio d'aspect que l'image et contenant toute la zone masquée, puis élargit cette zone en fonction de `padding_mask_crop`. L'image et mask_image sont ensuite recadrées en fonction de la zone élargie avant d'être redimensionnées à la taille de l'image d'origine pour l'inpainting. Cela est utile lorsque la zone masquée est petite tandis que l'image est grande et contient des informations non pertinentes pour l'inpainting, telles que l'arrière-plan.

strength (`float`, *facultatif*, valeur par défaut 0.9999) : Indique conceptuellement dans quelle mesure transformer la partie masquée de l'`image` de référence. Doit être compris entre 0 et 1. `image` sera utilisé comme point de départ, en y ajoutant d'autant plus de bruit que `strength` est élevé. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsque `strength` vaut 1, le bruit ajouté sera maximal et le processus de débruitage s'exécutera pendant le nombre complet d'itérations spécifié dans `num_inference_steps`. Une valeur de 1 ignore donc essentiellement la partie masquée de l'`image` de référence. Notez que si `denoising_start` est déclaré comme un entier, la valeur de `strength` sera ignorée.

num_inference_steps (`int`, *facultatif*, valeur par défaut 50) : Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente.

timesteps (`list[int]`, *facultatif*) : Étapes de temps personnalisées à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `timesteps` dans leur méthode `set_timesteps`. S'il n'est pas défini, le comportement par défaut lorsque `num_inference_steps` est passé sera utilisé. Doit être dans l'ordre décroissant.

sigmas (`list[float]`, *facultatif*) : Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `sigmas` dans leur méthode `set_timesteps`. S'ils ne sont pas définis, le comportement par défaut lorsque `num_inference_steps` est passé sera utilisé.

denoising_start (`float`, *facultatif*) : Si spécifié, indique la fraction (entre 0.0 et 1.0) du processus total de débruitage à ignorer avant son lancement. Par conséquent, la partie initiale du processus de débruitage est sautée et il est supposé que l'`image` transmise est partiellement débruitée. Notez que lorsque ce paramètre est spécifié, la force sera ignorée. Le paramètre `denoising_start` est particulièrement utile lorsque ce pipeline est intégré dans une configuration multi-pipelines « Mixture of Denoisers », comme détaillé dans [**Amélioration de la sortie image**](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl#refining-the-image-output).

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 (environ 20 % des dernières étapes de temps sont encore nécessaires) et devrait être débruité par un pipeline successeur dont `denoising_start` est défini à 0.8, afin qu’il ne débruite que les 20 % finaux du 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 [**Amélioration de la sortie image**](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl#refining-the-image-output).

guidance_scale (`float`, *facultatif*, valeur par défaut 7,5) : Échelle de guidage telle que définie dans [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` est défini comme `w` de l'équation 2. de [Imagen Paper](https://huggingface.co/papers/2205.11487). L'échelle de guidage est activée en définissant `guidance_scale > 1`. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au `prompt` texte, généralement au détriment de la qualité de l'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

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`.

pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte 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 embeddings de texte seront générés à partir de l'argument d'entrée `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.

ip_adapter_image_embeds (`list[torch.Tensor]`, *facultatif*) : Incrustations d’images pré-générées pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme `(batch_size, num_images, emb_dim)`. Il doit contenir l’incrustation d’image négative si `do_classifier_free_guidance` est défini sur `True`. S’il n’est pas fourni, les incrustations sont calculées à partir de l’argument d’entrée `ip_adapter_image`.

num_images_per_prompt (`int`, *facultatif*, valeur par défaut 1) : Le nombre d'images à générer par invite.

eta (`float`, *facultatif*, valeur par défaut 0.0) : Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. S'applique uniquement à [schedulers.DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), sera ignoré pour les autres.

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.

latents (`torch.Tensor`, *facultatif*) : Latents bruités pré-générés, échantillonnés à partir d'une distribution gaussienne, à utiliser comme entrées pour la génération d'images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S'il n'est pas fourni, un tenseur de latents sera généré par échantillonnage à l'aide du `generator` aléatoire fourni.

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 [StableDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) 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).

original_size (`tuple[int]`, *facultatif*, valeur par défaut (1024, 1024)) : Si `original_size` n'est pas identique à `target_size`, l'image apparaîtra sous-échantillonnée ou suréchantillonnée. `original_size` est défini par défaut sur `(height, width)` s'il n'est pas spécifié. 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).

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 `(height, width)`. 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).

negative_original_size (`tuple[int]`, *facultatif*, par défaut (1024, 1024)) : Permet de conditionner négativement le processus de génération en fonction d'une résolution d'image spécifique. 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). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

negative_crops_coords_top_left (`tuple[int]`, *facultatif*, valeur par défaut (0, 0)) : Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. 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). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

negative_target_size (`tuple[int]`, *facultatif*, par défaut (1024, 1024)) : Permet de conditionner négativement le processus de génération en fonction de la résolution de l'image cible. Il doit être identique à `target_size` dans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208.

aesthetic_score (`float`, *facultatif*, valeur par défaut 6.0) : Utilisé pour simuler un score esthétique de l'image générée en influençant la condition de texte positive. 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).

negative_aesthetic_score (`float`, *facultatif*, valeur par défaut 2.5) : 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). Peut être utilisé pour simuler un score esthétique de l'image générée en influençant la condition de texte négatif.

guidance_rescale (`float`, *facultatif*, valeur par défaut 0.0) : Facteur de recalage du guidage issu de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://arxiv.org/pdf/2305.08891.pdf).

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`, `PipelineCallback`, `MultiPipelineCallbacks`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` ou `MultiPipelineCallbacks` qui est appelée à la fin de chaque étape de débruitage pendant l’inférence, 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 :** `~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput` ou `tuple`

`~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput` si `return_dict` est True, sinon un `tuple. `tuple. Lors du retour d'un tuple, le premier élément est une liste contenant les images générées.

Fonction appelée lors de l'appel du pipeline pour la génération.

Exemples :
```py
>>> import torch
>>> from diffusers import StableDiffusionXLInpaintPipeline
>>> from diffusers.utils import load_image

>>> pipe = StableDiffusionXLInpaintPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0",
...     torch_dtype=torch.float16,
...     variant="fp16",
...     use_safetensors=True,
... )
>>> pipe.to("cuda")

>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"

>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")

>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
...     prompt=prompt, image=init_image, mask_image=mask_image, num_inference_steps=50, strength=0.80
... ).images[0]
```

#### encode_prompt[[diffusers.StableDiffusionXLInpaintPipeline.encode_prompt]]

```python
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_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)
```

[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py#L405)

**Paramètres :**

prompt (`str` ou `list[str]`, *facultatif*) : invite à encoder

prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer au `tokenizer_2` et au `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux text-encoders

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

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

do_classifier_free_guidance (`bool`) : indique s'il faut utiliser le guidage sans classifieur ou non

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

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`.

pooled_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte 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 embeddings de texte seront générés à partir de l'argument d'entrée `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.

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

#### get_guidance_scale_embedding[[diffusers.StableDiffusionXLInpaintPipeline.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/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py#L1011)

**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

