Diffusers documentation

WanAnimate2Transformer3DModel

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

WanAnimate2Transformer3DModel

用于 Wan-Animate-2(由阿里巴巴 Wan 团队开发)的 3D 类视频数据 Diffusion Transformer 模型。它通过上下文参考机制,利用驱动视频的动作来使角色图像动起来:每个片段首先执行一次参考路径(kv_cache_mode="extract"),以缓存每一层的参考 K/V;随后,去噪路径(kv_cache_mode="cached")通过灵活的 BlockMask,同时对生成 token 和缓存的参考 token 进行注意力计算。

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

from diffusers import WanAnimate2Transformer3DModel

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

WanAnimate2Transformer3DModel

class diffusers.WanAnimate2Transformer3DModel

< >

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

参数

  • patch_size (tuple[int],默认为 (1, 2, 2)) — 用于视频嵌入的 3D patch 维度 (t_patch, h_patch, w_patch)。
  • text_len (int,默认为 512) — 文本嵌入的固定长度。
  • in_dim(int,默认为 36) — 输入通道数(2 * latent_channels + 4,其中 4 为掩码通道)。
  • dim (int,默认为 5120) — Transformer 中的通道数。
  • ffn_dim (int,默认为 13824) — 前馈网络中的中间维度。
  • freq_dim (int,默认为 256) — 正弦时间嵌入的维度。
  • text_dim (int,默认为 4096) — 文本嵌入的输入维度。
  • out_dim (int,默认为 16) — 输出中的通道数。
  • num_heads (int,默认为 40) — 注意力头的数量。
  • num_layers (int,默认为 40) — 要使用的 transformer 块层数。
  • cross_attn_norm (bool,默认为 True) — 启用交叉注意力归一化。
  • eps (float,默认为 1e-6) — 归一化层的 epsilon 值。
  • use_img_emb (bool,默认为 True) — 是否使用 CLIP 图像嵌入。
  • refer_offset_t (int,默认为 1) — 参考帧时间维度的 RoPE 偏移量。
  • refer_offset_h (int,默认为 0) — 参考图像高度维度的 RoPE 偏移量。
  • refer_offset_w (int,默认为 -1) — 参考图像宽度维度的 RoPE 偏移量。-1 表示使用生成网格的大小。
  • refer_stride (int,默认为 1) — 在参考上应用 RoPE 时的步长。

用于 Wan-Animate-2 模型中类视频数据的 Transformer 模型。

Wan-Animate-2 采用基于 KV 缓存的上下文注意力机制:首先对参考视频进行编码(kv_cache_mode="extract")以填充 [WanAnimate2KVCache],随后在每个去噪步骤(kv_cache_mode="cached")中,通过 flex BlockMask 同时对生成 token 和缓存的参考 K/V 进行联合注意力计算。因此,生成过程的自注意力仅在 flex 注意力后端上运行;模型中的其他所有注意力均可在任意后端上工作。

forward

< >

( 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])

参数

  • hidden_states (list[torch.Tensor]) — 本次传递的潜变量——当 kv_cache_mode="extract" 时为参考潜变量,当 kv_cache_mode="cached" 时为带噪生成潜变量。
  • timestep (torch.Tensor) — 去噪时间步。在 kv_cache_mode="extract" 模式下会被忽略,该模式使用固定的时间步 1。
  • encoder_hidden_states (list[torch.Tensor]) — 本次前向传播的文本嵌入。
  • condition_latents (list[torch.Tensor]) — 在 patch embedding 之前与 hidden_states 拼接的条件潜变量。
  • kv_cache (WanAnimate2KVCache) — 在 kv_cache_mode="extract" 下写入,在 "cached" 下读取。
  • kv_cache_mode (str) — "extract" 执行参考路径并填充 kv_cache;"cached" 针对缓存的参考 token 执行去噪步骤。
  • seq_len (int) — 每个样本在经过 patch embedding 后必须保持的 token 数量。
  • encoder_hidden_states_image (torch.Tensor, 可选) — CLIP 图像嵌入,当模型配置了 use_img_emb 时使用。
  • offset_grid_sizes (torch.Tensor, 可选) — 参考潜变量的 Patch 网格,用于解析任何设置为 -1 的 refer_offset_*。在 kv_cache_mode="extract" 下为必需项;在 "cached" 模式下,reference_grid_sizes 描述相同的网格并用于替代。
  • reference_grid_sizes (torch.Tensor,可选) — 参考潜变量的补丁网格,用于参考旋转嵌入。在 kv_cache_mode="cached" 下为必填项。
  • origin_len (int, 可选) — 完整视频的帧数,上下文块掩码将基于此构建。在 kv_cache_mode="cached" 下为必填项。
  • origin_area (list[int], 可选) — 完整视频的空间尺寸 [height, width],上下文块掩码将基于此构建。 在 kv_cache_mode="cached" 下为必填项。
  • is_uncondtion (bool, 可选) — 是否是无分类器引导(classifier-free guidance)的无条件分支。
  • return_dict (bool,可选,默认为 True) — 是否返回 ~models.transformer_2d.Transformer2DModelOutput 而不是普通元组。

返回值

Transformer2DModelOutput 或 tuple(list[torch.Tensor])

每个输入潜变量对应的预测样本,未进行分块处理;如果 return_dict 为 False,则返回一个普通元组。

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