Buckets:

mishig's picture
|
download
raw
8.51 kB

Các pipeline Stable Diffusion

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 cho các 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:

        Pipeline
        
        
        Các tác vụ được hỗ trợ
        
        
        🤗 Space
        
    
    
    
    
        
        StableDiffusion
        
        text-to-image
        
        
    
    
        
        StableDiffusionImg2Img
        
        image-to-image
        
        
    
    
        
        StableDiffusionInpaint
        
        inpainting
        
        
    
    
        
        StableDiffusionDepth2Img
        
        depth-to-image
        
        
    
    
        
        StableDiffusionImageVariation
        
        biến thể hình ảnh
        
        
    
    
        
        StableDiffusionPipelineSafe (đã bị loại bỏ; không có trang tài liệu)
        
        chuyển văn bản thành ảnh đã lọc
        
        
    
    
        
        StableDiffusion2
        
        tạo ảnh từ văn bản, inpainting, tạo ảnh từ độ sâu, siêu phân giải
        
        
    
    
        
        StableDiffusionXL
        
        chuyển văn bản thành hình ảnh, chuyển hình ảnh thành hình ảnh
        
        
    
    
        
        StableDiffusionLatentUpscale
        
        super-resolution
        
        
    
    
        
        StableDiffusionUpscale
        
        super-resolution
    
    
        
        StableDiffusionLDM3D
        
        tạ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
        
        
    
    
        
        StableDiffusionUpscaleLDM3D
        
        ldm3d 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.

Xet Storage Details

Size:
8.51 kB
·
Xet hash:
887a5ccffa49cb2422920b8ff7c710fa120562b597d4aa2fba5588398faf26cb

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.