? Os difusores são a biblioteca preferida para modelos de difusão pré-teremia de última geração para gerar imagens, áudio e até estruturas 3D de moléculas. Se você está procurando uma solução simples de inferência ou treinando seus próprios modelos de difusão,? Os difusores são uma caixa de ferramentas modular que suporta ambos. Nossa biblioteca foi projetada com foco na usabilidade sobre o desempenho, simples e fácil de personalização sobre as abstrações.
? Os difusores oferecem três componentes principais:
Recomendamos instalar? Difusores em um ambiente virtual de Pypi ou conda. Para obter mais detalhes sobre a instalação de Pytorch e linho, consulte a documentação oficial deles.
Com pip
(pacote oficial):
pip install --upgrade diffusers[torch]
Com conda
(mantido pela comunidade):
conda install -c conda-forge diffusers
Com pip
(pacote oficial):
pip install --upgrade diffusers[flax]
Consulte o como usar difusão estável no guia Apple Silicon.
Gerar saídas é super fácil com? Difusores. Para gerar uma imagem a partir do texto, use o método from_pretrained
para carregar qualquer modelo de difusão pré -treinamento (navegue no hub para mais de 30.000 pontos de verificação):
from diffusers import DiffusionPipeline
import torch
pipeline = DiffusionPipeline . from_pretrained ( "stable-diffusion-v1-5/stable-diffusion-v1-5" , torch_dtype = torch . float16 )
pipeline . to ( "cuda" )
pipeline ( "An image of a squirrel in Picasso style" ). images [ 0 ]
Você também pode procurar a caixa de ferramentas de modelos e agendadores para criar seu próprio sistema de difusão:
from diffusers import DDPMScheduler , UNet2DModel
from PIL import Image
import torch
scheduler = DDPMScheduler . from_pretrained ( "google/ddpm-cat-256" )
model = UNet2DModel . from_pretrained ( "google/ddpm-cat-256" ). to ( "cuda" )
scheduler . set_timesteps ( 50 )
sample_size = model . config . sample_size
noise = torch . randn (( 1 , 3 , sample_size , sample_size ), device = "cuda" )
input = noise
for t in scheduler . timesteps :
with torch . no_grad ():
noisy_residual = model ( input , t ). sample
prev_noisy_sample = scheduler . step ( noisy_residual , t , input ). prev_sample
input = prev_noisy_sample
image = ( input / 2 + 0.5 ). clamp ( 0 , 1 )
image = image . cpu (). permute ( 0 , 2 , 3 , 1 ). numpy ()[ 0 ]
image = Image . fromarray (( image * 255 ). round (). astype ( "uint8" ))
image
Confira o Quickstart para lançar sua jornada de difusão hoje!
Documentação | O que posso aprender? |
---|---|
Tutorial | Um curso básico para aprender a usar os recursos mais importantes da biblioteca, como usar modelos e agendadores para criar seu próprio sistema de difusão e treinar seu próprio modelo de difusão. |
Carregando | Guias de como carregar e configurar todos os componentes (pipelines, modelos e agendadores) da biblioteca, bem como usar diferentes agendadores. |
Oleodutos para inferência | Guias de como usar pipelines para diferentes tarefas de inferência, geração em lotes, controle de saídas geradas e aleatoriedade e como contribuir com um pipeline para a biblioteca. |
Otimização | Guias de como otimizar seu modelo de difusão para executar mais rápido e consumir menos memória. |
Treinamento | Guias de como treinar um modelo de difusão para diferentes tarefas com diferentes técnicas de treinamento. |
Nós contribuições da comunidade de código aberto! Se você deseja contribuir com esta biblioteca, consulte nosso guia de contribuição. Você pode procurar problemas que gostaria de abordar para contribuir com a biblioteca.
Além disso, digamos em nosso canal público de discórdia. Discutimos as tendências mais quentes sobre modelos de difusão, nos ajudamos com contribuições, projetos pessoais ou apenas saímos ☕.
Tarefa | Oleoduto | ? Eixo |
---|---|---|
Geração incondicional de imagem | Ddpm | Google/DDPM-EMA-Church-256 |
Texto para imagem | Difusão estável Texto para imagem | stable difusão-v1-5/stable-difusão-v1-5 |
Texto para imagem | soltar | Kakaobrain/Karlo-V1-Alpha |
Texto para imagem | Deepfloyd If | Deepfloyd/if-i-xl-v1.0 |
Texto para imagem | Kandinsky | Kandinsky-Community/Kandinsky-2-2-Decoder |
Imagem guiada por texto para imagem | Controlnet | LLLYASVIEL/SD-CONTROLNET-CANNANY |
Imagem guiada por texto para imagem | Instructpix2pix | Timbrooks/Instruct-Pix2pix |
Imagem guiada por texto para imagem | Difusão estável imagem a imagem | stable difusão-v1-5/stable-difusão-v1-5 |
Imagem guiada por texto que inclui | Difusão estável INPINATIVA | RunwayML/Painting de difusão estável |
Variação da imagem | Variação de imagem de difusão estável | Lambdalabs/SD-Image-Varions-Diffusers |
Super resolução | Upscale de difusão estável | Stabilityai/stable-difusão-x4-upscaler |
Super resolução | Upscale latente de difusão estável | Stabilityai/SD-X2-Latent-Upscaler |
Obrigado por nos usar ❤️.
Esta biblioteca concretiza o trabalho anterior de muitos autores diferentes e não seria possível sem suas grandes pesquisas e implementações. Gostaríamos de agradecer, em particular, as seguintes implementações que nos ajudaram em nosso desenvolvimento e sem as quais a API não poderia ter sido tão polida hoje:
Também queremos agradecer ao @heejkoo pela visão geral muito útil dos papéis, código e recursos em modelos de difusão, disponíveis aqui, bem como @Crowsonkb e @RRomb por discussões e insights úteis.
@misc { von-platen-etal-2022-diffusers ,
author = { Patrick von Platen and Suraj Patil and Anton Lozhkov and Pedro Cuenca and Nathan Lambert and Kashif Rasul and Mishig Davaadorj and Dhruv Nair and Sayak Paul and William Berman and Yiyi Xu and Steven Liu and Thomas Wolf } ,
title = { Diffusers: State-of-the-art diffusion models } ,
year = { 2022 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/huggingface/diffusers} }
}