Eine fortschrittliche Bibliothek für Diffusionsmodelle, die die Generierung von Bildern, Videos und Audio unterstützt.
🤗 Diffusers Projekt – Detaillierte Vorstellung
Projektübersicht
🤗 Diffusers ist die hochmoderne Bibliothek für Diffusionsmodelle von Hugging Face, die speziell für die Generierung von Bildern, Audio und sogar molekularen 3D-Strukturen entwickelt wurde. Egal, ob Sie nach einfachen Inferenzlösungen suchen oder Ihre eigenen Diffusionsmodelle trainieren möchten, 🤗 Diffusers ist ein modularer Werkzeugkasten, der beides unterstützt.
Projektadresse: https://github.com/huggingface/diffusers
Kernfunktionen
Designphilosophie
- Benutzerfreundlichkeit vor Leistung (usability over performance)
- Einfachheit vor Bequemlichkeit (simple over easy)
- Anpassbarkeit vor Abstraktionen (customizability over abstractions)
Drei Kernkomponenten
Hochmoderne Diffusions-Pipelines (Diffusion Pipelines)
- Inferenz mit nur wenigen Codezeilen ausführen
- Unterstützung für verschiedene Generierungsaufgaben
Austauschbare Rausch-Scheduler (Noise Schedulers)
- Unterstützung für unterschiedliche Diffusionsgeschwindigkeiten
- Anpassbare Ausgabequalität
Vorab trainierte Modelle (Pretrained Models)
- Können als Bausteine verwendet werden
- In Kombination mit Schedulern zur Erstellung von End-to-End-Diffusionssystemen
Installationsmethoden
PyTorch Version
# Offizielles Paket
pip install --upgrade diffusers[torch]
# Von der Community gepflegte Conda-Version
conda install -c conda-forge diffusers
Flax Version
pip install --upgrade diffusers[flax]
Schnellstart
Text-zu-Bild-Generierung
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]
Benutzerdefiniertes Diffusionssystem
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
Unterstützte Hauptaufgaben und Modelle
Aufgabe | Pipeline | Empfohlenes Modell |
---|---|---|
Unbedingte Bildgenerierung | DDPMPipeline | google/ddpm-ema-church-256 |
Text zu Bild | StableDiffusionPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
Text zu Bild (unCLIP) | UnCLIPPipeline | kakaobrain/karlo-v1-alpha |
Text zu Bild (DeepFloyd IF) | IFPipeline | DeepFloyd/IF-I-XL-v1.0 |
Text zu Bild (Kandinsky) | KandinskyPipeline | kandinsky-community/kandinsky-2-2-decoder |
Kontrollierbare Generierung | StableDiffusionControlNetPipeline | lllyasviel/sd-controlnet-canny |
Bildbearbeitung | StableDiffusionInstructPix2PixPipeline | timbrooks/instruct-pix2pix |
Bild zu Bild | StableDiffusionImg2ImgPipeline | stable-diffusion-v1-5/stable-diffusion-v1-5 |
Bildreparatur | StableDiffusionInpaintPipeline | runwayml/stable-diffusion-inpainting |
Bildvarianten | StableDiffusionImageVariationPipeline | lambdalabs/sd-image-variations-diffusers |
Bild-Superauflösung | StableDiffusionUpscalePipeline | stabilityai/stable-diffusion-x4-upscaler |
Latente Raum-Superauflösung | StableDiffusionLatentUpscalePipeline | stabilityai/sd-x2-latent-upscaler |
Dokumentstruktur
Dokumenttyp | Lerninhalte |
---|---|
Tutorial | Erlernen der grundlegenden Fähigkeiten der Bibliothek, wie z. B. die Verwendung von Modellen und Schedulern zum Aufbau von Diffusionssystemen, das Trainieren eigener Diffusionsmodelle |
Loading | Wie man alle Komponenten der Bibliothek (Pipelines, Modelle und Scheduler) lädt und konfiguriert und wie man verschiedene Scheduler verwendet |
Pipelines for inference | Wie man Pipelines für verschiedene Inferenzaufgaben, Batch-Generierung, Steuerung der Generierungsausgabe und Zufälligkeit verwendet |
Optimization | Wie man Pipelines optimiert, um sie auf Hardware mit begrenztem Speicher auszuführen und die Inferenz zu beschleunigen |
Training | Wie man eigene Diffusionsmodelle für verschiedene Aufgaben trainiert |
Community-Ökosystem
Integrierte Projekte
- Microsoft TaskMatrix
- InvokeAI
- InstantID
- Apple ML Stable Diffusion
- Lama Cleaner
- Grounded Segment Anything
- Stable DreamFusion
- DeepFloyd IF
- BentoML
- Kohya_ss
Zusammenfassung
🤗 Diffusers ist derzeit eine der vollständigsten und benutzerfreundlichsten Bibliotheken für Diffusionsmodelle. Sie bietet nicht nur eine Vielzahl von vortrainierten Modellen und Pipelines, sondern unterstützt auch benutzerdefiniertes Training und Optimierung. Ob KI-Forscher, Entwickler oder Kreative, in dieser Bibliothek finden Sie die Werkzeuge, die Sie benötigen, um verschiedene generative KI-Anwendungen zu realisieren.