Diffusers documentation
Stable Cascade
Stable Cascade
Ce modèle est construit sur l'architecture Würstchen et sa principale différence par rapport à d'autres modèles comme Stable Diffusion est qu'il fonctionne dans un espace latent beaucoup plus petit. Pourquoi est-ce important ? Plus l'espace latent est petit, plus vous pouvez exécuter l'inférence rapidement et plus l'entraînement devient économique. Quelle est la taille de l'espace latent ? Stable Diffusion utilise un facteur de compression de 8, ce qui entraîne l'encodage d'une image de 1024x1024 en 128x128. Stable Cascade atteint un facteur de compression de 42, ce qui signifie qu'il est possible d'encoder une image de 1024x1024 en 24x24, tout en maintenant des reconstructions nettes. Le modèle conditionné par le texte est ensuite entraîné dans cet espace latent fortement compressé. Les versions précédentes de cette architecture ont permis une réduction des coûts de 16 par rapport à Stable Diffusion 1.5.
Par conséquent, ce type de modèle est bien adapté aux cas d’usage où l’efficacité est importante. De plus, toutes les extensions connues, telles que le finetuning, LoRA, ControlNet, IP-Adapter, LCM, etc., sont également possibles avec cette méthode.
Le code source original peut être trouvé sur Stability-AI/StableCascade.
Aperçu du modèle
Stable Cascade est composé de trois modèles : Stage A, Stage B et Stage C, représentant une cascade pour générer des images, d’où le nom « Stable Cascade ».
Les étapes A & B sont utilisées pour compresser les images, de manière similaire au rôle du VAE dans Stable Diffusion. Cependant, avec cette configuration, une compression des images beaucoup plus élevée peut être obtenue. Alors que les modèles Stable Diffusion utilisent un facteur de compression spatiale de 8, encodant une image de résolution 1024 x 1024 en 128 x 128, Stable Cascade atteint un facteur de compression de 42. Cela encode une image de 1024 x 1024 en 24 x 24, tout en étant capable de décoder l'image avec précision. Cela s'accompagne du grand avantage d'un entraînement et d'une inférence moins coûteux. De plus, l'étape C est responsable de la génération des petits latents de 24 x 24 à partir d'un prompt texte.
Le modèle Stage C fonctionne sur les latents de petite taille 24 x 24 et débruite les latents conditionnés par des prompts texte. Le modèle est également le composant le plus volumineux du pipeline Cascade et est destiné à être utilisé avec le StableCascadePriorPipeline
Les modèles Stage B et Stage A sont utilisés avec le StableCascadeDecoderPipeline et sont chargés de générer l'image finale à partir des latents de petite taille 24 x 24.
Il existe certaines restrictions sur les types de données pouvant être utilisés avec les modèles Stable Cascade. Les points de contrôle officiels pour le
StableCascadePriorPipelinene prennent pas en charge le type de donnéestorch.float16. Veuillez utilisertorch.bfloat16à la place.Afin d'utiliser le type de données
torch.bfloat16avec leStableCascadeDecoderPipeline, vous devez avoir PyTorch 2.2.0 ou une version supérieure installée. Cela signifie également que l'utilisation duStableCascadeCombinedPipelineavectorch.bfloat16nécessite PyTorch 2.2.0 ou une version supérieure, car il appelle leStableCascadeDecoderPipelineen interne.S'il n'est pas possible d'installer PyTorch 2.2.0 ou une version supérieure dans votre environnement, le
StableCascadeDecoderPipelinepeut être utilisé seul avec le type de donnéestorch.float16. Vous pouvez télécharger les poids de la variante pleine précision oubf16du pipeline et convertir les poids entorch.float16.
Exemple d'utilisation
import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", dtype=torch.float16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.to(torch.float16),
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")Utilisation des versions Lite des modèles des étapes B et C
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")Chargement des points de contrôle originaux avec from_single_file
Le chargement des points de contrôle au format d'origine est pris en charge via la méthode from_single_file dans StableCascadeUNet.
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
dtype=torch.bfloat16
)
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, dtype=torch.bfloat16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")Utilisations
Utilisation directe
Le modèle est destiné à des fins de recherche pour le moment. Les domaines et tâches de recherche possibles incluent
- Recherches sur les modèles génératifs.
- Déploiement en toute sécurité de modèles susceptibles de générer du contenu nuisible.
- Analyser et comprendre les limites et les biais des modèles génératifs.
- Génération d’œuvres d’art et utilisation dans le design et d’autres processus artistiques.
- Applications dans les outils éducatifs ou créatifs.
Les utilisations exclues sont décrites ci-dessous.
Utilisation hors périmètre
Le modèle n’a pas été entraîné pour fournir des représentations factuelles ou véridiques de personnes ou d’événements, et l’utilisation du modèle pour générer ce type de contenu dépasse donc le cadre des capacités de ce modèle. Le modèle ne doit pas être utilisé de manière à enfreindre la Politique d’utilisation acceptable de Stability AI.
Limites et biais
Limites
- Les visages et les personnes en général peuvent ne pas être générés correctement.
- La partie d'auto-encodage du modèle est avec perte.
StableCascadeCombinedPipeline
classe diffusers.StableCascadeCombinedPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectiondecoder: StableCascadeUNetscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModelprior_prior: StableCascadeUNetprior_text_encoder: CLIPTextModelWithProjectionprior_tokenizer: CLIPTokenizerprior_scheduler: DDPMWuerstchenSchedulerprior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneprior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
Paramètres
- tokenizer (
CLIPTokenizer) — Le tokenizer de décodeur à utiliser pour les entrées texte. - text_encoder (
CLIPTextModelWithProjection) — Encodeur de texte du décodeur à utiliser pour les entrées textuelles. - decoder (
StableCascadeUNet) — Le modèle de décodeur à utiliser pour le pipeline de génération d’images par décodage. - scheduler (
DDPMWuerstchenScheduler) — Le planificateur à utiliser pour le pipeline de génération d’images du décodeur. - vqgan (
PaellaVQModel) — Le modèle VQGAN à utiliser pour le pipeline de génération d’images par décodeur. - prior_prior (
StableCascadeUNet) — Le modèle prior à utiliser pour le pipeline prior. - prior_text_encoder (
CLIPTextModelWithProjection) — Encodeur de texte prioritaire à utiliser pour les entrées textuelles. - prior_tokenizer (
CLIPTokenizer) — Le tokenizer prior à utiliser pour les entrées texte. - prior_scheduler (
DDPMWuerstchenScheduler) — Le planificateur à utiliser pour le pipeline prior. - prior_feature_extractor (CLIPImageProcessor) —
Modèle qui extrait les caractéristiques des images générées afin de les utiliser comme entrées pour le
image_encoder. - prior_image_encoder (
CLIPVisionModelWithProjection) — Encodeur d’images CLIP figé (clip-vit-large-patch14).
Pipeline combiné pour la génération d'images à partir de texte utilisant Stable Cascade.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 512width: int = 512prior_num_inference_steps: int = 60prior_guidance_scale: float = 4.0num_inference_steps: int = 12decoder_guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueprior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Noneprior_callback_on_step_end_tensor_inputs: list = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Paramètres
- prompt (
stroulist[str]) — Le prompt ou les prompts pour guider la génération d’image du prior et du décodeur. - images (
torch.Tensor,PIL.Image.Image,list[torch.Tensor],list[PIL.Image.Image], optional) — The images to guide the image generation for the prior. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. Ignoré lorsque la guidance n’est pas utilisée (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés pour le prior. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - prompt_embeds_pooled (
torch.Tensor, facultatif) — Embeddings de texte pré-générés pour le prior. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés pour le prior. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés pour le prior. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - height (
int, facultatif, par défaut 512) — La hauteur en pixels de l'image générée. - width (
int, facultatif, par défaut 512) — La largeur en pixels de l'image générée. - prior_guidance_scale (
float, facultatif, valeur par défaut 4.0) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.prior_guidance_scaleest défini commewde l'équation 2. de Imagen Paper. L'échelle de guidage est activée en définissantprior_guidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées auprompttexte, généralement au détriment de la qualité de l'image. - prior_num_inference_steps (
int | dict[float, int], facultatif, valeur par défaut : 60) — Le nombre d'étapes de débruitage a priori. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. Pour un espacement plus spécifique des pas de temps, vous pouvez passer desprior_timestepspersonnalisés - num_inference_steps (
int, optional, defaults to 12) — The number of decoder denoising steps. More denoising steps usually lead to a higher quality image at the expense of slower inference. For more specific timestep spacing, you can pass customizedtimesteps - decoder_guidance_scale (
float, facultatif, valeur par défaut 0.0) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2 de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre :"pil"(PIL.Image.Image),"np"(np.array) ou"pt"(torch.Tensor). - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un ImagePipelineOutput plutôt qu'un simple tuple. - prior_callback_on_step_end (
Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l’inférence. La fonction est appelée avec les arguments suivants :prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). - prior_callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctionprior_callback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - callback_on_step_end (
Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline.
Fonction appelée lors de l'appel du pipeline pour la génération.
Exemples :
>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline
>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
... "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)enable_model_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Décharge tous les modèles sur le CPU à l'aide de accelerate, réduisant ainsi l'utilisation de la mémoire avec un impact faible sur les performances. Par rapport à enable_sequential_cpu_offload, cette méthode déplace un modèle entier à la fois sur le GPU lorsque sa méthode forward est appelée, et le modèle reste sur le GPU jusqu'à l'exécution du modèle suivant. Les économies de mémoire sont moindres qu'avec enable_sequential_cpu_offload, mais les performances sont bien meilleures grâce à l'exécution itérative de unet.
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Décharge tous les modèles (les dictionnaires d’état de unet, text_encoder, vae et du safety checker) sur le CPU à l’aide de 🤗
Accelerate, réduisant ainsi considérablement l’utilisation de la mémoire. Les modèles sont déplacés vers un torch.device('meta') et chargés sur un
GPU uniquement lorsque la méthode forward de leur sous-module spécifique est appelée. La décharge s’effectue au niveau des sous-modules.
Les économies de mémoire sont supérieures à celles obtenues avec enable_model_cpu_offload, mais les performances sont inférieures.
StableCascadePriorPipeline
classe diffusers.StableCascadePriorPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionprior: StableCascadeUNetscheduler: DDPMWuerstchenSchedulerresolution_multiple: float = 42.67feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
Paramètres
- prior (
StableCascadeUNet) — Le Stable Cascade prior servant à approximer l’embedding d’image à partir de l’embedding de texte et/ou d’image. - text_encoder (
CLIPTextModelWithProjection) — Encodeur de texte figé (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). - feature_extractor (CLIPImageProcessor) —
Modèle qui extrait les caractéristiques des images générées afin de les utiliser en tant qu'entrées pour le
image_encoder. - image_encoder (
CLIPVisionModelWithProjection) — Encodeur d’images CLIP figé (clip-vit-large-patch14). - tokenizer (
CLIPTokenizer) — Tokeniseur de la classe CLIPTokenizer. - scheduler (
DDPMWuerstchenScheduler) — Un scheduler à utiliser en combinaison avecpriorpour générer l’embedding d’image. - resolution_multiple (‘float’, facultatif, valeur par défaut 42.67) — Résolution par défaut pour les images multiples générées.
Pipeline pour générer un a priori d'image pour Stable Cascade.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 1024width: int = 1024num_inference_steps: int = 20timesteps: list = Noneguidance_scale: float = 4.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Noneimage_embeds: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pt'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Paramètres
- prompt (
stroulist[str]) — Le prompt ou les prompts pour guider la génération d’image. - images (
torch.Tensor,PIL.Image.Image,list[torch.Tensor]oulist[PIL.Image.Image], facultatif) — Image(s) de référence utilisée(s) pour conditionner la génération du prior. Si fournies, les embeddings d’image sont dérivés de l’image et combinés avec le prompt texte. - height (
int, facultatif, par défaut 1024) — La hauteur en pixels de l'image générée. - width (
int, facultatif, par défaut 1024) — La largeur en pixels de l'image générée. - num_inference_steps (
int, facultatif, valeur par défaut 60) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[float], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - guidance_scale (
float, facultatif, valeur par défaut 8.0) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.decoder_guidance_scaleest défini commewde l'équation 2. de Imagen Paper. L'échelle de guidage est activée en définissantdecoder_guidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées auprompttexte, généralement au détriment de la qualité de l'image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. Ignoré lorsque la guidance n’est pas utilisée (c’est-à-dire ignoré sidecoder_guidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - prompt_embeds_pooled (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds_pooled sera généré à partir de l'argument d'entréenegative_prompt. - image_embeds (
torch.Tensor, facultatif) — Embeddings d’image pré-générés. Peut être utilisé pour ajuster facilement les entrées d’image, par ex. le pondération des prompts. S’il n’est pas fourni, les embeddings d’image seront générés à partir de l’argument d’entréeimages’il existe. - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre :"pil"(PIL.Image.Image),"np"(np.array) ou"pt"(torch.Tensor). - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un ImagePipelineOutput plutôt qu'un simple tuple. - callback_on_step_end (
Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline.
Fonction appelée lors de l'appel du pipeline pour la génération.
Exemples :
>>> import torch
>>> from diffusers import StableCascadePriorPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)StableCascadePriorPipelineOutput
classe diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput
< source >( image_embeddings: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray] )
Classe de sortie pour WuerstchenPriorPipeline.
StableCascadeDecoderPipeline
classe diffusers.StableCascadeDecoderPipeline
< source >( decoder: StableCascadeUNettokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModellatent_dim_scale: float = 10.67 )
Paramètres
- tokenizer (
CLIPTokenizer) — Le tokenizer CLIP. - text_encoder (
CLIPTextModelWithProjection) — Le codeur de texte CLIP. - decoder (
StableCascadeUNet) — Le unet du décodeur Stable Cascade. - vqgan (
PaellaVQModel) — Le modèle VQGAN. - scheduler (
DDPMWuerstchenScheduler) — Un scheduler à utiliser en combinaison avecpriorpour générer l’embedding d’image. - latent_dim_scale (float,
optional, defaults to 10.67) — Multiplier to determine the VQ latent space size from the image embeddings. If the image embeddings are height=24 and width=24, the VQ latent shape needs to be height=int(2410.67)=256 and width=int(2410.67)=256 in order to match the training conditions.
Pipeline pour générer des images à partir du modèle Stable Cascade.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
__call__
< source >( image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]]prompt: str | list[str] = Nonenum_inference_steps: int = 10guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Paramètres
- image_embeddings (
torch.Tensoroulist[torch.Tensor]) — Embeddings d’image extraits d’une image ou générés par un modèle prioritaire. - prompt (
stroulist[str]) — Le prompt ou les prompts pour guider la génération d’image. - num_inference_steps (
int, facultatif, valeur par défaut 12) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - guidance_scale (
float, facultatif, valeur par défaut 0.0) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.decoder_guidance_scaleest défini commewde l’équation 2. de Imagen Paper. L’échelle de guidage est activée en définissantdecoder_guidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. Ignoré lorsque la guidance n’est pas utilisée (c’est-à-dire ignoré sidecoder_guidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - prompt_embeds_pooled (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds_pooled sera généré à partir de l'argument d'entréenegative_prompt. - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre :"pil"(PIL.Image.Image),"np"(np.array) ou"pt"(torch.Tensor). - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un ImagePipelineOutput plutôt qu'un simple tuple. - callback_on_step_end (
Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline.
Fonction appelée lors de l'appel du pipeline pour la génération.
Exemples :
>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
... "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)