Diffusers documentation
ConsisIDTransformer3DModel
ConsisIDTransformer3DModel
Un modelo Diffusion Transformer para datos 3D de ConsisID fue introducido en Identity-Preserving Text-to-Video Generation by Frequency Decomposition por Peking University & University of Rochester & etc.
El modelo se puede cargar con el siguiente fragmento 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
clase 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, por defecto30) — El número de cabezas a utilizar para la atención multi-cabeza. - attention_head_dim (
int, por defecto64) — El número de canales en cada cabeza. - in_channels (
int, por defecto16) — El número de canales en la entrada. - out_channels (
int, opcional, valor predeterminado16) — El número de canales en la salida. - flip_sin_to_cos (
bool, por defectoTrue) — Si se debe cambiar el sin por el cos en la incrustación temporal. - time_embed_dim (
int, por defecto512) — Dimensión de salida de las incrustaciones de paso de tiempo. - text_embed_dim (
int, por defecto4096) — Dimensión de entrada de las incrustaciones de texto del codificador de texto. - num_layers (
int, por defecto30) — El número de capas de bloques Transformer a utilizar. - dropout (
float, por defecto0.0) — La probabilidad de dropout a utilizar. - attention_bias (
bool, por defectoTrue) — Si se debe usar sesgo en las capas de proyección de atención. - sample_width (
int, por defecto90) — El ancho de los latentes de entrada. - sample_height (
int, por defecto60) — La altura de los latentes de entrada. - sample_frames (
int, por defecto49) — El número de fotogramas en los latentes de entrada. Tenga en cuenta que este parámetro se inicializó incorrectamente en 49 en lugar de 13, ya que ConsisID procesaba 13 fotogramas latentes a la vez en su configuración predeterminada y recomendada, pero no se puede cambiar al valor correcto para garantizar la compatibilidad hacia atrás. Para crear un transformador con K fotogramas latentes, el valor correcto que se debe pasar aquí sería: ((K - 1) * temporal_compression_ratio + 1). - patch_size (
int, por defecto2) — El tamaño de los parches a utilizar en la capa de incrustación de parches. - temporal_compression_ratio (
int, por defecto4) — La relación de compresión a lo largo de la dimensión temporal. Consulte la documentación desample_frames. - max_text_seq_length (
int, por defecto226) — La longitud máxima de la secuencia de las incrustaciones de texto de entrada. - activation_fn (
str, por defecto"gelu-approximate") — Función de activación a utilizar en la red feed-forward. - timestep_activation_fn (
str, por defecto"silu") — Función de activación a utilizar al generar las incrustaciones de paso temporal. - norm_elementwise_affine (
bool, por defectoTrue) — Si se debe usar afinidad por elemento en las capas de normalización. - norm_eps (
float, por defecto1e-5) — El valor de epsilon a utilizar en las capas de normalización. - spatial_interpolation_scale (
float, por defecto1.875) — Factor de escala a aplicar en los embeddings posicionales 3D a lo largo de las dimensiones espaciales. - temporal_interpolation_scale (
float, por defecto1.0) — Factor de escala para aplicar en los embeddings posicionales 3D a lo largo de las dimensiones temporales. - is_train_face (
bool, por defectoFalse) — Si se debe habilitar el módulo de preservación de identidad durante el proceso de entrenamiento. Cuando se establece enTrue, el modelo se centrará en tareas de preservación de identidad. - is_kps (
bool, por defectoFalse) — Si se habilita el punto clave para el extractor facial global. Si esTrue, los puntos clave estarán en el modelo. - cross_attn_interval (
int, por defecto2) — El intervalo entre las capas de atención cruzada en la arquitectura Transformer. Un valor mayor puede reducir la frecuencia de los cálculos de atención cruzada, lo que ayuda a disminuir la sobrecarga computacional. - cross_attn_dim_head (
int, opcional, valor predeterminado128) — La dimensionalidad de cada cabeza de atención en las capas de atención cruzada de la arquitectura Transformer. Un valor mayor aumenta la capacidad de atender a patrones más complejos, pero también aumenta los costos de memoria y computación. - cross_attn_num_heads (
int, opcional, valor predeterminado16) — El número de cabezas de atención en las capas de atención cruzada. Más cabezas permiten mecanismos de atención más paralelos, capturando relaciones diversas entre los distintos componentes de la entrada, pero también pueden aumentar los requisitos computacionales. - LFE_id_dim (
int, opcional, valor predeterminado1280) — La dimensionalidad del vector de identidad utilizado en el Extractor Facial Local (LFE). Este vector representa las características de identidad de un rostro, que son importantes para tareas como el reconocimiento facial y la preservación de la identidad a través de diferentes fotogramas. - LFE_vit_dim (
int, opcional, valor predeterminado1024) — La dimensión de la salida del vision transformer (ViT) utilizada en el Local Facial Extractor (LFE). Este valor determina el tamaño de los vectores de características generados por el transformer que se procesarán para la extracción de características faciales. - LFE_depth (
int, opcional, valor predeterminado10) — El número de capas en el Extractor Facial Local (LFE). Aumentar la profundidad permite al modelo capturar representaciones más complejas de las características faciales, pero también aumenta la carga computacional. - LFE_dim_head (
int, opcional, valor predeterminado64) — La dimensionalidad de cada cabeza de atención en el Extractor Facial Local (LFE). Este parámetro afecta la precisión con la que el modelo puede procesar y enfocarse en diferentes partes de las características faciales durante el proceso de extracción. - LFE_num_heads (
int, opcional, valor predeterminado16) — El número de cabezas de atención en el Local Facial Extractor (LFE). Más cabezas pueden mejorar la capacidad del modelo para capturar diversas características faciales, pero a costa de un aumento en la complejidad computacional. - LFE_num_id_token (
int, opcional, valor predeterminado5) — El número de tokens de identidad utilizados en el Local Facial Extractor (LFE). Esto define cuántos tokens relacionados con la identidad procesará el modelo para garantizar la preservación de la identidad facial durante la extracción de características. - LFE_num_querie (
int, opcional, valor predeterminado32) — El número de tokens de consulta utilizados en el Local Facial Extractor (LFE). Estos tokens se utilizan para capturar información facial de alta frecuencia que ayuda en la extracción precisa de rasgos faciales. - LFE_output_dim (
int, opcional, valor predeterminado2048) — La dimensión de salida del Local Facial Extractor (LFE). Esta dimensión determina el tamaño de los vectores de características producidos por el módulo LFE, que se utilizarán para tareas posteriores como el reconocimiento facial o el seguimiento. - LFE_ff_mult (
int, opcional, valor predeterminado4) — El factor de multiplicación aplicado al tamaño de la capa oculta de la red feed-forward en el Local Facial Extractor (LFE). Un valor más alto aumenta la capacidad del modelo para aprender transformaciones más complejas de rasgos faciales, pero también aumenta los requisitos de cómputo y memoria. - LFE_num_scale (
int, opcional, valor predeterminado5) — El número de escalas diferentes de la característica visual. Un valor más alto aumenta la capacidad del modelo para aprender transformaciones más complejas de características faciales, pero también aumenta los requisitos de cómputo y memoria. - local_face_scale (
float, por defecto1.0) — Un factor de escala utilizado para ajustar la importancia de las facciones faciales locales en el modelo. Esto puede influir en la intensidad con la que el modelo se centra en el contenido facial de alta frecuencia.
Un modelo Transformer para datos similares a video en 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)) — Entradahidden_states. - encoder_hidden_states (
torch.Tensorde forma(batch_size, sequence_len, embed_dims)) — Incrustaciones condicionales (incrustaciones calculadas a partir de las condiciones de entrada, como los prompts) que se deben utilizar. - timestep (
torch.LongTensor) — Se utiliza para indicar el paso de desruido. - timestep_cond (
torch.Tensor, opcional) — Incrustaciones condicionales para el paso de tiempo. Si se proporcionan, las incrustaciones se sumarán con las muestras pasadas a través de la capaself.time_embeddingpara obtener las incrustaciones finales del paso de tiempo. - image_rotary_emb (
tupledetorch.Tensor, opcional) — Incrustaciones posicionales rotatorias precalculadas. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - id_cond (
torch.Tensor, opcional) — El incrustado facial extraído por el extractor facial local utilizado para la condicionamiento de identidad. - id_vit_hidden (
torch.Tensor, opcional) — Los estados ocultos de ViT extraídos de las imágenes faciales utilizados para la condicionamiento de identidad. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~models.transformer_2d.Transformer2DModelOutputen lugar de una tupla simple.
El método forward de ConsisIDTransformer3DModel.
Transformer2DModelOutput
clase diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Parámetros
- sample (
torch.Tensorde forma(batch_size, num_channels, height, width)o(batch size, num_vector_embeds - 1, num_latent_pixels)si Transformer2DModel es discreto) — La salida de estados ocultos condicionada a la entradaencoder_hidden_states. Si es discreto, devuelve distribuciones de probabilidad para los píxeles latentes sin ruido.
La salida de Transformer2DModel.