Diffusers documentation

WanAnimateTransformer3DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

WanAnimateTransformer3DModel

阿里巴巴 Wan 团队在 Wan Animate 中介绍了一种用于 3D 类视频数据的 Diffusion Transformer 模型。

可以使用以下代码片段加载该模型。

from diffusers import WanAnimateTransformer3DModel

transformer = WanAnimateTransformer3DModel.from_pretrained("Wan-AI/Wan2.2-Animate-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)

WanAnimateTransformer3DModel

class diffusers.WanAnimateTransformer3DModel

< >

( patch_size: tuple = (1, 2, 2)num_attention_heads: int = 40attention_head_dim: int = 128in_channels: int | None = 36latent_channels: int | None = 16out_channels: int | None = 16text_dim: int = 4096freq_dim: int = 256ffn_dim: int = 13824num_layers: int = 40cross_attn_norm: bool = Trueqk_norm: str | None = 'rms_norm_across_heads'eps: float = 1e-06image_dim: int | None = 1280added_kv_proj_dim: int | None = Nonerope_max_seq_len: int = 1024pos_embed_seq_len: int | None = Nonemotion_encoder_channel_sizes: dict[str, int] | None = Nonemotion_encoder_size: int = 512motion_style_dim: int = 512motion_dim: int = 20motion_encoder_dim: int = 512face_encoder_hidden_dim: int = 1024face_encoder_num_heads: int = 4inject_face_latents_blocks: int = 5motion_encoder_batch_size: int = 8 )

参数

  • patch_size (tuple[int],默认为 (1, 2, 2)) — 用于视频嵌入的 3D patch 维度 (t_patch, h_patch, w_patch)。
  • num_attention_heads (int,默认为 40) — 文本嵌入的固定长度。
  • attention_head_dim (int,默认为 128) — 每个头中的通道数。
  • in_channels (int,默认为 16) — 输入数据的通道数。
  • out_channels (int,默认为 16) — 输出中的通道数。
  • text_dim (int,默认为 512) — 文本嵌入的输入维度。
  • freq_dim (int,默认为 256) — 正弦时间嵌入的维度。
  • ffn_dim (int,默认为 13824) — 前馈网络中的中间维度。
  • num_layers (int,默认为 40) — 要使用的 transformer 块层数。
  • window_size (tuple[int],默认为 (-1, -1)) — 局部注意力的窗口大小(-1 表示全局注意力)。
  • cross_attn_norm(bool,默认为 True)— 启用交叉注意力归一化。
  • qk_norm (bool,默认为 True) — 启用查询/键归一化。
  • eps (float,默认为 1e-6) — 归一化层的 epsilon 值。
  • image_dim (int,可选,默认为 1280) — 用于图像嵌入的通道数。如果为 None,则不使用投影。
  • added_kv_proj_dim (int,可选,默认为 5120) — 用于附加的 key 和 value 投影的通道数。如果为 None,则不使用投影。

用于 WanAnimate 模型中类视频数据的 Transformer 模型。

forward

< >

( hidden_states: Tensortimestep: LongTensorencoder_hidden_states: Tensorencoder_hidden_states_image: typing.Optional[torch.Tensor] = Nonepose_hidden_states: typing.Optional[torch.Tensor] = Noneface_pixel_values: typing.Optional[torch.Tensor] = Nonemotion_encode_batch_size: int | None = Nonereturn_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = None ) → ~models.transformer_2d.Transformer2DModelOutput or tuple

参数

  • hidden_states(形状为 (B, 2C + 4, T + 1, H, W) 的 torch.Tensor)— 形状为 (B, 2C + 4, T + 1, H, W) 的输入含噪视频潜变量,其中 B 为批大小,C 为潜变量通道数(Wan VAE 为 16),T 为推理片段中的潜变量帧数,H 为潜变量高度,W 为潜变量宽度。
  • timestep — (torch.LongTensor): 去噪循环中的当前时间步。
  • encoder_hidden_states (torch.Tensor) — 来自文本编码器的文本嵌入(Wan Animate 使用 umT5)。
  • encoder_hidden_states_image (torch.Tensor) — 参考(角色)图像的 CLIP 视觉特征。
  • pose_hidden_states (torch.Tensor,形状为 (B, C, T, H, W)) — 姿态视频潜变量。TODO: 描述
  • face_pixel_values(形状为 (B, C', S, H', W') 的 torch.Tensor)— 像素空间中的面部视频(非潜在空间)。通常 C’ = 3,H’ 和 W’ 为面部视频的像素高度/宽度。此处 S 为推理片段长度,通常设置为 77。
  • motion_encode_batch_size (int, 可选) — 通过运动编码器对面部视频进行批量编码时的批处理大小。如果未设置,则默认为 self.config.motion_encoder_batch_size。
  • return_dict (bool,可选,默认为 True) — 是否以字典或元组的形式返回输出。
  • attention_kwargs (dict, 可选) — 一个 kwargs 字典,如果指定,将传递给 diffusers.models.attention_processor 中定义的 AttentionProcessor,该处理器在 self.processor 下定义。

返回值

~models.transformer_2d.Transformer2DModelOutput 或 tuple

如果 return_dict 为 True,则返回一个 ~models.transformer_2d.Transformer2DModelOutput,其 sample 为去噪后的视频潜在表示;否则,返回一个普通的 tuple,其第一个元素为该张量。

Wan2.2-Animate 变换器模型的前向传播。

Transformer2DModelOutput

类 diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

参数

  • sample(形状为 (batch_size, num_channels, height, width) 的 torch.Tensor,或者如果 Transformer2DModel 是离散的,则为 (batch size, num_vector_embeds - 1, num_latent_pixels))— 以 encoder_hidden_states 输入为条件的隐藏状态输出。如果是离散的,则返回未加噪潜在像素的概率分布。

Transformer2DModel 的输出。

Update on GitHub