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 个潜变量帧,因此该参数被错误地初始化为 49 而非 13。为确保向后兼容性,无法将其更改为正确的值。若要创建一个具有 K 个潜变量帧的 transformer,此处应传入的正确值为:((K - 1) * temporal_compression_ratio + 1)。
  • patch_size (int,默认为 2) — 用于 patch 嵌入层的 patch 大小。
  • 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) — 应用于 3D 位置嵌入中空间维度的缩放因子。
  • temporal_interpolation_scale (float,默认为 1.0) — 在 3D 位置嵌入中沿时间维度应用的缩放因子。
  • 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) — 在局部面部提取器(LFE)中使用的视觉 Transformer(ViT)输出的维度。该值决定了用于面部特征提取的 Transformer 生成特征向量的大小。
  • LFE_depth (int,可选,默认为 10) — 局部面部提取器(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) — 本地面部提取器(LFE)中使用的身份令牌数量。这定义了模型在处理特征提取时,为确保面部身份保持而处理的身份相关令牌数量。
  • LFE_num_querie (int,可选,默认为 32) — 本地面部提取器(LFE)中使用的查询 token 数量。这些 token 用于捕获有助于准确提取面部特征的高频面部相关信息。
  • LFE_output_dim (int, 可选,默认为 2048) — 本地面部提取器(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(形状为 (batch_size, num_frames, channels, height, width) 的 torch.Tensor)— 输入的 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, 可选) — 一个 kwargs 字典,如果指定,将传递给 diffusers.models.attention_processor 中定义的 AttentionProcessor,该处理器在 self.processor 下定义。
  • id_cond (torch.Tensor, 可选) — 由本地面部提取器提取、用于身份条件控制的面部嵌入。
  • id_vit_hidden (torch.Tensor, 可选) — 从人脸图像中提取的 ViT 隐藏状态,用于身份条件控制。
  • return_dict (bool,可选,默认为 True) — 是否返回 ~models.transformer_2d.Transformer2DModelOutput 而不是普通的元组。

ConsisIDTransformer3DModel 的前向方法。

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