Diffusers documentation
ConsisIDTransformer3DModel
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
< source >( 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 chosample_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ànhTrue, 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ếuTrue, 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
< source >( 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.Tensorcó hình dạng(batch_size, num_frames, channels, height, width)) —hidden_statesđầu vào. - encoder_hidden_states (
torch.Tensorcó 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ớpself.time_embeddingđể thu được các embedding timestep cuối cùng. - image_rotary_emb (
tuplecủatorch.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 đếnAttentionProcessornhư đã định nghĩa dướiself.processortrong 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.Transformer2DModelOutputthay 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
< source >( sample: torch.Tensor )
Tham số
- sample (
torch.Tensorcó 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àoencoder_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.