Buckets:
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[[diffusers.ConsisIDTransformer3DModel]]
diffusers.ConsisIDTransformer3DModel[[diffusers.ConsisIDTransformer3DModel]]
diffusers.ConsisIDTransformer3DModel(num_attention_heads: int = 30, attention_head_dim: int = 64, in_channels: int = 16, out_channels: int | None = 16, flip_sin_to_cos: bool = True, freq_shift: int = 0, time_embed_dim: int = 512, text_embed_dim: int = 4096, num_layers: int = 30, dropout: float = 0.0, attention_bias: bool = True, sample_width: int = 90, sample_height: int = 60, sample_frames: int = 49, patch_size: int = 2, temporal_compression_ratio: int = 4, 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-05, spatial_interpolation_scale: float = 1.875, temporal_interpolation_scale: float = 1.0, use_rotary_positional_embeddings: bool = False, use_learned_positional_embeddings: bool = False, is_train_face: bool = False, is_kps: bool = False, cross_attn_interval: int = 2, cross_attn_dim_head: int = 128, cross_attn_num_heads: int = 16, LFE_id_dim: int = 1280, LFE_vit_dim: int = 1024, LFE_depth: int = 10, LFE_dim_head: int = 64, LFE_num_heads: int = 16, LFE_num_id_token: int = 5, LFE_num_querie: int = 32, LFE_output_dim: int = 2048, LFE_ff_mult: int = 4, LFE_num_scale: int = 5, local_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 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, tuỳ 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 nhúng thời gian hay không.
time_embed_dim (int, mặc định là 512) : Kích thước chiều đầ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 chiều đầ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) : Độ 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 latents đầ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 hình 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ị chính xác để đảm bảo tính tương thích ngược. Để tạo một transformer với K khung hình latent, giá trị chính xác 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) : Độ 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 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 trong 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 trong 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) : Độ lớn chiều 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 làm tăng khả năng chú ý đến các mẫu phức tạp hơn, nhưng 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 chú ý chéo. Nhiều đầu hơn cho phép các 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) : Độ chiều 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, tùy chọn, 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 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 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) : Độ chiều của mỗi đầu chú ý trong 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 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 Local Facial Extractor (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, tùy chọn, 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 chiều đầu ra của Local Facial Extractor (LFE). Chiều này xác định kích thước 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, tùy chọn, 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[[diffusers.ConsisIDTransformer3DModel.forward]]
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: typing.Union[int, float, torch.LongTensor], timestep_cond: typing.Optional[torch.Tensor] = None, image_rotary_emb: tuple[torch.Tensor, torch.Tensor] | None = None, attention_kwargs: dict[str, typing.Any] | None = None, id_cond: typing.Optional[torch.Tensor] = None, id_vit_hidden: typing.Optional[torch.Tensor] = None, return_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ó shape (batch_size, sequence_len, embed_dims)) : Các embeddings điều kiện (embeddings được tính từ các điều kiện đầu vào như prompts) cần sử dụng.
timestep (torch.LongTensor) : Dùng để chỉ bước khử nhiễu.
timestep_cond (torch.Tensor, tùy chọn) : 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, tuỳ chọn) : Các nhúng vị trí quay đã tính trước.
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.
id_cond (torch.Tensor, tùy chọn) : Nhúng khuôn mặt (face embedding) đượ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.
Trả về:
Nếu return_dict là True, một ~models.transformer_2d.Transformer2DModelOutput sẽ được trả về, ngược lại một tuple trong đó phần tử đầu tiên là tensor mẫu.
Phương thức forward của ConsisIDTransformer3DModel.
Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]
diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
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 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.
Xet Storage Details
- Size:
- 14.6 kB
- Xet hash:
- 4d3215f2581ae26b17151878f123482bfb23142fa7f407c651eee654c45ec1b8
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.