Buckets:
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 chargée de générer les 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 ; 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 en aucun cas ê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[[diffusers.StableCascadeCombinedPipeline]]
diffusers.StableCascadeCombinedPipeline[[diffusers.StableCascadeCombinedPipeline]]
diffusers.StableCascadeCombinedPipeline(tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, decoder: StableCascadeUNet, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, prior_prior: StableCascadeUNet, prior_text_encoder: CLIPTextModelWithProjection, prior_tokenizer: CLIPTokenizer, prior_scheduler: DDPMWuerstchenScheduler, prior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, prior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None)
Paramètres :
tokenizer (CLIPTokenizer) : Le tokenizer de décodeur à utiliser pour les entrées de texte.
text_encoder (CLIPTextModelWithProjection) : encodeur de texte du décodeur à utiliser pour les entrées textuelles.
decoder (StableCascadeUNet) : Le modèle 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) : l'encodeur de texte précédent à utiliser pour les entrées textuelles.
prior_tokenizer (CLIPTokenizer) : le tokenizer précédent à 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 pour être utilisées 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 (téléchargement ou sauvegarde, exécution sur un appareil particulier, etc.).
appel[[diffusers.StableCascadeCombinedPipeline.call]]
__call__(prompt: str | list[str] | None = None, images: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = None, height: int = 512, width: int = 512, prior_num_inference_steps: int = 60, prior_guidance_scale: float = 4.0, num_inference_steps: int = 12, decoder_guidance_scale: float = 0.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, prior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, prior_callback_on_step_end_tensor_inputs: list[str] = ['latents'], callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
Paramètres :
prompt (str ou list[str]) : Le prompt ou les prompts pour guider la génération d'image pour le prior et le décodeur.
images (torch.Tensor, PIL.Image.Image, list[torch.Tensor], list[PIL.Image.Image], facultatif) : Les images destinées à guider la génération d’images pour le prior.
negative_prompt (str ou list[str], facultatif) : Le prompt 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é si guidance_scale est inférieur à 1).
prompt_embeds (torch.Tensor, facultatif) : Incrustations de texte pré-générées pour l'antérieur. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée prompt.
prompt_embeds_pooled (torch.Tensor, facultatif) : Incrustations de texte pré-générées pour l'antérieur. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée prompt.
negative_prompt_embeds (torch.Tensor, facultatif) : Embeddings de texte négatif 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ée negative_prompt.
negative_prompt_embeds_pooled (torch.Tensor, facultatif) : Embeddings de texte négatif 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ée negative_prompt.
num_images_per_prompt (int, facultatif, valeur par défaut 1) : Le nombre d'images à générer par invite.
height (int, facultatif, valeur par défaut 512) : La hauteur en pixels de l'image générée.
width (int, facultatif, valeur 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_scale est défini comme w de l'équation 2. de Imagen Paper. L'échelle de guidage est activée en définissant prior_guidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au prompt texte, 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 antérieures. 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 des prior_timesteps personnalisés
num_inference_steps (int, facultatif, valeur par défaut 12) : Le nombre d'étapes de débruitage du décodeur. 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 des timesteps personnalisés
decoder_guidance_scale (float, facultatif, valeur par défaut 0.0) : Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance. guidance_scale est défini comme w de l'équation 2. de Imagen Paper. L'échelle de guidage est activée en définissant guidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au prompt texte, généralement au détriment de la qualité de l'image.
generator (torch.Generator ou list[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 du generator alé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éfaut True) : 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 fonction prior_callback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument callback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut ._callback_tensor_inputs de 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_kwargs contiendra une liste de tous les tenseurs, tels que spécifiés par callback_on_step_end_tensor_inputs.
callback_on_step_end_tensor_inputs (list, facultatif) : La liste des entrées tensorielles pour la fonction callback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument callback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut ._callback_tensor_inputs de votre classe de pipeline.
Retourne :
ImagePipelineOutput ou tuple ImagePipelineOutput si return_dict est True, sinon un tuple. En cas de retour d'un tuple, le premier élément est une liste contenant les images générées.
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[[diffusers.StableCascadeCombinedPipeline.enable_model_cpu_offload]]
enable_model_cpu_offload(gpu_id: int | None = None, device: 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[[diffusers.StableCascadeCombinedPipeline.enable_sequential_cpu_offload]]
enable_sequential_cpu_offload(gpu_id: int | None = None, device: 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[[diffusers.StableCascadePriorPipeline]]
diffusers.StableCascadePriorPipeline[[diffusers.StableCascadePriorPipeline]]
diffusers.StableCascadePriorPipeline(tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, prior: StableCascadeUNet, scheduler: DDPMWuerstchenScheduler, resolution_multiple: float = 42.67, feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None)
Paramètres :
prior (StableCascadeUNet) : Le Stable Cascade prior sert à 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 pour être utilisées comme entrées pour le image_encoder.
image_encoder (CLIPVisionModelWithProjection) : encodeur d'images CLIP figé (clip-vit-large-patch14).
tokenizer (CLIPTokenizer) : Tokenizer de la classe CLIPTokenizer.
scheduler (DDPMWuerstchenScheduler) : Un planificateur à utiliser en combinaison avec prior pour générer l'embedding d'image.
resolution_multiple ('float', facultatif, valeur par défaut 42.67) : Résolution par défaut pour plusieurs images 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 (téléchargement ou sauvegarde, exécution sur un appareil particulier, etc.).
appel[[diffusers.StableCascadePriorPipeline.call]]
__call__(prompt: str | list[str] | None = None, images: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = None, height: int = 1024, width: int = 1024, num_inference_steps: int = 20, timesteps: list[float] = None, guidance_scale: float = 4.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, image_embeds: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pt', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
Paramètres :
prompt (str ou list[str]) : Le prompt ou les prompts pour guider la génération d'image.
images (torch.Tensor, PIL.Image.Image, list[torch.Tensor] ou list[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, valeur par défaut 1024) : La hauteur en pixels de l'image générée.
width (int, facultatif, valeur 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) : Étapes de temps personnalisées à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument timesteps dans leur méthode set_timesteps. S'il n'est pas défini, le comportement par défaut lorsque num_inference_steps est 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_scale est défini comme w de l'équation 2. de Imagen Paper. L'échelle de guidage est activée en définissant decoder_guidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au prompt texte, généralement au détriment de la qualité de l'image.
negative_prompt (str ou list[str], facultatif) : Le prompt 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é si decoder_guidance_scale est inférieur à 1).
prompt_embeds (torch.Tensor, facultatif) : Incrustations de texte pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée prompt.
prompt_embeds_pooled (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ée prompt.
negative_prompt_embeds (torch.Tensor, facultatif) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par exemple le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée negative_prompt.
negative_prompt_embeds_pooled (torch.Tensor, facultatif) : Embeddings de texte négatifs pré-générés et agrégé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ée negative_prompt.
image_embeds (torch.Tensor, facultatif) : Incrustations d’images pré-générées. Peut être utilisé pour ajuster facilement les entrées d’images, par ex. le pondération des prompts. S’il n’est pas fourni, les incrustations d’images seront générées à partir de l’argument d’entrée image s’il existe.
num_images_per_prompt (int, facultatif, valeur par défaut 1) : Le nombre d'images à générer par invite.
generator (torch.Generator ou list[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 du generator alé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éfaut True) : 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_kwargs contiendra une liste de tous les tenseurs, tels que spécifiés par callback_on_step_end_tensor_inputs.
callback_on_step_end_tensor_inputs (list, facultatif) : La liste des entrées tensorielles pour la fonction callback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument callback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut ._callback_tensor_inputs de votre classe de pipeline.
Retourne :
StableCascadePriorPipelineOutput ou tuple StableCascadePriorPipelineOutput si return_dict est True, sinon un tuple. En cas de retour d'un tuple, le premier élément est une liste contenant les embeddings d'images générées.
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[[diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput]]
diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput[[diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput]]
diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput(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])
Paramètres :
image_embeddings (torch.Tensor ou np.ndarray) : Embeddings d'image précédents pour le prompt texte
prompt_embeds (torch.Tensor) : Embeddings de texte pour le prompt.
negative_prompt_embeds (torch.Tensor) : Embeddings de texte pour le prompt négatif.
Classe de sortie pour WuerstchenPriorPipeline.
StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]]
diffusers.StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]]
diffusers.StableCascadeDecoderPipeline(decoder: StableCascadeUNet, tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, latent_dim_scale: float = 10.67)
Paramètres :
tokenizer (CLIPTokenizer) : Le tokeniseur CLIP.
text_encoder (CLIPTextModelWithProjection) : L'encodeur de texte CLIP.
decoder (StableCascadeUNet) : Le décodeur unet de Stable Cascade.
vqgan (PaellaVQModel) : le modèle VQGAN.
scheduler (DDPMWuerstchenScheduler) : Un planificateur à utiliser en combinaison avec prior pour générer l'embedding d'image.
latent_dim_scale (float, optional, par défaut 10.67) : Multiplicateur pour déterminer la taille de l’espace latent VQ à partir des embeddings d’image. Si les embeddings d’image ont height=24 et width=24, la forme du latent VQ doit être height=int(2410.67)=256 et width=int(2410.67)=256 afin de correspondre aux conditions d’entraînement.
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 (téléchargement ou sauvegarde, exécution sur un appareil particulier, etc.).
appel[[diffusers.StableCascadeDecoderPipeline.call]]
__call__(image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]], prompt: str | list[str] = None, num_inference_steps: int = 10, guidance_scale: float = 0.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
Paramètres :
image_embeddings (torch.Tensor ou list[torch.Tensor]) : Embeddings d'image extraits d'une image ou générés par un Prior Model.
prompt (str ou list[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_scale est défini comme w de l'équation 2. de Imagen Paper. L'échelle de guidage est activée en définissant decoder_guidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au prompt texte, généralement au détriment de la qualité de l'image.
negative_prompt (str ou list[str], facultatif) : Le prompt 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é si decoder_guidance_scale est inférieur à 1).
prompt_embeds (torch.Tensor, facultatif) : Incrustations de texte pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée prompt.
prompt_embeds_pooled (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ée prompt.
negative_prompt_embeds (torch.Tensor, facultatif) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par exemple le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée negative_prompt.
negative_prompt_embeds_pooled (torch.Tensor, facultatif) : Embeddings de texte négatifs pré-générés et agrégé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ée negative_prompt.
num_images_per_prompt (int, facultatif, valeur par défaut 1) : Le nombre d'images à générer par invite.
generator (torch.Generator ou list[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 du generator alé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éfaut True) : 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_kwargs contiendra une liste de tous les tenseurs, tels que spécifiés par callback_on_step_end_tensor_inputs.
callback_on_step_end_tensor_inputs (list, facultatif) : La liste des entrées tensorielles pour la fonction callback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument callback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut ._callback_tensor_inputs de votre classe de pipeline.
Retourne :
ImagePipelineOutput ou tuple ImagePipelineOutput si return_dict est True, sinon un tuple. En cas de retour d'un tuple, le premier élément est une liste contenant les embeddings d'images générés.
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)
Xet Storage Details
- Size:
- 41.7 kB
- Xet hash:
- 4d5b9d9e5e6df321c362ebabe4614bffbdbddc9fbfe8c056523bd29a0b1caf09
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.