? Diffusers es la biblioteca de referencia para modelos de difusión previos a los pretrados de última generación para generar imágenes, audio e incluso estructuras 3D de moléculas. ¿Ya sea que esté buscando una solución de inferencia simple o entrene sus propios modelos de difusión? Diffusers es una caja de herramientas modular que admite ambos. Nuestra biblioteca está diseñada con un enfoque en la usabilidad sobre el rendimiento, simple sobre fácil y personalización sobre abstracciones.
? Los difusores ofrecen tres componentes centrales:
Recomendamos instalar? Difusores en un entorno virtual de PYPI o conda. Para obtener más detalles sobre la instalación de Pytorch y Flax, consulte su documentación oficial.
Con pip
(paquete oficial):
pip install --upgrade diffusers[torch]
Con conda
(mantenido por la comunidad):
conda install -c conda-forge diffusers
Con pip
(paquete oficial):
pip install --upgrade diffusers[flax]
Consulte el cómo usar la difusión estable en la guía de silicio de manzana.
Generar salidas es súper fácil con? Difusores. Para generar una imagen a partir del texto, use el método from_pretrained
para cargar cualquier modelo de difusión previa a la aparición (explore el cubo para más de 30,000 puntos de control):
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 ]
También puede profundizar en la caja de herramientas de modelos y programadores para construir su propio sistema de difusión:
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
¡Mira el rápido arte para lanzar tu viaje de difusión hoy!
Documentación | ¿Qué puedo aprender? |
---|---|
Tutorial | Un curso de choque básico para aprender a usar las características más importantes de la biblioteca, como usar modelos y programadores, para construir su propio sistema de difusión y capacitar su propio modelo de difusión. |
Cargando | Guías sobre cómo cargar y configurar todos los componentes (tuberías, modelos y programadores) de la biblioteca, así como cómo usar diferentes programadores. |
Tuberías de inferencia | Guías sobre cómo usar tuberías para diferentes tareas de inferencia, generación por lotes, controlar salidas generadas y aleatoriedad, y cómo contribuir con una tubería a la biblioteca. |
Mejoramiento | Guías sobre cómo optimizar su modelo de difusión para ejecutar más rápido y consumir menos memoria. |
Capacitación | Guías sobre cómo entrenar un modelo de difusión para diferentes tareas con diferentes técnicas de entrenamiento. |
¡❤️ Contribuciones de la comunidad de código abierto! Si desea contribuir a esta biblioteca, consulte nuestra guía de contribución. Puede buscar problemas que le gustaría abordar para contribuir a la biblioteca.
Además, digamos en nuestro canal de discordia pública. Discutimos las tendencias más populares sobre los modelos de difusión, nos ayudamos mutuamente con contribuciones, proyectos personales o simplemente pasando el rato ☕.
Tarea | Tubería | ? Centro |
---|---|---|
Generación de imágenes incondicionales | Ddpm | Google/DDPM-EMA-CHURCH-256 |
Texto a imagen | Texto de difusión estable a imagen | Estable-Diflusion-V1-5/Estable-Diffusion-V1-5 |
Texto a imagen | soltar | kakaobrain/karlo-v1-alfa |
Texto a imagen | Deepfloyd si | Deepfloyd/IF-I-XL-V1.0 |
Texto a imagen | Kandinsky | Kandinsky-Community/Kandinsky-2-2-Decoder |
Imagen a imagen guiada por texto | Control de control | Llyasviel/SD-Controlnet-Canny |
Imagen a imagen guiada por texto | Instructpix2pix | timbrooks/instruct-pix2pix |
Imagen a imagen guiada por texto | Difusión estable Imagen a imagen | Estable-Diflusion-V1-5/Estable-Diffusion-V1-5 |
Inpenación de imágenes guiadas por texto | Inpenación de difusión estable | Runwayml/Estable-Difusion Inpainting |
Variación de la imagen | Variación de imagen de difusión estable | Lambdalabs/SD-Image-Variaciones-Diffusores |
Super resolución | Difusión estable de lujo | Estabilidadi/Estable-Difusión-X4-Upscaler |
Super resolución | Difusión estable de lujo | estabilidadi/sd-x2-latent-upcaler |
Gracias por usarnos ❤️.
Esta biblioteca concreta el trabajo anterior de muchos autores diferentes y no hubiera sido posible sin sus grandes investigaciones e implementaciones. Nos gustaría agradecer, en particular, las siguientes implementaciones que nos han ayudado en nuestro desarrollo y sin las cuales la API no podría haber estado tan pulida hoy:
También queremos agradecer a @heejkoo por la visión general muy útil de los documentos, el código y los recursos en los modelos de difusión, disponibles aquí, así como @crowsonkb y @rromb por discusiones e ideas útiles.
@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} }
}