Diffusers documentation
ConsisIDTransformer3DModel
ConsisIDTransformer3DModel
Um modelo Diffusion Transformer para dados 3D do ConsisID foi introduzido em Identity-Preserving Text-to-Video Generation by Frequency Decomposition pela Peking University & University of Rochester & etc.
O modelo pode ser carregado com o seguinte trecho de código.
from diffusers import ConsisIDTransformer3DModel
transformer = ConsisIDTransformer3DModel.from_pretrained("BestWishYsh/ConsisID-preview", subfolder="transformer", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"ConsisIDTransformer3DModel
classe 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 )
Parâmetros
- num_attention_heads (
int, padrão30) — O número de cabeças a serem usadas para a atenção multi-cabeça. - attention_head_dim (
int, padrão64) — O número de canais em cada cabeça. - in_channels (
int, padrão16) — O número de canais na entrada. - out_channels (
int, opcional, padrão16) — O número de canais na saída. - flip_sin_to_cos (
bool, padrãoTrue) — Se deve inverter o sin para cos no embedding de tempo. - time_embed_dim (
int, padrão512) — Dimensão de saída dos embeddings de timestep. - text_embed_dim (
int, padrão4096) — Dimensão de entrada dos embeddings de texto do codificador de texto. - num_layers (
int, padrão30) — O número de blocos de camadas de Transformer a serem usados. - dropout (
float, padrão0.0) — A probabilidade de dropout a ser utilizada. - attention_bias (
bool, padrãoTrue) — Se deve usar viés nas camadas de projeção de atenção. - sample_width (
int, padrão90) — A largura dos latentes de entrada. - sample_height (
int, padrão60) — A altura dos latentes de entrada. - sample_frames (
int, padrão49) — O número de quadros nos latentes de entrada. Observe que este parâmetro foi inicializado incorretamente como 49 em vez de 13, pois o ConsisID processava 13 quadros latentes de uma vez em suas configurações padrão e recomendadas, mas não pode ser alterado para o valor correto para garantir compatibilidade reversa. Para criar um transformer com K quadros latentes, o valor correto a ser passado aqui seria: ((K - 1) * temporal_compression_ratio + 1). - patch_size (
int, padrão2) — O tamanho dos patches a serem usados na camada de incorporação de patches. - temporal_compression_ratio (
int, padrão4) — A razão de compressão ao longo da dimensão temporal. Consulte a documentação desample_frames. - max_text_seq_length (
int, padrão226) — O comprimento máximo da sequência dos embeddings de texto de entrada. - activation_fn (
str, padrão"gelu-approximate") — Função de ativação a ser usada no feed-forward. - timestep_activation_fn (
str, padrão"silu") — Função de ativação a ser usada ao gerar os embeddings de timestep. - norm_elementwise_affine (
bool, padrãoTrue) — Se deve usar afinidade elementar em camadas de normalização. - norm_eps (
float, padrão1e-5) — O valor de epsilon a ser usado nas camadas de normalização. - spatial_interpolation_scale (
float, padrão1.875) — Fator de escala a ser aplicado nos embeddings posicionais 3D ao longo das dimensões espaciais. - temporal_interpolation_scale (
float, padrão1.0) — Fator de escala a ser aplicado nos embeddings posicionais 3D ao longo das dimensões temporais. - is_train_face (
bool, padrãoFalse) — Se deve habilitar o módulo de preservação de identidade durante o processo de treinamento. Quando definido comoTrue, o modelo se concentrará em tarefas de preservação de identidade. - is_kps (
bool, padrãoFalse) — Se deve habilitar keypoint para o extrator facial global. SeTrue, os keypoints estarão no modelo. - cross_attn_interval (
int, padrão2) — O intervalo entre as camadas de atenção cruzada na arquitetura Transformer. Um valor maior pode reduzir a frequência dos cálculos de atenção cruzada, o que pode ajudar a reduzir a sobrecarga computacional. - cross_attn_dim_head (
int, opcional, padrão128) — A dimensionalidade de cada cabeça de atenção nas camadas de atenção cruzada da arquitetura Transformer. Um valor maior aumenta a capacidade de prestar atenção a padrões mais complexos, mas também aumenta os custos de memória e computação. - cross_attn_num_heads (
int, opcional, padrão16) — O número de cabeças de atenção nas camadas de atenção cruzada. Mais cabeças permitem mecanismos de atenção mais paralelos, capturando relações diversas entre diferentes componentes da entrada, mas também podem aumentar os requisitos computacionais. - LFE_id_dim (
int, opcional, padrão1280) — A dimensionalidade do vetor de identidade usado no Local Facial Extractor (LFE). Este vetor representa os recursos de identidade de um rosto, que são importantes para tarefas como reconhecimento facial e preservação de identidade entre diferentes quadros. - LFE_vit_dim (
int, opcional, padrão1024) — A dimensão da saída do vision transformer (ViT) utilizada no Local Facial Extractor (LFE). Este valor determina o tamanho dos vetores de características gerados pelo transformer que serão processados para a extração de características faciais. - LFE_depth (
int, opcional, padrão10) — O número de camadas no Local Facial Extractor (LFE). Aumentar a profundidade permite que o modelo capture representações mais complexas das características faciais, mas também aumenta a carga computacional. - LFE_dim_head (
int, opcional, padrão64) — A dimensionalidade de cada cabeça de atenção no Local Facial Extractor (LFE). Este parâmetro afeta o quão finamente o modelo pode processar e focar em diferentes partes das características faciais durante o processo de extração. - LFE_num_heads (
int, opcional, padrão16) — O número de cabeças de atenção no Local Facial Extractor (LFE). Mais cabeças podem melhorar a capacidade do modelo de capturar características faciais diversas, mas ao custo de uma maior complexidade computacional. - LFE_num_id_token (
int, opcional, padrão5) — O número de tokens de identidade usados no Local Facial Extractor (LFE). Isso define quantos tokens relacionados à identidade o modelo processará para garantir a preservação da identidade facial durante a extração de recursos. - LFE_num_querie (
int, opcional, padrão32) — O número de tokens de consulta usados no Local Facial Extractor (LFE). Esses tokens são usados para capturar informações faciais de alta frequência que auxiliam na extração precisa de características faciais. - LFE_output_dim (
int, opcional, padrão2048) — A dimensão de saída do Local Facial Extractor (LFE). Essa dimensão determina o tamanho dos vetores de características produzidos pelo módulo LFE, que serão usados em tarefas subsequentes, como reconhecimento facial ou rastreamento. - LFE_ff_mult (
int, opcional, padrão4) — O fator de multiplicação aplicado ao tamanho da camada oculta da rede feed-forward no Local Facial Extractor (LFE). Um valor maior aumenta a capacidade do modelo de aprender transformações mais complexas de características faciais, mas também aumenta os requisitos de computação e memória. - LFE_num_scale (
int, opcional, padrão5) — O número de diferentes escalas de recurso visual. Um valor maior aumenta a capacidade do modelo de aprender transformações mais complexas de recursos faciais, mas também aumenta os requisitos de computação e memória. - local_face_scale (
float, padrão1.0) — Fator de escala usado para ajustar a importância dos recursos faciais locais no modelo. Isso pode influenciar o quão fortemente o modelo se concentra em conteúdo facial de alta frequência.
Um modelo Transformer para dados semelhantes a vídeo em 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 )
Parâmetros
- hidden_states (
torch.Tensorde forma(batch_size, num_frames, channels, height, width)) —hidden_statesde entrada. - encoder_hidden_states (
torch.Tensorde forma(batch_size, sequence_len, embed_dims)) — Incorporações condicionais (incorporações calculadas a partir das condições de entrada, como prompts) a serem usadas. - timestep (
torch.LongTensor) — Usado para indicar o passo de desruido. - timestep_cond (
torch.Tensor, opcional) — Incorporações condicionais para o timestep. Se fornecidas, as incorporações serão somadas às amostras passadas pela camadaself.time_embeddingpara obter as incorporações finais de timestep. - image_rotary_emb (
tupledetorch.Tensor, opcional) — Incorporações posicionais rotativas pré-computadas. - attention_kwargs (
dict, opcional) — Um dicionário de kwargs que, se especificado, é passado aoAttentionProcessorconforme definido emself.processorem diffusers.models.attention_processor. - id_cond (
torch.Tensor, opcional) — O embedding facial extraído pelo extrator facial local usado para condicionamento de identidade. - id_vit_hidden (
torch.Tensor, opcional) — Os estados ocultos do ViT extraídos de imagens faciais usados para condicionamento de identidade. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um~models.transformer_2d.Transformer2DModelOutputem vez de uma tupla simples.
O método forward do ConsisIDTransformer3DModel.
Transformer2DModelOutput
classe diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Parâmetros
- sample (
torch.Tensorde forma(batch_size, num_channels, height, width)ou(batch size, num_vector_embeds - 1, num_latent_pixels)se Transformer2DModel for discreto) — A saída dos estados ocultos condicionada à entradaencoder_hidden_states. Se discreto, retorna distribuições de probabilidade para os pixels latentes sem ruído.
A saída de Transformer2DModel.