Diffusers documentation

Các pipeline Stable Diffusion

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

Các pipeline Stable Diffusion

LoRA

Stable Diffusion là mô hình khuếch tán tiềm ẩn (latent diffusion) từ văn bản sang hình ảnh do các nhà nghiên cứu và kỹ sư từ CompVis, Stability AI và LAION tạo ra. Khuếch tán tiềm ẩn áp dụng quá trình khuếch tán trên không gian tiềm ẩn có số chiều thấp hơn để giảm độ phức tạp về bộ nhớ và tính toán. Loại mô hình khuếch tán cụ thể này được đề xuất trong High-Resolution Image Synthesis with Latent Diffusion Models bởi Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser, Björn Ommer.

Stable Diffusion được huấn luyện trên các ảnh 512x512 từ một tập con của bộ dữ liệu LAION-5B. Mô hình này sử dụng text encoder CLIP ViT-L/14 đã đóng băng để điều kiện hóa mô hình dựa trên các text prompt. Với UNet 860M và text encoder 123M, mô hình tương đối nhẹ và có thể chạy trên các GPU dành cho người tiêu dùng.

Để biết thêm chi tiết về cách Stable Diffusion hoạt động và cách nó khác biệt so với mô hình latent diffusion cơ bản, hãy xem thông báo của Stability AI và bài viết trên blog của chúng tôi để có thêm thông tin kỹ thuật.

Bạn có thể tìm thấy mã nguồn gốc của Stable Diffusion v1.0 tại CompVis/stable-diffusion và Stable Diffusion v2.0 tại Stability-AI/stablediffusion cùng với các script gốc của chúng cho nhiều tác vụ khác nhau. Các checkpoint chính thức bổ sung cho các phiên bản và tác vụ khác nhau của Stable Diffusion có thể được tìm thấy trên các tổ chức CompVis và Stability AI trên Hub. Hãy khám phá các tổ chức này để tìm checkpoint phù hợp nhất cho trường hợp sử dụng của bạn!

Bảng dưới đây tóm tắt các pipeline Stable Diffusion khả dụng, các tác vụ được hỗ trợ và một demo tương tác:

PipelineCác tác vụ được hỗ trợ🤗 Space
StableDiffusiontext-to-image
StableDiffusionImg2Imgimage-to-image
StableDiffusionInpaintinpainting
StableDiffusionDepth2Imgdepth-to-image
StableDiffusionImageVariationbiến thể hình ảnh
StableDiffusionPipelineSafe (không còn được hỗ trợ; không có trang tài liệu)chuyển văn bản thành ảnh đã lọc
StableDiffusion2tạo ảnh từ văn bản, inpainting, tạo ảnh từ độ sâu, siêu phân giải
StableDiffusionXLtext-to-image, image-to-image
StableDiffusionLatentUpscalesuper-resolution
StableDiffusionUpscalesuper-resolution
StableDiffusionLDM3Dtạo ảnh màu từ văn bản, tạo ảnh độ sâu từ văn bản, tạo ảnh toàn cảnh từ văn bản
StableDiffusionUpscaleLDM3Dldm3d siêu phân giải

Mẹo

Để giúp bạn tận dụng tối đa các pipeline của Stable Diffusion, dưới đây là một số mẹo để cải thiện hiệu suất và khả năng sử dụng. Các mẹo này áp dụng cho tất cả các pipeline của Stable Diffusion.

Khám phá sự đánh đổi giữa tốc độ và chất lượng

StableDiffusionPipeline sử dụng PNDMScheduler theo mặc định, nhưng 🤗 Diffusers cung cấp nhiều scheduler khác (một số nhanh hơn hoặc cho chất lượng đầu ra tốt hơn) tương thích. Ví dụ, nếu bạn muốn sử dụng EulerDiscreteScheduler thay vì mặc định:

from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler

pipeline = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config)

# or
euler_scheduler = EulerDiscreteScheduler.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="scheduler")
pipeline = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", scheduler=euler_scheduler)

Tái sử dụng các thành phần pipeline để tiết kiệm bộ nhớ

Để tiết kiệm bộ nhớ và sử dụng cùng các thành phần cho nhiều pipeline khác nhau, hãy dùng phương thức .components để tránh nạp trọng số vào RAM nhiều hơn một lần.

from diffusers import (
    StableDiffusionPipeline,
    StableDiffusionImg2ImgPipeline,
    StableDiffusionInpaintPipeline,
)

text2img = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
inpaint = StableDiffusionInpaintPipeline(**text2img.components)

# now you can use text2img(...), img2img(...), inpaint(...) just like the call methods of each respective pipeline

Tạo demo web bằng gradio

Các pipeline Stable Diffusion được hỗ trợ tự động trong Gradio, một thư viện giúp việc tạo các ứng dụng machine learning trên web đẹp mắt và thân thiện với người dùng trở nên dễ dàng. Trước tiên, hãy đảm bảo bạn đã cài đặt Gradio:

pip install -U gradio

Sau đó, hãy tạo một demo web xung quanh bất kỳ pipeline nào dựa trên Stable Diffusion. Ví dụ, bạn có thể tạo một pipeline tạo ảnh chỉ với một dòng mã bằng cách sử dụng hàm Interface.from_pipeline của Gradio:

from diffusers import StableDiffusionPipeline
import gradio as gr

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")

gr.Interface.from_pipeline(pipe).launch()

mở ra một giao diện kéo-thả trực quan trong trình duyệt của bạn:

Tương tự, bạn có thể tạo một demo cho pipeline image-to-image với:

from diffusers import StableDiffusionImg2ImgPipeline
import gradio as gr


pipe = StableDiffusionImg2ImgPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")

gr.Interface.from_pipeline(pipe).launch()

Mặc định, bản demo web chạy trên một máy chủ cục bộ. Nếu bạn muốn chia sẻ với người khác, bạn có thể tạo một liên kết công khai tạm thời bằng cách đặt share=True trong launch(). Hoặc, bạn có thể lưu trữ demo của mình trên Hugging Face Spaceshttps://huggingface.co/spaces để có một liên kết vĩnh viễn.

Update on GitHub