Diffusers documentation

ConsisIDTransformer3DModel

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

ConsisIDTransformer3DModel

A Diffusion Transformer model for 3D data from ConsisID was introduced in Identity-Preserving Text-to-Video Generation by Frequency Decomposition by Peking University & University of Rochester & etc.

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

from diffusers import ConsisIDTransformer3DModel

transformer = ConsisIDTransformer3DModel.from_pretrained("BestWishYsh/ConsisID-preview", subfolder="transformer", dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"

ConsisIDTransformer3DModel

class diffusers.ConsisIDTransformer3DModel

< >

( num_attention_heads: int = 30attention_head_dim: int = 64in_channels: int = 16out_channels: int | None = 16flip_sin_to_cos: bool = Truefreq_shift: int = 0time_embed_dim: int = 512text_embed_dim: int = 4096num_layers: int = 30dropout: float = 0.0attention_bias: bool = Truesample_width: int = 90sample_height: int = 60sample_frames: int = 49patch_size: int = 2temporal_compression_ratio: int = 4max_text_seq_length: int = 226activation_fn: str = 'gelu-approximate'timestep_activation_fn: str = 'silu'norm_elementwise_affine: bool = Truenorm_eps: float = 1e-05spatial_interpolation_scale: float = 1.875temporal_interpolation_scale: float = 1.0use_rotary_positional_embeddings: bool = Falseuse_learned_positional_embeddings: bool = Falseis_train_face: bool = Falseis_kps: bool = Falsecross_attn_interval: int = 2cross_attn_dim_head: int = 128cross_attn_num_heads: int = 16LFE_id_dim: int = 1280LFE_vit_dim: int = 1024LFE_depth: int = 10LFE_dim_head: int = 64LFE_num_heads: int = 16LFE_num_id_token: int = 5LFE_num_querie: int = 32LFE_output_dim: int = 2048LFE_ff_mult: int = 4LFE_num_scale: int = 5local_face_scale: float = 1.0 )

パラメータ

  • num_attention_heads (int、デフォルトは 30) — マルチヘッドアテンションに使用するヘッドの数。
  • attention_head_dim (int, デフォルトは 64) — 各ヘッドのチャネル数です。
  • in_channels (int, デフォルトは 16) — 入力におけるチャネル数。
  • out_channels (int、任意、デフォルトは 16) — 出力のチャネル数です。
  • flip_sin_to_cos (bool、デフォルトはTrue) — 時間埋め込みにおいて sin を cos に反転させるかどうか。
  • time_embed_dim (int、デフォルトは 512) — タイムステップ埋め込みの出力次元数。
  • text_embed_dim (int、デフォルトは 4096) — テキストエンコーダーからのテキスト埋め込みの入力次元数。
  • num_layers (int、デフォルトは 30) — 使用する Transformer ブロックの層数です。
  • dropout (float, デフォルトは 0.0) — 使用する dropout の確率。
  • attention_bias (bool、デフォルトはTrue) — アテンションの投影層でバイアスを使用するかどうか。
  • sample_width (int、デフォルトは90) — 入力潜変数の幅です。
  • sample_height (int、デフォルトは60) — 入力潜変数の高さです。
  • sample_frames (int、デフォルト値は 49) — 入力潜在変数のフレーム数です。なお、このパラメータは、ConsisID がデフォルトおよび推奨設定において一度に 13 個の潜在フレームを処理していたにもかかわらず、13 ではなく誤って 49 に初期化されていました。後方互換性を確保するため、正しい値に変更することはできません。K 個の潜在フレームを持つ transformer を作成する場合、ここで渡すべき正しい値は ((K - 1) * temporal_compression_ratio + 1) です。
  • patch_size (int, デフォルトは 2) — パッチ埋め込み層で使用するパッチのサイズです。
  • temporal_compression_ratio (int、デフォルトは4) — 時間軸方向の圧縮比です。sample_framesのドキュメントを参照してください。
  • max_text_seq_length (int、デフォルトは226) — 入力テキスト埋め込みの最大シーケンス長です。
  • activation_fn (str、デフォルトは"gelu-approximate") — フィードフォワード層で使用する活性化関数。
  • timestep_activation_fn (str、デフォルトは "silu") — タイムステップ埋め込みを生成する際に使用する活性化関数。
  • norm_elementwise_affine (bool、デフォルトはTrue) — 正規化レイヤーで要素ごとのアフィン変換を使用するかどうか。
  • norm_eps (float、デフォルトは 1e-5) — 正規化層で使用する epsilon 値。
  • spatial_interpolation_scale (float、デフォルト値は1.875) — 空間次元全体にわたる3次元位置埋め込みに適用するスケーリング係数。
  • temporal_interpolation_scale (float、デフォルト値は1.0) — 時間軸の次元全体にわたる3次元位置埋め込みに適用するスケーリング係数。
  • is_train_face (bool、デフォルトは False) — 学習プロセス中にアイデンティティ保持モジュールを有効にするかどうか。True に設定すると、モデルはアイデンティティ保持タスクに焦点を当てます。
  • is_kps (bool、デフォルトは False) — グローバルな顔エクストラクターでキーポイントの機能を有効にするかどうか。True の場合、モデルにキーポイントが含まれます。
  • cross_attn_interval (int、デフォルトは2) — Transformerアーキテクチャにおけるクロスアテンション層の間隔です。値を大きくするとクロスアテンションの計算頻度が低下し、計算オーバーヘッドの削減に役立つ場合があります。
  • cross_attn_dim_head (int、省略可、デフォルトは128) — Transformer アーキテクチャのクロスアテンション層における、各アテンションヘッドの次元数です。値を大きくすると、より複雑なパターンに注目する能力が高まりますが、メモリと計算コストも増加します。
  • cross_attn_num_heads (int, 任意、デフォルトは 16) — クロスアテンション層におけるアテンションヘッドの数です。ヘッド数が多いほど、並列的なアテンション機構が増え、入力内の異なる要素間の多様な関係を捉えることができますが、計算コストも増加します。
  • LFE_id_dim (int、省略可能、デフォルトは 1280) — Local Facial Extractor (LFE) で使用されるアイデンティティベクトルの次元数です。このベクトルは顔のアイデンティティ特徴を表しており、顔認識や異なるフレーム間でアイデンティティを維持するタスクにおいて重要です。
  • LFE_vit_dim (int, 任意、デフォルトは 1024) — Local Facial Extractor (LFE) で使用される vision transformer (ViT) の出力次元です。この値は、顔の特徴抽出のために処理される、transformer によって生成される特徴ベクトルのサイズを決定します。
  • LFE_depth (int, 任意、デフォルトは 10) — Local Facial Extractor (LFE) のレイヤー数です。深さを増やすことで、顔の特徴量により複雑な表現をモデルが捉えることが可能になりますが、計算負荷も増加します。
  • LFE_dim_head (int, 任意、デフォルトは 64) — Local Facial Extractor (LFE) における各アテンションヘッドの次元数です。このパラメータは、抽出処理中にモデルが顔の特徴の異なる部分にどの程度細かく処理・フォーカスできるかに影響します。
  • LFE_num_heads (int, 任意、デフォルトは 16) — Local Facial Extractor (LFE) におけるアテンションヘッドの数です。ヘッド数を増やすことで、多様な顔の特徴を捉える能力が向上する場合がありますが、計算複雑性が増大するコストが発生します。
  • LFE_num_id_token (int、任意、デフォルトは 5) — Local Facial Extractor (LFE) で使用されるアイデンティティトークンの数です。これは、特徴抽出時に顔のアイデンティティを保持するために、モデルが処理するアイデンティティ関連のトークンの数を定義します。
  • LFE_num_querie (int, 任意、デフォルトは 32) — Local Facial Extractor (LFE) で使用されるクエリトークンの数です。これらのトークンは、顔に関連する高周波情報を捕捉するために使用され、正確な顔特徴量の抽出を助けます。
  • LFE_output_dim (int, 任意、デフォルトは 2048) — Local Facial Extractor (LFE) の出力次元です。この次元は、LFE モジュールが生成する特徴ベクトルのサイズを決定します。この特徴ベクトルは、顔認識やトラッキングなどの後続のタスクで使用されます。
  • LFE_ff_mult (int、任意、デフォルトは 4) — Local Facial Extractor (LFE) のフィードフォワードネットワークの隠れ層サイズに適用される乗数です。値を大きくすると、より複雑な顔特徴変換を学習するモデルの容量が増加しますが、計算量とメモリ要件も増加します。
  • LFE_num_scale (int, 任意、デフォルトは 5) — 視覚特徴の異なるスケールの数です。値を大きくすると、モデルがより複雑な顔の特徴変換を学習する能力が高まりますが、計算量とメモリ要件も増加します。
  • local_face_scale (float、デフォルト値は 1.0) — モデルにおける局所的な顔の特徴の重要度を調整するために使用されるスケーリング係数です。これにより、モデルが顔に関連する高周波数コンテンツにどの程度強く注目するかが影響を受けます。

ConsisIDにおける動画類似データ向けのTransformerモデル。

forward

< >

( hidden_states: Tensorencoder_hidden_states: Tensortimestep: typing.Union[int, float, torch.LongTensor]timestep_cond: typing.Optional[torch.Tensor] = Noneimage_rotary_emb: tuple[torch.Tensor, torch.Tensor] | None = Noneattention_kwargs: dict[str, typing.Any] | None = Noneid_cond: typing.Optional[torch.Tensor] = Noneid_vit_hidden: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )

パラメータ

  • hidden_states (torch.Tensor、形状 (batch_size, num_frames, channels, height, width)) — 入力となる hidden_states。
  • encoder_hidden_states (torch.Tensor、形状 (batch_size, sequence_len, embed_dims)) — 使用する条件埋め込み(プロンプトなどの入力条件から計算される埋め込み)。
  • timestep (torch.LongTensor) — デノイジングステップを示すために使用されます。
  • timestep_cond (torch.Tensor, 任意) — タイムステップ用の条件埋め込みです。指定された場合、これらの埋め込みは、self.time_embedding レイヤーを通過したサンプルと加算され、最終的なタイムステップ埋め込みが得られます。
  • image_rotary_emb (tuple of torch.Tensor, 任意) — 事前計算されたロータリー位置埋め込み。
  • attention_kwargs (dict, 省略可) — 指定された場合、diffusers.models.attention_processor で定義されている self.processor 内の AttentionProcessor に渡される kwargs 辞書です。
  • id_cond (torch.Tensor, 任意) — アイデンティティ条件付けに使用される、ローカルな顔抽出器によって抽出された顔埋め込みです。
  • id_vit_hidden (torch.Tensor, 任意) — アイデンティティ条件付けに使用される顔画像から抽出された ViT の隠れ状態です。
  • return_dict (bool、任意、デフォルトは True) — プレーンなタプルではなく ~models.transformer_2d.Transformer2DModelOutput を返すかどうか。

ConsisIDTransformer3DModelのforwardメソッドです。

Transformer2DModelOutput

クラス diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

パラメータ

  • sample (torch.Tensor、形状 (batch_size, num_channels, height, width)、または Transformer2DModel が離散型の場合 (batch size, num_vector_embeds - 1, num_latent_pixels)) — encoder_hidden_states 入力を条件とする隠れ状態の出力です。離散型の場合、ノイズ除去されていない潜在ピクセルの確率分布を返します。

Transformer2DModelの出力です。

Update on GitHub