Bibliothèque de modèles de diffusion de pointe, prenant en charge la génération d'images, de vidéos et d'audio.
Présentation détaillée du projet 🤗 Diffusers
Aperçu du projet
🤗 Diffusers est la bibliothèque de modèles de diffusion la plus avancée développée par Hugging Face, spécialisée dans la génération d'images, d'audio et même de structures moléculaires 3D. Que vous recherchiez des solutions d'inférence simples ou que vous souhaitiez entraîner vos propres modèles de diffusion, 🤗 Diffusers est une boîte à outils modulaire qui prend en charge les deux.
Adresse du projet : https://github.com/huggingface/diffusers
Caractéristiques principales
Philosophie de conception
- L'utilisabilité prime sur la performance (usability over performance)
- La simplicité prime sur la facilité (simple over easy)
- La personnalisation prime sur l'abstraction (customizability over abstractions)
Trois composants principaux
Pipelines de diffusion de pointe (Diffusion Pipelines)
- Exécutez l'inférence en quelques lignes de code
- Prend en charge diverses tâches de génération
Planificateurs de bruit interchangeables (Noise Schedulers)
- Prend en charge différentes vitesses de diffusion
- Qualité de sortie réglable
Modèles pré-entraînés (Pretrained Models)
- Peuvent être utilisés comme blocs de construction
- Combinés avec des planificateurs pour créer des systèmes de diffusion de bout en bout
Méthode d'installation
Version PyTorch
# Paquet officiel
pip install --upgrade diffusers[torch]
# Version conda maintenue par la communauté
conda install -c conda-forge diffusers
Version Flax
pip install --upgrade diffusers[flax]
Démarrage rapide
Génération de texte à image
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]
Système de diffusion personnalisé
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
Principales tâches et modèles pris en charge
Tâche | Pipeline | Modèle recommandé |
---|---|---|
Génération d'images inconditionnelle | DDPMPipeline | google/ddpm-ema-church-256 |
Texte à image | StableDiffusionPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
Texte à image (unCLIP) | UnCLIPPipeline | kakaobrain/karlo-v1-alpha |
Texte à image (DeepFloyd IF) | IFPipeline | DeepFloyd/IF-I-XL-v1.0 |
Texte à image (Kandinsky) | KandinskyPipeline | kandinsky-community/kandinsky-2-2-decoder |
Génération contrôlable | StableDiffusionControlNetPipeline | lllyasviel/sd-controlnet-canny |
Édition d'image | StableDiffusionInstructPix2PixPipeline | timbrooks/instruct-pix2pix |
Image à image | StableDiffusionImg2ImgPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
Restauration d'image | StableDiffusionInpaintPipeline | runwayml/stable-diffusion-inpainting |
Variations d'image | StableDiffusionImageVariationPipeline | lambdalabs/sd-image-variations-diffusers |
Super-résolution d'image | StableDiffusionUpscalePipeline | stabilityai/stable-diffusion-x4-upscaler |
Super-résolution d'espace latent | StableDiffusionLatentUpscalePipeline | stabilityai/sd-x2-latent-upscaler |
Structure de la documentation
Type de documentation | Contenu d'apprentissage |
---|---|
Tutorial | Apprendre les compétences de base de la bibliothèque, telles que l'utilisation de modèles et de planificateurs pour construire des systèmes de diffusion, et l'entraînement de vos propres modèles de diffusion |
Loading | Comment charger et configurer tous les composants de la bibliothèque (pipelines, modèles et planificateurs), et comment utiliser différents planificateurs |
Pipelines for inference | Comment utiliser les pipelines pour différentes tâches d'inférence, la génération par lots, le contrôle de la sortie de génération et du caractère aléatoire |
Optimization | Comment optimiser les pipelines pour fonctionner sur du matériel à mémoire limitée et accélérer l'inférence |
Training | Comment entraîner vos propres modèles de diffusion pour différentes tâches |
Écosystème communautaire
Projets intégrés
- Microsoft TaskMatrix
- InvokeAI
- InstantID
- Apple ML Stable Diffusion
- Lama Cleaner
- Grounded Segment Anything
- Stable DreamFusion
- DeepFloyd IF
- BentoML
- Kohya_ss
Résumé
🤗 Diffusers est l'une des bibliothèques de modèles de diffusion les plus complètes et les plus faciles à utiliser actuellement disponibles. Elle offre non seulement une riche collection de modèles et de pipelines pré-entraînés, mais prend également en charge l'entraînement et l'optimisation personnalisés. Que vous soyez chercheur en IA, développeur ou créateur, vous trouverez dans cette bibliothèque les outils nécessaires pour mettre en œuvre diverses applications d'IA générative.