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

Một mô hình Diffusion Transformer cho dữ liệu 3D từ ConsisID đã được giới thiệu trong Identity-Preserving Text-to-Video Generation by Frequency Decomposition bởi Đại học Bắc Kinh & Đại học Rochester & v.v.

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

from diffusers import ConsisIDTransformer3DModel

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

ConsisIDTransformer3DModel

lớp 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 )

Tham số

  • num_attention_heads (int, mặc định là 30) — Số lượng đầu (heads) được sử dụng cho cơ chế chú ý đa đầu (multi-head attention).
  • attention_head_dim (int, mặc định là 64) — 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, tùy chọn, mặc định là 16) — Số lượng kênh trong đầu ra.
  • flip_sin_to_cos (bool, mặc định là True) — Có nên đảo sin thành cos trong time embedding hay không.
  • time_embed_dim (int, mặc định là 512) — Kích thước đầu ra của các embedding bước thời gian.
  • text_embed_dim (int, mặc định là 4096) — Kích thước đầu vào của các vector nhúng văn bản từ bộ mã hóa văn bản.
  • num_layers (int, mặc định là 30) — Số lượng lớp khối Transformer cần sử dụng.
  • dropout (float, mặc định là 0.0) — Xác suất dropout cần sử dụng.
  • attention_bias (bool, mặc định là True) — Có sử dụng bias trong các lớp chiếu attention hay không.
  • sample_width (int, mặc định là 90) — Chiều rộng của các latents đầu vào.
  • sample_height (int, mặc định là 60) — Chiều cao của các latents đầu vào.
  • sample_frames (int, mặc định là 49) — Số lượng khung hình trong các latent đầu vào. Lưu ý rằng tham số này đã được khởi tạo sai thành 49 thay vì 13 vì ConsisID xử lý 13 khung latent cùng lúc trong các cài đặt mặc định và được khuyến nghị, nhưng không thể thay đổi thành giá trị đúng để đảm bảo tính tương thích ngược. Để tạo một transformer với K khung latent, giá trị đúng cần truyền ở đây là: ((K - 1) * temporal_compression_ratio + 1).
  • patch_size (int, mặc định là 2) — Kích thước của các patch được sử dụng trong lớp nhúng patch.
  • temporal_compression_ratio (int, mặc định là 4) — Tỷ lệ nén theo chiều thời gian. Xem tài liệu cho sample_frames.
  • max_text_seq_length (int, mặc định là 226) — Chiều dài tối đa của chuỗi cho các nhúng văn bản đầu vào.
  • activation_fn (str, mặc định là "gelu-approximate") — Hàm kích hoạt được sử dụng trong mạng truyền thẳng.
  • timestep_activation_fn (str, mặc định là "silu") — Hàm kích hoạt được sử dụng khi tạo các nhúng bước thời gian (timestep embeddings).
  • norm_elementwise_affine (bool, mặc định là True) — Có sử dụng affine theo từng phần tử trong các lớp chuẩn hóa hay không.
  • norm_eps (float, mặc định là 1e-5) — Giá trị epsilon được sử dụng trong các lớp chuẩn hóa.
  • spatial_interpolation_scale (float, mặc định là 1.875) — Hệ số tỷ lệ áp dụng cho các nhúng vị trí 3D trên các chiều không gian.
  • temporal_interpolation_scale (float, mặc định là 1.0) — Hệ số tỷ lệ áp dụng cho các nhúng vị trí 3D trên các chiều thời gian.
  • is_train_face (bool, mặc định là False) — Xác định có bật module bảo toàn danh tính trong quá trình huấn luyện hay không. Khi đặt thành True, mô hình sẽ tập trung vào các tác vụ bảo toàn danh tính.
  • is_kps (bool, mặc định là False) — Có bật keypoint cho bộ trích xuất khuôn mặt toàn cục hay không. Nếu True, các keypoint sẽ có trong mô hình.
  • cross_attn_interval (int, mặc định là 2) — Khoảng cách giữa các lớp cross-attention trong kiến trúc Transformer. Giá trị lớn hơn có thể làm giảm tần suất tính toán cross-attention, giúp giảm chi phí tính toán.
  • cross_attn_dim_head (int, tùy chọn, mặc định là 128) — Kích thước của mỗi đầu chú ý trong các lớp cross-attention của kiến trúc Transformer. Giá trị lớn hơn sẽ tăng khả năng chú ý đến các mẫu phức tạp hơn, nhưng đồng thời cũng làm tăng chi phí bộ nhớ và tính toán.
  • cross_attn_num_heads (int, tùy chọn, mặc định là 16) — Số lượng đầu chú ý trong các lớp cross-attention. Nhiều đầu hơn cho phép có nhiều cơ chế chú ý song song hơn, nắm bắt các mối quan hệ đa dạng giữa các thành phần khác nhau của đầu vào, nhưng cũng có thể làm tăng yêu cầu về tính toán.
  • LFE_id_dim (int, tùy chọn, mặc định là 1280) — Độ lớn của vector nhận dạng được sử dụng trong Local Facial Extractor (LFE). Vector này đại diện cho các đặc trưng nhận dạng của khuôn mặt, đóng vai trò quan trọng trong các tác vụ như nhận dạng khuôn mặt và duy trì nhận dạng xuyên suốt các khung hình khác nhau.
  • LFE_vit_dim (int, optional, mặc định là 1024) — Kích thước của đầu ra vision transformer (ViT) được sử dụng trong Local Facial Extractor (LFE). Giá trị này quyết định kích thước của các vector đặc trưng do transformer tạo ra, sẽ được xử lý để trích xuất đặc trưng khuôn mặt.
  • LFE_depth (int, tùy chọn, mặc định là 10) — Số lượng lớp trong bộ trích xuất khuôn mặt cục bộ (Local Facial Extractor - LFE). Việc tăng độ sâu cho phép mô hình nắm bắt các biểu diễn phức tạp hơn của các đặc điểm khuôn mặt, nhưng đồng thời cũng làm tăng tải tính toán.
  • LFE_dim_head (int, tùy chọn, mặc định là 64) — Kích thước của mỗi đầu chú ý (attention head) trong Bộ trích xuất khuôn mặt cục bộ (Local Facial Extractor - LFE). Tham số này ảnh hưởng đến mức độ chi tiết mà mô hình có thể xử lý và tập trung vào các phần khác nhau của đặc điểm khuôn mặt trong quá trình trích xuất.
  • LFE_num_heads (int, tùy chọn, mặc định là 16) — Số lượng đầu chú ý (attention heads) trong bộ trích xuất khuôn mặt cục bộ (Local Facial Extractor - LFE). Nhiều đầu hơn có thể cải thiện khả năng nắm bắt các đặc điểm khuôn mặt đa dạng của mô hình, nhưng với chi phí là độ phức tạp tính toán tăng lên.
  • LFE_num_id_token (int, tùy chọn, mặc định là 5) — Số lượng token nhận dạng được sử dụng trong bộ trích xuất khuôn mặt cục bộ (LFE). Tham số này xác định số lượng token liên quan đến nhận dạng mà mô hình sẽ xử lý để đảm bảo việc bảo toàn danh tính khuôn mặt trong quá trình trích xuất đặc trưng.
  • LFE_num_querie (int, optional, mặc định là 32) — Số lượng token truy vấn được sử dụng trong Local Facial Extractor (LFE). Các token này được dùng để nắm bắt thông tin liên quan đến khuôn mặt có tần số cao, hỗ trợ trích xuất đặc điểm khuôn mặt chính xác.
  • LFE_output_dim (int, tùy chọn, mặc định là 2048) — Kích thước đầu ra của Local Facial Extractor (LFE). Kích thước này xác định độ lớn của các vector đặc trưng do module LFE tạo ra, sẽ được sử dụng cho các tác vụ tiếp theo như nhận diện khuôn mặt hoặc theo dõi.
  • LFE_ff_mult (int, optional, mặc định là 4) — Hệ số nhân được áp dụng cho kích thước lớp ẩn của mạng feed-forward trong Local Facial Extractor (LFE). Giá trị cao hơn làm tăng khả năng của mô hình trong việc học các phép biến đổi đặc điểm khuôn mặt phức tạp hơn, nhưng đồng thời cũng làm tăng yêu cầu về tính toán và bộ nhớ.
  • LFE_num_scale (int, tùy chọn, mặc định là 5) — Số lượng các thang đo khác nhau của đặc trưng thị giác. Giá trị cao hơn làm tăng khả năng của mô hình trong việc học các phép biến đổi đặc trưng khuôn mặt phức tạp hơn, nhưng đồng thời cũng làm tăng yêu cầu về tính toán và bộ nhớ.
  • local_face_scale (float, mặc định là 1.0) — Hệ số tỷ lệ được sử dụng để điều chỉnh mức độ quan trọng của các đặc điểm khuôn mặt cục bộ trong mô hình. Điều này có thể ảnh hưởng đến mức độ tập trung của mô hình vào nội dung khuôn mặt có tần số cao.

Một mô hình Transformer cho dữ liệu dạng video trong ConsisID.

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 )

Tham số

  • hidden_states (torch.Tensor có hình dạng (batch_size, num_frames, channels, height, width)) — hidden_states đầu vào.
  • encoder_hidden_states (torch.Tensor có hình dạng (batch_size, sequence_len, embed_dims)) — Các embedding điều kiện (embedding được tính từ các điều kiện đầu vào như prompt) cần sử dụng.
  • timestep (torch.LongTensor) — Dùng để chỉ bước khử nhiễu.
  • timestep_cond (torch.Tensor, optional) — Các embedding điều kiện cho timestep. Nếu được cung cấp, các embedding này sẽ được cộng với các mẫu đã đi qua lớp self.time_embedding để thu được các embedding timestep cuối cùng.
  • image_rotary_emb (tuple của torch.Tensor, tùy chọn) — Các embedding vị trí xoay đã được tính trước.
  • attention_kwargs (dict, tùy chọn) — Một từ điển kwargs, nếu được chỉ định, sẽ được truyền đến AttentionProcessor như đã định nghĩa dưới self.processor trong diffusers.models.attention_processor.
  • id_cond (torch.Tensor, tùy chọn) — Vector nhúng khuôn mặt được trích xuất bởi bộ trích xuất khuôn mặt cục bộ, dùng để điều kiện hóa danh tính.
  • id_vit_hidden (torch.Tensor, tùy chọn) — Trạng thái ẩn của ViT được trích xuất từ các hình ảnh khuôn mặt, dùng để điều kiện hóa danh tính.
  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một ~models.transformer_2d.Transformer2DModelOutput thay vì một tuple thông thường hay không.

Phương thức forward của ConsisIDTransformer3DModel.

Transformer2DModelOutput

lớp diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Tham số

  • sample (torch.Tensor có hình dạng (batch_size, num_channels, height, width) hoặc (batch size, num_vector_embeds - 1, num_latent_pixels) nếu Transformer2DModel là rời rạc) — Trạng thái ẩn đầu ra được điều kiện bởi đầu vào encoder_hidden_states. Nếu là rời rạc, trả về các phân phối xác suất cho các pixel tiềm ẩn không nhiễu.

Đầu ra của Transformer2DModel.

Update on GitHub