Diffusers documentation

EasyAnimate

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

EasyAnimate

EasyAnimate d'Alibaba PAI.

La description issue de sa page GitHub : EasyAnimate est un pipeline basé sur l’architecture transformer, conçu pour générer des images et des vidéos par IA, ainsi que pour entraîner des modèles de référence et des modèles Lora pour Diffusion Transformer. Nous prenons en charge la prédiction directe à partir de modèles EasyAnimate pré-entraînés, permettant la génération de vidéos de diverses résolutions, d’une durée d’environ 6 secondes, à 8 fps (EasyAnimateV5.1, de 1 à 49 images). De plus, les utilisateurs peuvent entraîner leurs propres modèles de référence et Lora pour des transformations de style spécifiques.

Ce pipeline a été contribué par bubbliiiing. La base de code originale peut être trouvée ici. Les poids originaux sont disponibles sous hf.co/alibaba-pai.

Il existe deux points de contrôle officiels EasyAnimate pour la génération de vidéo à partir de texte et la transformation de vidéo en vidéo.

checkpointsdtype d'inférence recommandé
alibaba-pai/EasyAnimateV5.1-12b-zhtorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

Un seul checkpoint officiel EasyAnimate est disponible pour l'image-vers-vidéo et la vidéo-vers-vidéo.

checkpointsdtype d'inférence recommandé
alibaba-pai/EasyAnimateV5.1-12b-zh-InPtorch.float16

Deux points de contrôle officiels EasyAnimate sont disponibles pour le contrôle vers vidéo.

checkpointsdtype d'inférence recommandé
alibaba-pai/EasyAnimateV5.1-12b-zh-Controltorch.float16
alibaba-pai/EasyAnimateV5.1-12b-zh-Control-Cameratorch.float16

Pour la série EasyAnimateV5.1 :

  • Le texte-vers-vidéo (T2V) et l'image-vers-vidéo (I2V) fonctionnent à plusieurs résolutions. La largeur et la hauteur peuvent varier de 256 à 1024.
  • Les modèles T2V et I2V prennent en charge la génération avec 1 à 49 images et fonctionnent de manière optimale à cette valeur. L’exportation des vidéos à 8 FPS est recommandée.

Quantification

La quantification aide à réduire les besoins en mémoire des très grands modèles en stockant les poids du modèle dans un type de données de précision inférieure. Cependant, la quantification peut avoir un impact variable sur la qualité de la vidéo selon le modèle vidéo.

Reportez-vous à l’aperçu de la Quantization pour en savoir plus sur les backends de quantification pris en charge et sur la sélection d’un backend de quantification adapté à votre cas d’usage. L’exemple ci-dessous montre comment charger un EasyAnimatePipeline quantifié pour l’inférence avec bitsandbytes.

import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, EasyAnimateTransformer3DModel, EasyAnimatePipeline
from diffusers.utils import export_to_video

quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = EasyAnimateTransformer3DModel.from_pretrained(
    "alibaba-pai/EasyAnimateV5.1-12b-zh",
    subfolder="transformer",
    quantization_config=quant_config,
    dtype=torch.float16,
)

pipeline = EasyAnimatePipeline.from_pretrained(
    "alibaba-pai/EasyAnimateV5.1-12b-zh",
    transformer=transformer_8bit,
    dtype=torch.float16,
    device_map="balanced",
)

prompt = "A cat walks on the grass, realistic style."
negative_prompt = "bad detailed"
video = pipeline(prompt=prompt, negative_prompt=negative_prompt, num_frames=49, num_inference_steps=30).frames[0]
export_to_video(video, "cat.mp4", fps=8)

EasyAnimatePipeline

classe diffusers.EasyAnimatePipeline

< >

( vae: AutoencoderKLMagvittext_encoder: transformers.models.qwen2_vl.modeling_qwen2_vl.Qwen2VLForConditionalGeneration | transformers.models.bert.modeling_bert.BertModeltokenizer: transformers.models.qwen2.tokenization_qwen2.Qwen2Tokenizer | transformers.models.bert.tokenization_bert.BertTokenizertransformer: EasyAnimateTransformer3DModelscheduler: FlowMatchEulerDiscreteScheduler )

Paramètres

  • vae (AutoencoderKLMagvit) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des vidéos vers et depuis des représentations latentes.
  • text_encoder (~transformers.Qwen2VLForConditionalGeneration, ~transformers.BertModel | None) — EasyAnimate utilise qwen2 vl dans la V5.1.
  • tokenizer (~transformers.Qwen2Tokenizer, ~transformers.BertTokenizer | None) — Un Qwen2Tokenizer ou BertTokenizer pour tokeniser le texte.
  • transformer (EasyAnimateTransformer3DModel) — Le modèle EasyAnimate conçu par l'équipe EasyAnimate.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Un planificateur à utiliser en combinaison avec EasyAnimate pour débruyer les latents d'image encodés.

Pipeline pour la génération de texte vers vidéo utilisant EasyAnimate.

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.)

EasyAnimate utilise un seul encodeur de texte qwen2 vl dans la V5.1.

__call__

< >

( prompt: str | list[str] = Nonenum_frames: int | None = 49height: int | None = 512width: int | None = 512num_inference_steps: int | None = 50guidance_scale: float | None = 5.0negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float | None = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonetimesteps: list[int] | None = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']guidance_rescale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Paramètres

  • prompt (str ou list[str], facultatif) — Prompts textuels pour guider la génération d’image ou de vidéo. S’il n’est pas fourni, utilisez prompt_embeds à la place.
  • num_frames (int, facultatif) — Longueur de la vidéo générée (en images).
  • height (int, facultatif) — Hauteur de l'image générée en pixels.
  • width (int, facultatif) — Largeur de l'image générée en pixels.
  • num_inference_steps (int, facultatif, valeur par défaut 50) — Nombre d'étapes de débruitage lors de la génération. Un nombre plus élevé d'étapes produit généralement des images de meilleure qualité, mais ralentit l'inférence.
  • guidance_scale (float, facultatif, valeur par défaut 5.0) — Encourage le modèle à aligner les sorties sur les prompts. Une valeur plus élevée peut diminuer la qualité de l'image.
  • negative_prompt (str ou list[str], facultatif) — Prompts indiquant ce qu'il faut exclure de la génération. Si non spécifié, utilisez negative_prompt_embeds.
  • num_images_per_prompt (int, facultatif, valeur par défaut 1) — Nombre d'images à générer pour chaque invite.
  • eta (float, facultatif, valeur par défaut 0.0) — S'applique à la planification DDIM. Contrôlé par le paramètre eta de la littérature associée.
  • generator (torch.Generator ou list[torch.Generator], facultatif) — Un générateur pour garantir la reproductibilité dans la génération d'images.
  • latents (torch.Tensor, optional) — Predefined latent tensors to condition generation.
  • prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte pour les prompts. Remplace les entrées de chaînes de caractères des prompts pour plus de flexibilité.
  • negative_prompt_embeds (torch.Tensor, facultatif) — Embeddings pour les prompts négatifs. Remplace les entrées de type chaîne si défini.
  • prompt_attention_mask (torch.Tensor, facultatif) — Masque d'attention pour les embeddings du prompt principal.
  • negative_prompt_attention_mask (torch.Tensor, facultatif) — Masque d'attention pour les embeddings du prompt négatif.
  • output_type (str, facultatif, par défaut “latent”) — Format de la sortie générée, soit sous forme d’image PIL, soit sous forme de tableau NumPy.
  • return_dict (bool, facultatif, par défaut True) — Si True, renvoie une sortie structurée. Sinon, renvoie un simple tuple.
  • callback_on_step_end (Callable, facultatif) — Fonctions appelées à la fin de chaque étape de débruitage.
  • callback_on_step_end_tensor_inputs (list[str], facultatif) — Noms des tenseurs à inclure dans les appels de la fonction de rappel.
  • guidance_rescale (float, facultatif, valeur par défaut 0.0) — Ajuste les niveaux de bruit en fonction de l'échelle de guidage.
  • timesteps (list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage. S'ils ne sont pas définis, l'agenda par défaut du planificateur pour num_inference_steps est utilisé.

Si return_dict est True, StableDiffusionPipelineOutput est renvoyé, sinon un tuple est renvoyé dont le premier élément est une liste des images générées et le deuxième élément est une liste de bool indiquant si l’image générée correspondante contient du contenu « not-safe-for-work » (nsfw).

Génère des images ou des vidéos à l'aide du pipeline EasyAnimate sur la base des prompts fournis.

Exemples :

>>> import torch
>>> from diffusers import EasyAnimatePipeline
>>> from diffusers.utils import export_to_video

>>> # Models: "alibaba-pai/EasyAnimateV5.1-12b-zh"
>>> pipe = EasyAnimatePipeline.from_pretrained(
...     "alibaba-pai/EasyAnimateV5.1-7b-zh-diffusers", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = (
...     "A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. "
...     "The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other "
...     "pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, "
...     "casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. "
...     "The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical "
...     "atmosphere of this unique musical performance."
... )
>>> sample_size = (512, 512)
>>> video = pipe(
...     prompt=prompt,
...     guidance_scale=6,
...     negative_prompt="bad detailed",
...     height=sample_size[0],
...     width=sample_size[1],
...     num_inference_steps=50,
... ).frames[0]
>>> export_to_video(video, "output.mp4", fps=8)

encode_prompt

< >

( prompt: str | list[str]num_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonedevice: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = Nonemax_sequence_length: int = 256 )

Paramètres

  • prompt (str ou list[str], facultatif) — prompt à encoder
  • device — (torch.device) : torch device
  • dtype (torch.dtype) — dtype torch
  • num_images_per_prompt (int) — nombre d'images à générer par invite
  • do_classifier_free_guidance (bool) — indique s'il faut utiliser le classifier free guidance ou non
  • negative_prompt (str ou list[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passer negative_prompt_embeds à la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré si guidance_scale est 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ée prompt.
  • 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ée negative_prompt.
  • prompt_attention_mask (torch.Tensor, facultatif) — Masque d'attention pour le prompt. Requis lorsque prompt_embeds est passé directement.
  • negative_prompt_attention_mask (torch.Tensor, facultatif) — Masque d'attention pour le prompt négatif. Requis lorsque negative_prompt_embeds est passé directement.
  • max_sequence_length (int, facultatif) — longueur maximale de séquence à utiliser pour le prompt.

Encode le prompt dans les états cachés de l'encodeur de texte.

EasyAnimatePipelineOutput

classe diffusers.pipelines.easyanimate.pipeline_output.EasyAnimatePipelineOutput

< >

( frames: Tensor )

Paramètres

  • frames (torch.Tensor, np.ndarray ou list[list[PIL.Image.Image]]) — liste des sorties vidéo - Il peut s'agir d'une liste imbriquée de longueur batch_size, où chaque sous-liste contient des séquences d'images PIL débruitées de longueur num_frames. Il peut également s'agir d'un tableau NumPy ou d'un tenseur Torch de forme (batch_size, num_frames, channels, height, width).

Classe de sortie pour les pipelines EasyAnimate.

Update on GitHub