Diffusers documentation
Stable Diffusion 2
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âche | Dépôt |
|---|---|
| texte-vers-image (512x512) | stabilityai/stable-diffusion-2-base |
| texte-vers-image (768x768) | stabilityai/stable-diffusion-2 |
| inpainting | stabilityai/stable-diffusion-2-inpainting |
| super-résolution | stable-diffusion-x4-upscaler |
| depth-to-image | stabilityai/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]
imageInpainting
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)