# WanAnimateTransformer3DModel

Một mô hình Diffusion Transformer cho dữ liệu dạng video 3D đã được giới thiệu trong [Wan Animate](https://github.com/Wan-Video/Wan2.2) bởi nhóm Alibaba Wan.

Mô hình có thể được tải bằng đoạn mã sau.

```python
from diffusers import WanAnimateTransformer3DModel

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

## WanAnimateTransformer3DModel[[diffusers.WanAnimateTransformer3DModel]]

#### diffusers.WanAnimateTransformer3DModel[[diffusers.WanAnimateTransformer3DModel]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_wan_animate.py#L986)

**Tham số:**

patch_size (`tuple[int]`, mặc định là `(1, 2, 2)`) : Kích thước patch 3D cho nhúng video (t_patch, h_patch, w_patch).

num_attention_heads (`int`, mặc định là `40`) : Độ dài cố định cho các vector nhúng văn bản.

attention_head_dim (`int`, mặc định là `128`) : Số lượng kênh trong mỗi head.

in_channels (`int`, mặc định là `16`) : Số lượng kênh trong đầu vào.

out_channels (`int`, mặc định là `16`) : Số lượng kênh trong đầu ra.

text_dim (`int`, mặc định là `512`) : Kích thước đầu vào cho nhúng văn bản.

freq_dim (`int`, mặc định là `256`) : Kích thước cho các nhúng thời gian hình sin.

ffn_dim (`int`, mặc định là `13824`) : Kích thước chiều trung gian trong mạng feed-forward.

num_layers (`int`, mặc định là `40`) : Số lượng lớp khối transformer cần sử dụng.

window_size (`tuple[int]`, mặc định là `(-1, -1)`) : Kích thước cửa sổ cho chú ý cục bộ (-1 chỉ ra chú ý toàn cục).

cross_attn_norm (`bool`, mặc định là `True`) : Bật chuẩn hóa cross-attention.

qk_norm (`bool`, mặc định là `True`) : Bật chuẩn hóa truy vấn/chìa khóa.

eps (`float`, mặc định là `1e-6`) : Giá trị epsilon cho các lớp chuẩn hóa.

image_dim (`int`, *tuỳ chọn*, mặc định là `1280`) : Số lượng kênh được sử dụng cho nhúng hình ảnh. Nếu là `None`, sẽ không sử dụng phép chiếu.

added_kv_proj_dim (`int`, *tuỳ chọn*, mặc định là `5120`) : Số lượng kênh được sử dụng cho các phép chiếu key và value được thêm vào. Nếu là `None`, sẽ không sử dụng phép chiếu.

Một mô hình Transformer cho dữ liệu dạng video được sử dụng trong mô hình WanAnimate.

#### forward[[diffusers.WanAnimateTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: LongTensor, encoder_hidden_states: Tensor, encoder_hidden_states_image: typing.Optional[torch.Tensor] = None, pose_hidden_states: typing.Optional[torch.Tensor] = None, face_pixel_values: typing.Optional[torch.Tensor] = None, motion_encode_batch_size: int | None = None, return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_wan_animate.py#L1154)

**Tham số:**

hidden_states (`torch.Tensor` có shape `(B, 2C + 4, T + 1, H, W)`) : Input noisy video latents có shape `(B, 2C + 4, T + 1, H, W)`, trong đó B là batch size, C là số kênh latent (16 với Wan VAE), T là số khung latent trong một đoạn inference, H là chiều cao latent, và W là chiều rộng latent.

timestep : (`torch.LongTensor`): Bước thời gian hiện tại trong vòng lặp khử nhiễu.

encoder_hidden_states (`torch.Tensor`) : Nhúng văn bản từ bộ mã hóa văn bản (umT5 cho Wan Animate).

encoder_hidden_states_image (`torch.Tensor`) : Đặc trưng hình ảnh CLIP của hình ảnh tham chiếu (nhân vật).

pose_hidden_states (`torch.Tensor` có hình dạng `(B, C, T, H, W)`) : Pose video latents. TODO: description

face_pixel_values (`torch.Tensor` có shape `(B, C', S, H', W')`) : Video khuôn mặt trong không gian pixel (không phải không gian latent). Thông thường C' = 3 và H' và W' là chiều cao/chiều rộng của video khuôn mặt tính bằng pixel. Ở đây S là độ dài đoạn suy luận, thường được đặt là 77.

motion_encode_batch_size (`int`, *optional*) : Kích thước lô (batch size) cho việc mã hóa theo lô (batched encoding) video khuôn mặt thông qua bộ mã hóa chuyển động. Nếu không được đặt, giá trị mặc định sẽ là `self.config.motion_encoder_batch_size`.

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Xác định việc trả về kết quả đầu ra dưới dạng dict hay tuple.

attention_kwargs (`dict`, *tùy chọn*) : Một từ điển kwargs mà nếu được chỉ định sẽ được truyền đến `AttentionProcessor` như đã định nghĩa dưới `self.processor` trong [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

**Trả về:** `~models.transformer_2d.Transformer2DModelOutput` hoặc `tuple`

Nếu `return_dict` là True, một `~models.transformer_2d.Transformer2DModelOutput` có `sample` là video latent đã khử nhiễu sẽ được trả về, ngược lại một `tuple` thông thường có phần tử đầu tiên là tensor đó sẽ được trả về.

Quá trình truyền thẳng của mô hình transformer Wan2.2-Animate.

## Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

#### diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

```python
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_outputs.py#L21)

**Tham số:**

sample (`torch.Tensor` có shape `(batch_size, num_channels, height, width)` hoặc `(batch size, num_vector_embeds - 1, num_latent_pixels)` nếu [Transformer2DModel](/docs/diffusers/v0.43.0/vi/api/models/transformer2d#diffusers.Transformer2DModel) là discrete) : Đầu ra của hidden states được điều kiện bởi đầu vào `encoder_hidden_states`. Nếu là discrete, trả về các phân phối xác suất cho các latent pixels chưa bị nhiễu.

Đầu ra của [Transformer2DModel](/docs/diffusers/v0.43.0/vi/api/models/transformer2d#diffusers.Transformer2DModel).

