Diffusers documentation

Stable Diffusion 2

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Stable Diffusion 2

Stable Diffusion 2 est un modèle de diffusion latente texte-vers-image construit sur le travail du Stable Diffusion original, et il a été dirigé par Robin Rombach et Katherine Crowson de Stability AI et LAION.

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 créé par l'équipe DeepFloyd de Stability AI, puis filtré davantage pour supprimer le contenu pour adultes à l'aide du filtre NSFW de LAION.

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.

L’architecture de Stable Diffusion 2 est plus ou moins identique à celle du modèle Stable Diffusion d’origine, consultez donc sa documentation API pour savoir comment utiliser Stable Diffusion 2. Nous recommandons d’utiliser le 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âcheDépôt
texte-vers-image (512x512)stabilityai/stable-diffusion-2-base
texte-vers-image (768x768)stabilityai/stable-diffusion-2
inpaintingstabilityai/stable-diffusion-2-inpainting
super-résolutionstable-diffusion-x4-upscaler
depth-to-imagestabilityai/stable-diffusion-2-depth

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

Pensez à consulter la section Astuces 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 et Stability AI sur le Hub !

Texte vers image

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

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

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

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)
Update on GitHub