🤗 Diffusers es la biblioteca de modelos de difusión más avanzada desarrollada por Hugging Face, especializada en la generación de imágenes, audio e incluso estructuras moleculares 3D. Ya sea que estés buscando soluciones de inferencia sencillas o entrenar tus propios modelos de difusión, 🤗 Diffusers es una caja de herramientas modular que admite ambas opciones.
Dirección del Proyecto: https://github.com/huggingface/diffusers
Pipelines de Difusión de Última Generación (Diffusion Pipelines)
Programadores de Ruido Intercambiables (Noise Schedulers)
Modelos Pre-entrenados (Pretrained Models)
# Paquete oficial
pip install --upgrade diffusers[torch]
# Versión conda mantenida por la comunidad
conda install -c conda-forge diffusers
pip install --upgrade diffusers[flax]
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]
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
Tarea | Pipeline | Modelo Recomendado |
---|---|---|
Generación de imágenes incondicional | DDPMPipeline | google/ddpm-ema-church-256 |
Texto a imagen | StableDiffusionPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
Texto a imagen (unCLIP) | UnCLIPPipeline | kakaobrain/karlo-v1-alpha |
Texto a imagen (DeepFloyd IF) | IFPipeline | DeepFloyd/IF-I-XL-v1.0 |
Texto a imagen (Kandinsky) | KandinskyPipeline | kandinsky-community/kandinsky-2-2-decoder |
Generación controlable | StableDiffusionControlNetPipeline | lllyasviel/sd-controlnet-canny |
Edición de imágenes | StableDiffusionInstructPix2PixPipeline | timbrooks/instruct-pix2pix |
Imagen a imagen | StableDiffusionImg2ImgPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
Restauración de imágenes | StableDiffusionInpaintPipeline | runwayml/stable-diffusion-inpainting |
Variantes de imagen | StableDiffusionImageVariationPipeline | lambdalabs/sd-image-variations-diffusers |
Superresolución de imágenes | StableDiffusionUpscalePipeline | stabilityai/stable-diffusion-x4-upscaler |
Superresolución latente | StableDiffusionLatentUpscalePipeline | stabilityai/sd-x2-latent-upscaler |
Tipo de Documento | Contenido de Aprendizaje |
---|---|
Tutorial | Aprende las habilidades básicas de la biblioteca, como usar modelos y programadores para construir sistemas de difusión, entrenar tus propios modelos de difusión |
Loading | Cómo cargar y configurar todos los componentes de la biblioteca (pipelines, modelos y programadores), y cómo usar diferentes programadores |
Pipelines for inference | Cómo usar pipelines para diferentes tareas de inferencia, generación por lotes, controlar la salida de generación y la aleatoriedad |
Optimization | Cómo optimizar pipelines para ejecutarlos en hardware con memoria limitada y acelerar la inferencia |
Training | Cómo entrenar tus propios modelos de difusión para diferentes tareas |
🤗 Diffusers es una de las bibliotecas de modelos de difusión más completas y fáciles de usar disponibles en la actualidad. No solo proporciona una rica colección de modelos y pipelines pre-entrenados, sino que también admite entrenamiento y optimización personalizados. Ya sean investigadores de IA, desarrolladores o creadores, todos pueden encontrar las herramientas necesarias en esta biblioteca para implementar varias aplicaciones de IA generativa.