Diffusers documentation
Stable Diffusion 2
Stable Diffusion 2
Stable Diffusion 2 là một mô hình latent diffusion từ văn bản sang hình ảnh được xây dựng dựa trên công trình của Stable Diffusion ban đầu, do Robin Rombach và Katherine Crowson từ Stability AI và LAION dẫn dắt.
Bản phát hành Stable Diffusion 2.0 bao gồm các mô hình text-to-image mạnh mẽ được huấn luyện bằng một text encoder hoàn toàn mới (OpenCLIP), do LAION phát triển với sự hỗ trợ từ Stability AI, giúp cải thiện đáng kể chất lượng của các hình ảnh được tạo ra so với các bản phát hành V1 trước đó. Các mô hình text-to-image trong bản phát hành này có thể tạo ra hình ảnh với độ phân giải mặc định là cả 512x512 pixel và 768x768 pixel. Các mô hình này được huấn luyện trên một tập con mang tính thẩm mỹ của LAION-5B dataset do nhóm DeepFloyd tại Stability AI tạo ra, sau đó được lọc thêm để loại bỏ nội dung người lớn bằng LAION’s NSFW filter.
Để biết thêm chi tiết về cách Stable Diffusion 2 hoạt động và sự khác biệt của nó so với Stable Diffusion gốc, vui lòng tham khảo bài công bố chính thức.
Kiến trúc của Stable Diffusion 2 về cơ bản giống hệt với mô hình Stable Diffusion gốc, vì vậy hãy xem tài liệu API của nó để biết cách sử dụng Stable Diffusion 2. Chúng tôi khuyến nghị sử dụng DPMSolverMultistepScheduler vì nó cho phép đánh đổi hợp lý giữa tốc độ và chất lượng, đồng thời có thể chạy với chỉ 20 bước.
Stable Diffusion 2 có sẵn cho các tác vụ như text-to-image, inpainting, super-resolution và depth-to-image:
| Nhiệm vụ | Kho lưu trữ |
|---|---|
| text-to-image (512x512) | stabilityai/stable-diffusion-2-base |
| text-to-image (768x768) | stabilityai/stable-diffusion-2 |
| inpainting | stabilityai/stable-diffusion-2-inpainting |
| super-resolution | stable-diffusion-x4-upscaler |
| depth-to-image | stabilityai/stable-diffusion-2-depth |
Dưới đây là một số ví dụ về cách sử dụng Stable Diffusion 2 cho từng tác vụ:
Hãy chắc chắn xem qua phần Mẹo của Stable Diffusion để tìm hiểu cách khám phá sự đánh đổi giữa tốc độ và chất lượng của scheduler, cũng như cách tái sử dụng các thành phần pipeline một cách hiệu quả!
Nếu bạn quan tâm đến việc sử dụng một trong các checkpoint chính thức cho một tác vụ, hãy khám phá các tổ chức CompVis và Stability AI trên Hub!
Văn bản sang hình ảnh
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)Phân giải siêu cao
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)Từ độ sâu sang hình ảnh
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)