# Stable Diffusion 2

Stable Diffusion 2 est un modèle de _diffusion latente_ texte-vers-image construit sur le travail du [Stable Diffusion](https://stability.ai/blog/stable-diffusion-public-release) original, et il a été dirigé par Robin Rombach et Katherine Crowson de [Stability AI](https://stability.ai/) et [LAION](https://laion.ai/).

*La sortie de Stable Diffusion 2.0 inclut des modèles robustes de texte vers image entraînés à l'aide d'un tout nouvel encodeur de texte (OpenCLIP), développé par LAION avec le soutien de Stability AI, ce qui améliore considérablement la qualité des images générées par rapport aux versions V1 antérieures. Les modèles de texte vers image de cette version peuvent générer des images avec des résolutions par défaut de 512x512 pixels et de 768x768 pixels. Ces modèles sont entraînés sur un sous-ensemble esthétique du [jeu de données LAION-5B](https://laion.ai/blog/laion-5b/) créé par l'équipe DeepFloyd de Stability AI, puis filtré davantage pour supprimer le contenu pour adultes à l'aide du [filtre NSFW de LAION](https://openreview.net/forum?id=M3Y74vmsMcY).*

Pour plus de détails sur le fonctionnement de Stable Diffusion 2 et sur les différences par rapport à la version originale de Stable Diffusion, veuillez consulter le [post d'annonce officiel](https://stability.ai/blog/stable-diffusion-v2-release).

L’architecture de Stable Diffusion 2 est plus ou moins identique à celle du modèle [Stable Diffusion](./text2img) d’origine, consultez donc sa documentation API pour savoir comment utiliser Stable Diffusion 2. Nous recommandons d’utiliser le [DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/fr/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler), car il offre un bon compromis entre vitesse et qualité et peut être exécuté avec seulement 20 étapes.

Stable Diffusion 2 est disponible pour des tâches telles que la génération d’images à partir de texte, l’inpainting, la super-résolution et la conversion de profondeur en image :

| Tâche                    | Dépôt                                                                                                    |
|-------------------------|---------------------------------------------------------------------------------------------------------------|
| texte-vers-image (512x512) | [stabilityai/stable-diffusion-2-base](https://huggingface.co/stabilityai/stable-diffusion-2-base)             |
| texte-vers-image (768x768) | [stabilityai/stable-diffusion-2](https://huggingface.co/stabilityai/stable-diffusion-2)                       |
| inpainting              | [stabilityai/stable-diffusion-2-inpainting](https://huggingface.co/stabilityai/stable-diffusion-2-inpainting) |
| super-résolution        | [stable-diffusion-x4-upscaler](https://huggingface.co/stabilityai/stable-diffusion-x4-upscaler)               |
| depth-to-image          | [stabilityai/stable-diffusion-2-depth](https://huggingface.co/stabilityai/stable-diffusion-2-depth)           |

Voici quelques exemples d'utilisation de Stable Diffusion 2 pour chaque tâche :

> [!TIP]
> Pensez à consulter la section [Astuces](overview#tips) de Stable Diffusion pour apprendre à explorer le compromis entre la vitesse et la qualité du planificateur, et à réutiliser efficacement les composants du pipeline !
>
> Si vous souhaitez utiliser l'un des points de contrôle officiels pour une tâche, explorez les organisations [CompVis](https://huggingface.co/CompVis) et [Stability AI](https://huggingface.co/stabilityai) sur le Hub !

## Texte vers image

```py
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
import torch

repo_id = "stabilityai/stable-diffusion-2-base"
pipe = DiffusionPipeline.from_pretrained(repo_id, dtype=torch.float16, variant="fp16")

pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "High quality photo of an astronaut riding a horse in space"
image = pipe(prompt, num_inference_steps=25).images[0]
image
```

## Inpainting

```py
import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import load_image, make_image_grid

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).resize((512, 512))
mask_image = load_image(mask_url).resize((512, 512))

repo_id = "stabilityai/stable-diffusion-2-inpainting"
pipe = DiffusionPipeline.from_pretrained(repo_id, dtype=torch.float16, variant="fp16")

pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
image = pipe(prompt=prompt, image=init_image, mask_image=mask_image, num_inference_steps=25).images[0]
make_image_grid([init_image, mask_image, image], rows=1, cols=3)
```

## Super-résolution

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

# load model and scheduler
model_id = "stabilityai/stable-diffusion-x4-upscaler"
pipeline = StableDiffusionUpscalePipeline.from_pretrained(model_id, dtype=torch.float16)
pipeline = pipeline.to("cuda")  # or "mps", "xpu", "cpu"

# let's download an  image
url = "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd2-upscale/low_res_cat.png"
low_res_img = load_image(url)
low_res_img = low_res_img.resize((128, 128))
prompt = "a white cat"
upscaled_image = pipeline(prompt=prompt, image=low_res_img).images[0]
make_image_grid([low_res_img.resize((512, 512)), upscaled_image.resize((512, 512))], rows=1, cols=2)
```

## Profondeur vers image

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

pipe = StableDiffusionDepth2ImgPipeline.from_pretrained(
    "stabilityai/stable-diffusion-2-depth",
    dtype=torch.float16,
).to("cuda")  # or "mps", "xpu", "cpu"

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
init_image = load_image(url)
prompt = "two tigers"
negative_prompt = "bad, deformed, ugly, bad anotomy"
image = pipe(prompt=prompt, image=init_image, negative_prompt=negative_prompt, strength=0.7).images[0]
make_image_grid([init_image, image], rows=1, cols=2)
```

