# EasyAnimateTransformer3DModel

[EasyAnimate](https://github.com/aigc-apps/EasyAnimate) によって、3Dデータ向けの Diffusion Transformer モデルが Alibaba PAI によって紹介されました。

モデルは、以下のコードスニペットで読み込むことができます。

```python
from diffusers import EasyAnimateTransformer3DModel

transformer = EasyAnimateTransformer3DModel.from_pretrained("alibaba-pai/EasyAnimateV5.1-12b-zh", subfolder="transformer", dtype=torch.float16).to("cuda")  # or "mps", "xpu", "cpu"
```

## EasyAnimateTransformer3DModel[[diffusers.EasyAnimateTransformer3DModel]]

#### diffusers.EasyAnimateTransformer3DModel[[diffusers.EasyAnimateTransformer3DModel]]

```python
diffusers.EasyAnimateTransformer3DModel(num_attention_heads: int = 48, attention_head_dim: int = 64, in_channels: int | None = None, out_channels: int | None = None, patch_size: int | None = None, sample_width: int = 90, sample_height: int = 60, activation_fn: str = 'gelu-approximate', timestep_activation_fn: str = 'silu', freq_shift: int = 0, num_layers: int = 48, mmdit_layers: int = 48, dropout: float = 0.0, time_embed_dim: int = 512, add_norm_text_encoder: bool = False, text_embed_dim: int = 3584, text_embed_dim_t5: int = None, norm_eps: float = 1e-05, norm_elementwise_affine: bool = True, flip_sin_to_cos: bool = True, time_position_encoding_type: str = '3d_rope', after_norm = False, resize_inpaint_mask_directly: bool = True, enable_text_attention_mask: bool = True, add_noise_in_inpaint_model: bool = True)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_easyanimate.py#L316)

**パラメータ:**

num_attention_heads (`int`、デフォルトは`48`) : マルチヘッドアテンションで使用するヘッド数。

attention_head_dim (`int`、デフォルトは`64`) : 各ヘッドのチャネル数。

in_channels (`int`、デフォルトは`16`) : 入力におけるチャネル数。

out_channels (`int`、*任意*、デフォルトは`16`) : 出力のチャネル数。

patch_size (`int`、デフォルトは`2`) : パッチ埋め込み層で使用するパッチのサイズ。

sample_width (`int`、デフォルトは`90`) : 入力潜変数の幅。

sample_height (`int`、デフォルトは`60`) : 入力ラテンツの縦幅。

activation_fn (`str`、デフォルトは `"gelu-approximate"`) : feed-forward で使用する活性化関数。

timestep_activation_fn (`str`、デフォルトは`"silu"`) : タイムステップ埋め込みを生成する際に使用する活性化関数。

num_layers (`int`、デフォルトは`30`) : 使用する Transformer ブロックの層数。

mmdit_layers (`int`、デフォルトは`1000`) : 使用する Multi Modal Transformer ブロックの層数。

dropout (`float`、デフォルトは`0.0`) : 使用する dropout の確率。

time_embed_dim (`int`、デフォルトは`512`) : タイムステップ埋め込みの出力次元数。

text_embed_dim (`int`、デフォルトは`4096`) : テキストエンコーダーからのテキスト埋め込みの入力次元数。

norm_eps (`float`、デフォルトは`1e-5`) : 正規化層で使用するepsilon値。

norm_elementwise_affine (`bool`、デフォルトは`True`) : 正規化レイヤーで要素ごとのアフィン変換を使用するかどうか。

flip_sin_to_cos (`bool`、デフォルトは`True`) : 時間埋め込みにおいて sin を cos に反転させるかどうか。

time_position_encoding_type (`str`、デフォルトは`3d_rope`) : 時間位置エンコーディングの種類。

after_norm (`bool`、デフォルトは`False`) : 後に正規化を適用するかどうかのフラグ。

resize_inpaint_mask_directly (`bool`、デフォルトは`True`) : inpaintマスクを直接リサイズするかどうかを指定するフラグ。

enable_text_attention_mask (`bool`、デフォルトは`True`) : テキストの注意マスクを有効にするフラグ。

add_noise_in_inpaint_model (`bool`、デフォルトは`False`) : inpaint モデルにノイズを追加するかどうかのフラグ。

[EasyAnimate](https://github.com/aigc-apps/EasyAnimate)における動画類似データ向けのTransformerモデル。

#### forward[[diffusers.EasyAnimateTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: Tensor, timestep_cond: typing.Optional[torch.Tensor] = None, encoder_hidden_states: typing.Optional[torch.Tensor] = None, encoder_hidden_states_t5: typing.Optional[torch.Tensor] = None, inpaint_latents: typing.Optional[torch.Tensor] = None, control_latents: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_easyanimate.py#L461)

**パラメータ:**

hidden_states (`torch.Tensor`、形状 `(batch_size, channels, num_frames, height, width)`) : 入力 `hidden_states`。

timestep (`torch.LongTensor`) : デノイジングステップを示すために使用されます。

timestep_cond (`torch.Tensor`, *任意*) : タイムステップ用の条件付き埋め込みです。指定された場合、これらの埋め込みは `self.time_embedding` レイヤーを通過したサンプルに加算され、最終的なタイムステップ埋め込みが得られます。

encoder_hidden_states (`torch.Tensor`, *任意*) : 使用する条件埋め込み（プロンプトなどの入力条件から計算される埋め込み）。

encoder_hidden_states_t5 (`torch.Tensor`, *任意*) : T5 テキストエンコーダーから計算される追加の条件埋め込み。

inpaint_latents (`torch.Tensor`, *任意*) : モデルのインペインティングバリアントにおいて、`hidden_states`に連結される潜在変数。

control_latents (`torch.Tensor`, *任意*) : モデルの制御バリアント用に `hidden_states` に連結される潜在変数。

return_dict (`bool`、*任意*、デフォルトは`True`) : プレーンなタプルではなく`~models.transformer_2d.Transformer2DModelOutput`を返すかどうか。

**戻り値:**

`return_dict` が True の場合、`~models.transformer_2d.Transformer2DModelOutput` が返され、それ以外の場合は、最初の要素がサンプルテンソルである `tuple` が返されます。

[EasyAnimateTransformer3DModel](/docs/diffusers/v0.43.0/ja/api/models/easyanimate_transformer3d#diffusers.EasyAnimateTransformer3DModel) の forward メソッドです。

## 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)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_outputs.py#L21)

**パラメータ:**

sample (`torch.Tensor`、shape は `(batch_size, num_channels, height, width)`、または [Transformer2DModel](/docs/diffusers/v0.43.0/ja/api/models/transformer2d#diffusers.Transformer2DModel) が離散型の場合 `(batch size, num_vector_embeds - 1, num_latent_pixels)`) : `encoder_hidden_states` 入力を条件とする隠れ状態の出力です。離散型の場合、ノイズ除去されていない潜在ピクセルの確率分布を返します。

[Transformer2DModel](/docs/diffusers/v0.43.0/ja/api/models/transformer2d#diffusers.Transformer2DModel)の出力です。

