Buckets:

mishig's picture
|
download
raw
7.79 kB
# Pipelines do Stable Diffusion
Stable Diffusion é um modelo de difusão latente de texto para imagem criado pelos pesquisadores e engenheiros do [CompVis](https://github.com/CompVis), [Stability AI](https://stability.ai/) e [LAION](https://laion.ai/). A difusão latente aplica o processo de difusão em um espaço latente de dimensão inferior para reduzir a complexidade de memória e de computação. Esse tipo específico de modelo de difusão foi proposto em [High-Resolution Image Synthesis with Latent Diffusion Models](https://huggingface.co/papers/2112.10752) por Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser, Björn Ommer.
O Stable Diffusion é treinado em imagens de 512x512 de um subconjunto do conjunto de dados LAION-5B. Este modelo usa um codificador de texto CLIP ViT-L/14 congelado para condicionar o modelo em prompts de texto. Com seu UNet de 860M e codificador de texto de 123M, o modelo é relativamente leve e pode ser executado em GPUs de consumo.
Para mais detalhes sobre como o Stable Diffusion funciona e como ele difere do modelo base de difusão latente, confira o [anúncio](https://stability.ai/blog/stable-diffusion-announcement) da Stability AI e nosso próprio [post de blog](https://huggingface.co/blog/stable_diffusion#how-does-stable-diffusion-work) para mais detalhes técnicos.
Você pode encontrar o código original do Stable Diffusion v1.0 em [CompVis/stable-diffusion](https://github.com/CompVis/stable-diffusion) e do Stable Diffusion v2.0 em [Stability-AI/stablediffusion](https://github.com/Stability-AI/stablediffusion), bem como seus scripts originais para diversas tarefas. Checkpoints oficiais adicionais para as diferentes versões e tarefas do Stable Diffusion podem ser encontrados nas organizações [CompVis](https://huggingface.co/CompVis) e [Stability AI](https://huggingface.co/stabilityai) no Hub. Explore essas organizações para encontrar o melhor checkpoint para o seu caso de uso!
A tabela abaixo resume os pipelines do Stable Diffusion disponíveis, as tarefas suportadas e uma demonstração interativa:
Pipeline
Tarefas suportadas
🤗 Space
StableDiffusion
texto-para-imagem
StableDiffusionImg2Img
imagem-para-imagem
StableDiffusionInpaint
inpainting
StableDiffusionDepth2Img
depth-to-image
StableDiffusionImageVariation
variação de imagem
StableDiffusionPipelineSafe (Descontinuado; sem página de documentação)
texto-para-imagem filtrado
StableDiffusion2
texto-para-imagem, inpainting, profundidade-para-imagem, super-resolução
StableDiffusionXL
texto-para-imagem, imagem-para-imagem
StableDiffusionLatentUpscale
super-resolução
StableDiffusionUpscale
super-resolução
StableDiffusionLDM3D
texto-para-rgb, texto-para-profundidade, texto-para-pano
StableDiffusionUpscaleLDM3D
super-resolução do ldm3d
## Dicas
Para ajudar você a aproveitar ao máximo os pipelines do Stable Diffusion, aqui estão algumas dicas para melhorar o desempenho e a usabilidade. Essas dicas se aplicam a todos os pipelines do Stable Diffusion.
### Explore o compromisso entre velocidade e qualidade
[StableDiffusionPipeline](/docs/diffusers/v0.43.0/pt/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline) usa o [PNDMScheduler](/docs/diffusers/v0.43.0/pt/api/schedulers/pndm#diffusers.PNDMScheduler) por padrão, mas o 🤗 Diffusers oferece muitos outros agendadores compatíveis (alguns mais rápidos ou com melhor qualidade de saída). Por exemplo, se você quiser usar o [EulerDiscreteScheduler](/docs/diffusers/v0.43.0/pt/api/schedulers/euler#diffusers.EulerDiscreteScheduler) em vez do padrão:
```py
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)
```
### Reutilize componentes de pipeline para economizar memória
Para economizar memória e usar os mesmos componentes em vários pipelines, use o método `.components` para evitar carregar os pesos na RAM mais de uma vez.
```py
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
```
### Crie demonstrações web usando `gradio`
Os pipelines do Stable Diffusion são suportados automaticamente no [Gradio](https://github.com/gradio-app/gradio/), uma biblioteca que facilita a criação de aplicativos de machine learning bonitos e fáceis de usar na web. Primeiro, verifique se o Gradio está instalado:
```sh
pip install -U gradio
```
Em seguida, crie uma demonstração web em torno de qualquer pipeline baseado em Stable Diffusion. Por exemplo, você pode criar um pipeline de geração de imagens em uma única linha de código com a função [`Interface.from_pipeline`](https://www.gradio.app/docs/interface#interface-from-pipeline) do Gradio:
```py
from diffusers import StableDiffusionPipeline
import gradio as gr
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
gr.Interface.from_pipeline(pipe).launch()
```
que abre uma interface intuitiva de arrastar e soltar no seu navegador:
![](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/gradio-panda.png)
Da mesma forma, você poderia criar uma demonstração para um pipeline de imagem-para-imagem com:
```py
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()
```
Por padrão, a demonstração web é executada em um servidor local. Se você quiser compartilhá-la com outras pessoas, pode gerar um link público temporário definindo `share=True` em `launch()`. Ou, você pode hospedar sua demonstração no [Hugging Face Spaces](https://huggingface.co/spaces)https://huggingface.co/spaces para obter um link permanente.

Xet Storage Details

Size:
7.79 kB
·
Xet hash:
0adbf67fd029ceaf19ad4acc34db36e0d7ce801e9c11c14a8bc6c1d664ca32f7

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