🤗 Diffusers é a biblioteca de modelos de difusão de última geração desenvolvida pela Hugging Face, especializada na geração de imagens, áudio e até mesmo estruturas moleculares 3D. Quer você esteja procurando soluções de inferência simples ou treinando seus próprios modelos de difusão, 🤗 Diffusers é um conjunto de ferramentas modular que suporta ambos.
Endereço do Projeto: https://github.com/huggingface/diffusers
Pipelines de Difusão de Última Geração (Diffusion Pipelines)
Agendadores de Ruído Intercambiáveis (Noise Schedulers)
Modelos Pré-Treinados (Pretrained Models)
# Pacote oficial
pip install --upgrade diffusers[torch]
# Versão conda mantida pela comunidade
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
Tarefa | Pipeline | Modelo Recomendado |
---|---|---|
Geração de Imagem Incondicional | DDPMPipeline | google/ddpm-ema-church-256 |
Texto para Imagem | StableDiffusionPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
Texto para Imagem (unCLIP) | UnCLIPPipeline | kakaobrain/karlo-v1-alpha |
Texto para Imagem (DeepFloyd IF) | IFPipeline | DeepFloyd/IF-I-XL-v1.0 |
Texto para Imagem (Kandinsky) | KandinskyPipeline | kandinsky-community/kandinsky-2-2-decoder |
Geração Controlável | StableDiffusionControlNetPipeline | lllyasviel/sd-controlnet-canny |
Edição de Imagem | StableDiffusionInstructPix2PixPipeline | timbrooks/instruct-pix2pix |
Imagem para Imagem | StableDiffusionImg2ImgPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
Preenchimento de Imagem | StableDiffusionInpaintPipeline | runwayml/stable-diffusion-inpainting |
Variações de Imagem | StableDiffusionImageVariationPipeline | lambdalabs/sd-image-variations-diffusers |
Super Resolução de Imagem | StableDiffusionUpscalePipeline | stabilityai/stable-diffusion-x4-upscaler |
Super Resolução Latente | StableDiffusionLatentUpscalePipeline | stabilityai/sd-x2-latent-upscaler |
Tipo de Documento | Conteúdo de Aprendizagem |
---|---|
Tutorial | Aprenda as habilidades básicas da biblioteca, como usar modelos e agendadores para construir sistemas de difusão, treinar seus próprios modelos de difusão |
Loading | Como carregar e configurar todos os componentes da biblioteca (pipelines, modelos e agendadores) e como usar diferentes agendadores |
Pipelines for inference | Como usar pipelines para diferentes tarefas de inferência, geração em lote, controlar a saída de geração e aleatoriedade |
Optimization | Como otimizar pipelines para serem executados em hardware com memória limitada e acelerar a inferência |
Training | Como treinar seus próprios modelos de difusão para diferentes tarefas |
🤗 Diffusers é uma das bibliotecas de modelos de difusão mais completas e fáceis de usar atualmente. Ele não apenas fornece uma rica variedade de modelos e pipelines pré-treinados, mas também suporta treinamento e otimização personalizados. Quer você seja um pesquisador de IA, desenvolvedor ou criador, você pode encontrar as ferramentas necessárias nesta biblioteca para implementar várias aplicações de IA generativa.