Diffusers documentation
Tiny AutoEncoder
Tiny AutoEncoder
Tiny AutoEncoder for Stable Diffusion (TAESD) a été introduit dans madebyollin/taesd par Ollin Boer Bohan. Il s’agit d’une version distillée et compacte du VAE de Stable Diffusion, capable de décoder les latents d’un StableDiffusionPipeline ou d’un StableDiffusionXLPipeline quasi instantanément.
Pour l'utiliser avec Stable Diffusion v-2.1 :
import torch
from diffusers import DiffusionPipeline, AutoencoderTiny
pipe = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-1-base", dtype=torch.float16
)
pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesd", dtype=torch.float16)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
prompt = "slice of delicious New York-style berry cheesecake"
image = pipe(prompt, num_inference_steps=25).images[0]
imagePour utiliser avec Stable Diffusion XL 1.0
import torch
from diffusers import DiffusionPipeline, AutoencoderTiny
pipe = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16
)
pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesdxl", dtype=torch.float16)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
prompt = "slice of delicious New York-style berry cheesecake"
image = pipe(prompt, num_inference_steps=25).images[0]
imageAutoencoderTiny
classe diffusers.AutoencoderTiny
< source >( in_channels: int = 3out_channels: int = 3encoder_block_out_channels: tuple[int, ...] = (64, 64, 64, 64)decoder_block_out_channels: tuple[int, ...] = (64, 64, 64, 64)act_fn: str = 'relu'upsample_fn: str = 'nearest'latent_channels: int = 4upsampling_scaling_factor: int = 2num_encoder_blocks: tuple[int, ...] = (1, 3, 3, 3)num_decoder_blocks: tuple[int, ...] = (3, 3, 3, 1)latent_magnitude: int = 3latent_shift: float = 0.5force_upcast: bool = Falsescaling_factor: float = 1.0shift_factor: float = 0.0 )
Paramètres
- in_channels (
int, facultatif, par défaut 3) — Nombre de canaux de l'image d'entrée. - out_channels (
int, facultatif, par défaut 3) — Nombre de canaux dans la sortie. - encoder_block_out_channels (
tuple[int], facultatif, par défaut(64, 64, 64, 64)) — tuplet d'entiers représentant le nombre de canaux de sortie pour chaque bloc encodeur. La longueur du tuplet doit être égale au nombre de blocs encodeurs. - decoder_block_out_channels (
tuple[int], facultatif, par défaut(64, 64, 64, 64)) — tuplet d'entiers représentant le nombre de canaux de sortie pour chaque bloc du décodeur. La longueur du tuplet doit être égale au nombre de blocs du décodeur. - act_fn (
str, facultatif, par défaut"relu") — Fonction d'activation à utiliser dans tout le modèle. - latent_channels (
int, facultatif, valeur par défaut 4) — Nombre de canaux dans la représentation latente. L’espace latent agit comme une représentation compressée de l’image d’entrée. - upsampling_scaling_factor (
int, facultatif, valeur par défaut 2) — Facteur d'échelle pour le suréchantillonnage dans le décodeur. Il détermine la taille de l'image de sortie lors du processus de suréchantillonnage. - num_encoder_blocks (
tuple[int], facultatif, valeur par défaut(1, 3, 3, 3)) — tuplet d'entiers représentant le nombre de blocs d'encodeur à chaque étape du processus d'encodage. La longueur du tuplet doit être égale au nombre d'étapes de l'encodeur. Chaque étape possède un nombre différent de blocs d'encodeur. - num_decoder_blocks (
tuple[int], facultatif, valeur par défaut(3, 3, 3, 1)) — tuplet d'entiers représentant le nombre de blocs décodeur à chaque étape du processus de décodage. La longueur du tuplet doit être égale au nombre d'étapes du décodeur. Chaque étape possède un nombre différent de blocs décodeur. - latent_magnitude (
float, facultatif, valeur par défaut 3.0) — Magnitude de la représentation latente. Ce paramètre met à l'échelle les valeurs de la représentation latente pour contrôler le degré de préservation de l'information. - latent_shift (float, facultatif, valeur par défaut 0.5) — Décalage appliqué à la représentation latente. Ce paramètre contrôle le centre de l'espace latent.
- scaling_factor (
float, facultatif, valeur par défaut 1.0) — L'écart-type par composante de l'espace latent entraîné, calculé à l'aide du premier lot du jeu d'entraînement. Il est utilisé pour mettre à l'échelle l'espace latent afin qu'il ait une variance unitaire lors de l'entraînement du modèle de diffusion. Les latents sont mis à l'échelle avec la formulez = z * scaling_factoravant d'être transmis au modèle de diffusion. Lors du décodage, les latents sont remis à l'échelle d'origine avec la formule :z = 1 / scaling_factor * z. Pour plus de détails, consultez les sections 4.3.2 et D.1 de l'article High-Resolution Image Synthesis with Latent Diffusion Models. Pour ce Autoencoder, cependant, aucun facteur d'échelle de ce type n'a été utilisé, d'où la valeur de 1.0 par défaut. - force_upcast (
bool, facultatif, par défautFalse) — Si activé, force le VAE à s’exécuter en float32 pour les pipelines à haute résolution d’image, tels que SD-XL. Le VAE peut être affiné / entraîné sur une plage inférieure sans perdre trop de précision, auquel casforce_upcastpeut être défini surFalse(voir ce AutoEncoder compatible fp16).
Un petit modèle VAE distillé pour encoder des images en latents et décoder des représentations latentes en images.
AutoencoderTiny est un wrapper autour de l'implémentation originale de TAESD.
Ce modèle hérite de ModelMixin. Consultez la documentation de la classe parente pour ses méthodes génériques implémentées pour tous les modèles (téléchargement ou sauvegarde, par exemple).
forward
< source >( sample: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
Paramètres
- sample (
torch.Tensor) — Échantillon d'entrée. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner unDecoderOutputplutôt qu'un simple tuple.
Retourne
DecoderOutput ou tuple
Si return_dict est True, un DecoderOutput est renvoyé, sinon un simple tuple est renvoyé.
latents bruts -> [0, 1]
[0, 1] -> latents bruts
AutoencoderTinyOutput
classe diffusers.models.autoencoders.autoencoder_tiny.AutoencoderTinyOutput
< source >( latents: Tensor )
Sortie de la méthode d'encodage d'AutoencoderTiny.