? Les diffuseurs sont la bibliothèque incontournable pour les modèles de diffusion prétraités de pointe pour générer des images, audio et même des structures 3D de molécules. Que vous recherchiez une solution d'inférence simple ou que vous formiez vos propres modèles de diffusion ,? Diffusers est une boîte à outils modulaire qui prend en charge les deux. Notre bibliothèque est conçue en mettant l'accent sur la convivialité sur les performances, simple sur facile et personnalisabilité sur les abstractions.
? DIFFUSERS propose trois composants centraux:
Nous vous recommandons d'installer? Diffuseurs dans un environnement virtuel de PYPI ou Conda. Pour plus de détails sur l'installation de pytorch et de lin, veuillez vous référer à leur documentation officielle.
Avec pip
(package officiel):
pip install --upgrade diffusers[torch]
Avec conda
(entretenu par la communauté):
conda install -c conda-forge diffusers
Avec pip
(package officiel):
pip install --upgrade diffusers[flax]
Veuillez vous référer à la diffusion stable dans le guide de silicium Apple.
La génération de sorties est super facile avec? Diffuseurs. Pour générer une image à partir de texte, utilisez la méthode from_pretrained
pour charger tout modèle de diffusion pré-entraîné (parcourez le concentrateur pour plus de 30 000 points de contrôle):
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 ]
Vous pouvez également creuser dans la boîte à outils des modèles et des planificateurs pour créer votre propre système de diffusion:
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
Découvrez le QuickStart pour lancer votre voyage de diffusion aujourd'hui!
Documentation | Que puis-je apprendre? |
---|---|
Tutoriel | Un cours intensif de base pour apprendre à utiliser les fonctionnalités les plus importantes de la bibliothèque telles que l'utilisation de modèles et de planificateurs pour créer votre propre système de diffusion et former votre propre modèle de diffusion. |
Chargement | Guides pour charger et configurer tous les composants (pipelines, modèles et planificateurs) de la bibliothèque, ainsi que comment utiliser différents planificateurs. |
Pipelines pour l'inférence | Guides pour utiliser les pipelines pour différentes tâches d'inférence, génération par lots, contrôler les sorties et le hasard générés, et comment contribuer un pipeline à la bibliothèque. |
Optimisation | Guides pour optimiser votre modèle de diffusion pour exécuter plus rapidement et consommer moins de mémoire. |
Entraînement | Guides pour former un modèle de diffusion pour différentes tâches avec différentes techniques de formation. |
Nous ❤️ contributions de la communauté open source! Si vous souhaitez contribuer à cette bibliothèque, veuillez consulter notre guide de contribution. Vous pouvez rechercher des problèmes que vous souhaitez résoudre pour contribuer à la bibliothèque.
Par exemple, dans notre canal de discorde publique. Nous discutons des tendances les plus chaudes sur les modèles de diffusion, nous nous aidons avec les contributions, les projets personnels ou traînent simplement ☕.
Tâche | Pipeline | ? Moyeu |
---|---|---|
Génération d'images inconditionnelle | DDPM | Google / DDPM-EMA Church-256 |
Texte à l'image | Texte de diffusion stable à l'image | stable-diffusion-v1-5 / stable-diffusion-v1-5 |
Texte à l'image | déboucher | kakaobrain / karlo-v1-alpha |
Texte à l'image | Deepfloyd si | Deepfloyd / if-i-xl-v1.0 |
Texte à l'image | Kandinsky | Kandinsky-Community / Kandinsky-2-2-Decoder |
Image à l'image guidée par texte | Contrôle | lllyasviel / sd-controlnet-canny |
Image à l'image guidée par texte | Instructpix2pix | timbrooks / instruct-pix2pix |
Image à l'image guidée par texte | Image à diffusion stable | stable-diffusion-v1-5 / stable-diffusion-v1-5 |
Image guidé par texte | Diffusion stable entre la déintre | RunwayML / stable-diffusion-dépensier |
Variation d'image | Variation d'image de diffusion stable | Lambdalabs / Sd-Image-Variations-Diffusers |
Super résolution | Diffusion stable haut de gamme | stabilité / stable-diffusion-x4-upcaleur |
Super résolution | Diffusion stable haut de gamme | stabilitéi / sd-x2-late-upcaleur |
Merci de nous utiliser ❤️.
Cette bibliothèque concrétise les travaux antérieurs de nombreux auteurs différents et n'aurait pas été possible sans leurs grandes recherches et implémentations. Nous tenons à remercier, en particulier, les implémentations suivantes qui nous ont aidées dans notre développement et sans laquelle l'API n'aurait pas pu être aussi polie aujourd'hui:
Nous tenons également à remercier @heejkoo pour le très grand aperçu des articles, du code et des ressources sur les modèles de diffusion, disponibles ici ainsi que @CrowSonKB et @RROM pour les discussions et les idées utiles.
@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} }
}