Diffusers documentation
WanAnimate2Transformer3DModel
WanAnimate2Transformer3DModel
Un modèle Diffusion Transformer pour des données vidéo 3D, utilisé dans Wan-Animate-2 par l'équipe Alibaba Wan. Il anime une image de personnage avec le mouvement d'une vidéo de pilotage grâce à un mécanisme de référence en contexte : chaque segment exécute d'abord un passage de référence (kv_cache_mode="extract") qui met en cache les K/V de référence de chaque couche, puis les passages de débruitage (kv_cache_mode="cached") effectuent une attention conjointe sur les jetons de génération et les jetons de référence mis en cache via un BlockMask flexible.
Le modèle peut être chargé à l'aide du fragment de code suivant.
from diffusers import WanAnimate2Transformer3DModel
transformer = WanAnimate2Transformer3DModel.from_pretrained("Wan-AI/Wan2.2-Animate-2-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)WanAnimate2Transformer3DModel
classe diffusers.WanAnimate2Transformer3DModel
< source >( patch_size: tuple = (1, 2, 2)text_len: int = 512in_dim: int = 36dim: int = 5120ffn_dim: int = 13824freq_dim: int = 256text_dim: int = 4096out_dim: int = 16num_heads: int = 40num_layers: int = 40cross_attn_norm: bool = Trueeps: float = 1e-06use_img_emb: bool = Truerefer_offset_t: int = 1refer_offset_h: int = 0refer_offset_w: int = -1refer_stride: int = 1 )
Paramètres
- patch_size (tuple[int], par défaut (1, 2, 2)) — Dimensions des patches 3D pour l'encodage vidéo (t_patch, h_patch, w_patch).
- text_len (int, par défaut 512) — Longueur fixe pour les embeddings de texte.
- in_dim (int, par défaut 36) — Le nombre de canaux dans l'entrée (2 * latent_channels + 4 pour le canal de masque).
- dim (int, par défaut 5120) — Le nombre de canaux du transformeur.
- ffn_dim (int, par défaut 13824) — Dimension intermédiaire du réseau de propagation avant.
- freq_dim (int, par défaut 256) — Dimension des embeddings temporels sinusoïdaux.
- text_dim (int, par défaut 4096) — Dimension d'entrée pour les embeddings de texte.
- out_dim (int, par défaut 16) — Le nombre de canaux dans la sortie.
- num_heads (int, par défaut 40) — Le nombre de têtes d'attention.
- num_layers (int, par défaut 40) — Le nombre de blocs de transformeurs à utiliser.
- cross_attn_norm (bool, par défaut True) — Active la normalisation de l'attention croisée.
- eps (float, par défaut 1e-6) — Valeur de l'épsilon pour les couches de normalisation.
- use_img_emb (bool, par défaut True) — Indique s'il faut utiliser l'embedding d'image CLIP.
- refer_offset_t (int, par défaut 1) — Décalage RoPE pour la dimension temporelle de la référence.
- refer_offset_h (int, par défaut 0) — Décalage RoPE pour la dimension de hauteur de la référence.
- refer_offset_w (int, par défaut -1) — Décalage RoPE pour la dimension de largeur de la référence. -1 signifie d'utiliser la taille de la grille de génération.
- refer_stride (int, par défaut 1) — Pas pour l'application de RoPE sur la référence.
Un modèle Transformer pour des données de type vidéo utilisé dans le modèle Wan-Animate-2.
Wan-Animate-2 utilise un mécanisme d’attention in-context avec un cache KV : une vidéo de référence est d’abord encodée
(kv_cache_mode="extract") pour alimenter un [WanAnimate2KVCache], puis chaque étape de débruitage
(kv_cache_mode="cached") effectue une attention conjointe sur les jetons de génération et les K/V de référence mis en cache via un BlockMask flex. L’auto-attention de génération s’exécute donc uniquement sur le backend d’attention flex ; toutes les autres
attentions du modèle fonctionnent sur n’importe quel backend.
forward
< source >( hidden_states: listtimestep: Tensorencoder_hidden_states: listcondition_latents: listkv_cache: WanAnimate2KVCachekv_cache_mode: strseq_len: intencoder_hidden_states_image: typing.Optional[torch.Tensor] = Noneoffset_grid_sizes: typing.Optional[torch.Tensor] = Nonereference_grid_sizes: typing.Optional[torch.Tensor] = Noneorigin_len: int | None = Noneorigin_area: list[int] | None = Noneis_uncondtion: bool = Falsereturn_dict: bool = True ) → Transformer2DModelOutput or tuple(list[torch.Tensor])
Paramètres
- hidden_states (
list[torch.Tensor]) — Latents pour ce passage — les latents de référence lorsquekv_cache_mode="extract", les latents de génération bruités lorsquekv_cache_mode="cached". - timestep (
torch.Tensor) — Pas de débruitage. Ignoré lorsquekv_cache_mode="extract", qui utilise un pas fixe de 1. - encoder_hidden_states (
list[torch.Tensor]) — Embeddings de texte pour ce passage. - condition_latents (
list[torch.Tensor]) — Latents de conditionnement concaténés àhidden_statesavant l’encodage par patch. - kv_cache (
WanAnimate2KVCache) — Écrit aveckv_cache_mode="extract", lu avec"cached". - kv_cache_mode (
str) —"extract"exécute le passage de référence et remplitkv_cache;"cached"exécute une étape de débruitage sur les jetons de référence mis en cache. - seq_len (
int) — Nombre de jetons que chaque exemple doit contenir après l’encodage par patch. - encoder_hidden_states_image (
torch.Tensor, facultatif) — Embeddings d’image CLIP, utilisés lorsque le modèle est configuré avecuse_img_emb. - offset_grid_sizes (
torch.Tensor, facultatif) — Grille de patches des latents de référence, utilisée pour résoudre toute valeur derefer_offset_*définie à -1. Obligatoire lorsquekv_cache_mode="extract"; avec"cached",reference_grid_sizesdécrit la même grille et est utilisé à la place. - reference_grid_sizes (
torch.Tensor, facultatif) — Grille de patches des latents de référence, utilisée pour les embeddings rotationnels de référence. Obligatoire lorsquekv_cache_mode="cached". - origin_len (
int, facultatif) — Nombre de frames de la vidéo complète, sur lequel le masque de blocs in-context est construit. Requis lorsquekv_cache_mode="cached". - origin_area (
list[int], facultatif) — Taille spatiale[height, width]de la vidéo complète, sur laquelle le masque de blocs in-context est construit. Requis lorsquekv_cache_mode="cached". - is_uncondtion (
bool, facultatif) — Indique s'il s'agit de la branche inconditionnelle du classifier-free guidance. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~models.transformer_2d.Transformer2DModelOutputplutôt qu'un simple tuple.
Retourne
Transformer2DModelOutput ou tuple(list[torch.Tensor])
L'échantillon prédit par latent d'entrée, non patchifié ; un simple tuple si return_dict est False.
Transformer2DModelOutput
classe diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Paramètres
- sample (
torch.Tensorde forme(batch_size, num_channels, height, width)ou(batch size, num_vector_embeds - 1, num_latent_pixels)si Transformer2DModel est discret) — Les états cachés en sortie, conditionnés par l'entréeencoder_hidden_states. Si discret, renvoie les distributions de probabilité pour les pixels latents non bruités.
La sortie de Transformer2DModel.