? Diffusoren sind die Anlaufstelle für hochmoderne vorbereitete Diffusionsmodelle zum Erzeugen von Bildern, Audio und sogar 3D-Strukturen von Molekülen. Egal, ob Sie nach einer einfachen Inferenzlösung suchen oder Ihre eigenen Diffusionsmodelle trainieren? Diffusers ist eine modulare Toolbox, die beides unterstützt. Unsere Bibliothek konzentriert sich auf die Benutzerfreundlichkeit über Leistung, einfach über einfach und die Anpassbarkeit gegenüber Abstraktionen.
? Diffusorers bietet drei Kernkomponenten an:
Wir empfehlen die Installation? Diffusoren in einer virtuellen Umgebung von PYPI oder Conda. Weitere Informationen zur Installation von Pytorch und Flachs finden Sie in der offiziellen Dokumentation.
Mit pip
(offizielles Paket):
pip install --upgrade diffusers[torch]
Mit conda
(von der Gemeinschaft gepflegt):
conda install -c conda-forge diffusers
Mit pip
(offizielles Paket):
pip install --upgrade diffusers[flax]
Weitere Informationen finden Sie in der Verwendung einer stabilen Diffusion im Apple Silicon Guide.
Ausgänge erzeugen ist super einfach mit? Diffusoren. Um ein Bild aus dem Text zu generieren, verwenden Sie die von der from_pretrained
Methode, um ein vorgezogenes Diffusionsmodell zu laden (durchsuchen Sie den Hub für mehr als 30.000 Kontrollpunkte):
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 ]
Sie können auch in die Modelle und Schedulers Toolbox eintauchen, um Ihr eigenes Diffusionssystem zu erstellen:
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
Schauen Sie sich den QuickStart an, um Ihre Diffusionsreise noch heute zu starten!
Dokumentation | Was kann ich lernen? |
---|---|
Tutorial | Ein grundlegender Crash -Kurs zum Erlernen, wie die wichtigsten Funktionen der Bibliothek wie Modelle und Scheduler verwendet werden, um Ihr eigenes Diffusionssystem zu erstellen und Ihr eigenes Diffusionsmodell zu trainieren. |
Laden | Anleitungen zum Laden und Konfigurieren aller Komponenten (Pipelines, Modelle und Scheduler) der Bibliothek sowie der Verwendung verschiedener Scheduler. |
Pipelines für Inferenz | Anleitungen zur Verwendung von Pipelines für unterschiedliche Inferenzaufgaben, die Erzeugung, steuern erzeugte Ausgänge und Zufälligkeit und wie eine Pipeline in die Bibliothek beiträgt. |
Optimierung | Anleitungen, wie Sie Ihr Diffusionsmodell optimieren, um schneller zu laufen und weniger Speicher zu verbrauchen. |
Ausbildung | Anleitungen zum Training eines Diffusionsmodells für verschiedene Aufgaben mit unterschiedlichen Trainingstechniken. |
Wir sind Beiträge der Open-Source-Community! Wenn Sie zu dieser Bibliothek beitragen möchten, lesen Sie bitte unseren Beitragsleitfaden. Sie können nach Problemen achten, die Sie angehen möchten, um zur Bibliothek beizutragen.
Sagen Sie auch in unserem öffentlichen Discord -Kanal. Wir diskutieren die heißesten Trends über Diffusionsmodelle, helfen sich gegenseitig bei Beiträgen, persönlichen Projekten oder hängen einfach nur ☕ ab.
Aufgabe | Pipeline | ? Nabe |
---|---|---|
Bedingungslose Bildgenerierung | Ddpm | Google/DDPM-EMA-Church-256 |
Text-to-Image | Stabiler Diffusionstext-zu-Image | stabiler Diffusion-V1-5/Stabil-Diffusion-V1-5 |
Text-to-Image | ausschütten | Kakaobrain/Karlo-V1-Alpha |
Text-to-Image | Deepfloyd wenn | Deepfloyd/if-i-xl-v1.0 |
Text-to-Image | Kandinsky | Kandinsky-Community/Kandinsky-2-2-Decoder |
Textgesteuerter Bild-zu-Image | ControlNet | lllyasviel/sd-controlnet-canny |
Textgesteuerter Bild-zu-Image | InstructPix2Pix | Timbrooks/Instruct-Pix2Pix |
Textgesteuerter Bild-zu-Image | Stabiles Diffusionsbild-zu-Image | stabiler Diffusion-V1-5/Stabil-Diffusion-V1-5 |
Textgesteuerte Bildinstrengung | Stabile Diffusions -Inpainting | Runwayml/Stable-Diffusion-Inpainting |
Bildvariation | Stabile Diffusionsbildvariation | Lambdalabs/SD-Image-Variationen-Diffuser |
Superauflösung | Stabile Diffusion gehoben | Stabilityai/Stable-Diffusion-X4-Upscaler |
Superauflösung | Stabile diffusion latent gehoben | Stabilityai/SD-X2-Latent-Upscaler |
Vielen Dank, dass Sie uns verwendet haben.
Diese Bibliothek konkretisiert frühere Arbeiten vieler verschiedener Autoren und wäre ohne ihre großartigen Forschung und Implementierungen nicht möglich gewesen. Insbesondere die folgenden Implementierungen, die uns bei unserer Entwicklung geholfen haben und ohne die die API heute nicht so poliert werden konnte:
Wir möchten uns auch bei @heejkoo für den sehr hilfreichen Überblick über Papiere, Code und Ressourcen für Diffusionsmodelle bedanken, die hier verfügbar sind, sowie @crowsonkb und @Rromb für nützliche Diskussionen und Erkenntnisse.
@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} }
}