Diffusers documentation

Stable Diffusion 2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
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 é um modelo de latent diffusion de texto para imagem construído sobre o trabalho do original Stable Diffusion, e foi liderado por Robin Rombach e Katherine Crowson da Stability AI e LAION.

O lançamento do Stable Diffusion 2.0 inclui modelos robustos de texto para imagem treinados usando um novo codificador de texto (OpenCLIP), desenvolvido pela LAION com o apoio da Stability AI, o que melhora significativamente a qualidade das imagens geradas em comparação com as versões anteriores V1. Os modelos de texto para imagem deste lançamento podem gerar imagens com resoluções padrão de 512x512 pixels e 768x768 pixels. Esses modelos são treinados em um subconjunto estético do conjunto de dados LAION-5B criado pela equipe DeepFloyd da Stability AI, que é então filtrado para remover conteúdo adulto usando o filtro NSFW da LAION.

Para mais detalhes sobre como o Stable Diffusion 2 funciona e como ele difere do Stable Diffusion original, consulte o post de anúncio oficial.

A arquitetura do Stable Diffusion 2 é mais ou menos idêntica ao modelo original Stable Diffusion, então consulte a documentação da API dele para saber como usar o Stable Diffusion 2. Recomendamos usar o DPMSolverMultistepScheduler, pois ele oferece um bom equilíbrio entre velocidade e qualidade e pode ser executado com apenas 20 etapas.

O Stable Diffusion 2 está disponível para tarefas como texto-para-imagem, inpainting, super-resolução e profundidade-para-imagem:

TarefaRepositório
texto-para-imagem (512x512)stabilityai/stable-diffusion-2-base
texto-para-imagem (768x768)stabilityai/stable-diffusion-2
inpaintingstabilityai/stable-diffusion-2-inpainting
super-resoluçãostable-diffusion-x4-upscaler
depth-to-imagestabilityai/stable-diffusion-2-depth

Aqui estão alguns exemplos de como usar o Stable Diffusion 2 para cada tarefa:

Certifique-se de conferir a seção Dicas do Stable Diffusion para aprender como explorar o equilíbrio entre a velocidade e a qualidade do agendador, e como reutilizar os componentes do pipeline de forma eficiente!

Se você estiver interessado em usar um dos checkpoints oficiais para uma tarefa, explore as organizações CompVis e Stability AI no Hub!

Texto para imagem

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-resolução

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)

Profundidade para imagem

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