Diffusers documentation

ConsisIDTransformer3DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ConsisIDTransformer3DModel

A Diffusion Transformer model for 3D data from ConsisID was introduced in Identity-Preserving Text-to-Video Generation by Frequency Decomposition by Peking University & University of Rochester & etc.

Модель можно загрузить с помощью следующего фрагмента кода.

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

< >

( 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 )

Параметры

  • num_attention_heads (int, по умолчанию 30) — Количество голов, используемых для многоголовного внимания.
  • attention_head_dim (int, по умолчанию 64) — Количество каналов в каждой голове.
  • in_channels (int, по умолчанию 16) — Количество каналов на входе.
  • out_channels (int, необязательный, по умолчанию 16) — Количество каналов на выходе.
  • flip_sin_to_cos (bool, по умолчанию True) — Определяет, следует ли заменить sin на cos во временном эмбеддинге.
  • time_embed_dim (int, по умолчанию 512) — Размерность выходного вектора эмбеддингов временных шагов.
  • text_embed_dim (int, по умолчанию 4096) — Входное измерение текстовых эмбеддингов от текстового энкодера.
  • num_layers (int, по умолчанию 30) — Количество блоков Transformer, используемых в модели.
  • dropout (float, по умолчанию 0.0) — Вероятность применения dropout.
  • attention_bias (bool, по умолчанию True) — Использовать ли смещение (bias) в слоях проекции внимания.
  • sample_width (int, по умолчанию 90) — Ширина входных латентов.
  • sample_height (int, по умолчанию 60) — Высота входных латентов.
  • sample_frames (int, по умолчанию 49) — Количество кадров во входных латентах. Обратите внимание, что этот параметр был неверно инициализирован значением 49 вместо 13, поскольку ConsisID обрабатывал 13 латентных кадров за один проход в своих настройках по умолчанию и рекомендуемых настройках, однако его нельзя изменить на правильное значение, чтобы обеспечить обратную совместимость. Чтобы создать трансформер с K латентными кадрами, правильным значением для передачи здесь будет: ((K - 1) * temporal_compression_ratio + 1).
  • patch_size (int, по умолчанию 2) — Размер патчей, используемых в слое встраивания патчей.
  • temporal_compression_ratio (int, по умолчанию 4) — Коэффициент сжатия по временному измерению. См. документацию для sample_frames.
  • max_text_seq_length (int, по умолчанию 226) — Максимальная длина последовательности входных текстовых эмбеддингов.
  • activation_fn (str, по умолчанию "gelu-approximate") — Функция активации, используемая в полносвязном слое.
  • timestep_activation_fn (str, по умолчанию "silu") — Функция активации, используемая при генерации эмбеддингов временных шагов.
  • norm_elementwise_affine (bool, по умолчанию True) — Использовать ли elementwise affine в слоях нормализации.
  • norm_eps (float, по умолчанию 1e-5) — Значение эпсилона, используемое в слоях нормализации.
  • spatial_interpolation_scale (float, по умолчанию 1.875) — Коэффициент масштабирования, применяемый к 3D-позиционным эмбеддингам по пространственным измерениям.
  • temporal_interpolation_scale (float, по умолчанию 1.0) — Коэффициент масштабирования, применяемый к 3D-позиционным эмбеддингам вдоль временных измерений.
  • is_train_face (bool, по умолчанию False) — Определяет, следует ли включать модуль сохранения идентичности в процессе обучения. Если установлено значение True, модель будет ориентироваться на задачи сохранения идентичности.
  • is_kps (bool, по умолчанию False) — Включает ли использование ключевых точек для глобального извлечателя лиц. Если True, ключевые точки будут присутствовать в модели.
  • cross_attn_interval (int, по умолчанию 2) — Интервал между слоями кросс-внимания в архитектуре Transformer. Увеличение значения может снизить частоту вычислений кросс-внимания, что помогает уменьшить вычислительные затраты.
  • cross_attn_dim_head (int, optional, по умолчанию 128) — Размерность каждого внимания в слоях кросс-внимания архитектуры Transformer. Увеличение значения повышает способность модели обрабатывать более сложные паттерны, но также увеличивает затраты памяти и вычислительных ресурсов.
  • cross_attn_num_heads (int, optional, по умолчанию 16) — Количество голок внимания в слоях кросс-внимания. Большое число голок позволяет использовать более параллельные механизмы внимания, улавливая разнообразные связи между различными компонентами входных данных, но также может увеличивать вычислительные требования.
  • LFE_id_dim (int, optional, по умолчанию 1280) — Размерность вектора идентичности, используемого в Local Facial Extractor (LFE). Этот вектор представляет признаки идентичности лица, которые важны для таких задач, как распознавание лиц и сохранение идентичности в разных кадрах.
  • LFE_vit_dim (int, optional, по умолчанию 1024) — Размерность выхода vision transformer (ViT), используемого в Local Facial Extractor (LFE). Это значение определяет размерность векторов признаков, генерируемых трансформером, которые будут обработаны для извлечения черт лица.
  • LFE_depth (int, optional, по умолчанию 10) — Количество слоев в Local Facial Extractor (LFE). Увеличение глубины позволяет модели захватывать более сложные представления черт лица, но также повышает вычислительную нагрузку.
  • LFE_dim_head (int, optional, по умолчанию 64) — Размерность каждого внимания в Local Facial Extractor (LFE). Этот параметр влияет на то, насколько детально модель может обрабатывать и фокусироваться на различных частях черт лица в процессе извлечения.
  • LFE_num_heads (int, optional, по умолчанию 16) — Количество головок внимания в Local Facial Extractor (LFE). Увеличение числа головок может повысить способность модели улавливать разнообразные черты лица, но за счёт роста вычислительной сложности.
  • LFE_num_id_token (int, optional, по умолчанию 5) — Количество токенов идентичности, используемых в Local Facial Extractor (LFE). Это определяет, сколько токенов, связанных с идентичностью, модель будет обрабатывать для обеспечения сохранения идентичности лица во время извлечения признаков.
  • LFE_num_querie (int, optional, по умолчанию 32) — Количество токенов запроса, используемых в Local Facial Extractor (LFE). Эти токены применяются для захвата информации о лице с высокой частотой, что способствует точному извлечению черт лица.
  • LFE_output_dim (int, optional, defaults to 2048) — Размерность выходного слоя Local Facial Extractor (LFE). Эта размерность определяет размер векторов признаков, генерируемых модулем LFE, которые будут использоваться для последующих задач, таких как распознавание лиц или отслеживание.
  • LFE_ff_mult (int, optional, по умолчанию 4) — Коэффициент умножения, применяемый к размеру скрытого слоя сети прямого распространения в Local Facial Extractor (LFE). Более высокое значение увеличивает способность модели обучаться более сложным преобразованиям черт лица, но также повышает требования к вычислениям и памяти.
  • LFE_num_scale (int, optional, по умолчанию 5) — Количество различных масштабов визуальных признаков. Более высокое значение увеличивает способность модели обучаться более сложным преобразованиям черт лица, но также повышает требования к вычислениям и памяти.
  • local_face_scale (float, по умолчанию 1.0) — Коэффициент масштабирования, используемый для корректировки важности локальных черт лица в модели. Это может влиять на то, насколько сильно модель фокусируется на высокочастотном содержании, связанном с лицом.

Модель Transformer для видеоподобных данных в 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 )

Параметры

  • hidden_states (torch.Tensor формы (batch_size, num_frames, channels, height, width)) — Входные hidden_states.
  • encoder_hidden_states (torch.Tensor формы (batch_size, sequence_len, embed_dims)) — Условные эмбеддинги (эмбеддинги, вычисленные на основе входных условий, таких как промпты), которые следует использовать.
  • timestep (torch.LongTensor) — Используется для указания шага денойзинга.
  • timestep_cond (torch.Tensor, необязательный) — Условные эмбеддинги для временного шага. Если переданы, эмбеддинги будут сложены с сэмплами, прошедшими через слой self.time_embedding, чтобы получить итоговые эмбеддинги временного шага.
  • image_rotary_emb (tuple из torch.Tensor, необязательный) — Предварительно вычисленные ротационные позиционные эмбеддинги.
  • attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_processor.
  • id_cond (torch.Tensor, необязательный) — Векторное представление лица, извлечённое локальным экстрактором лиц и используемое для условного формирования идентичности.
  • id_vit_hidden (torch.Tensor, необязательный) — Скрытые состояния ViT, извлечённые из изображений лиц и используемые для условного формирования идентичности.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~models.transformer_2d.Transformer2DModelOutput вместо обычного кортежа.

Метод forward модели ConsisIDTransformer3DModel.

Transformer2DModelOutput

класс diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Параметры

  • sample (torch.Tensor формы (batch_size, num_channels, height, width) или (batch size, num_vector_embeds - 1, num_latent_pixels), если Transformer2DModel дискретный) — Выходные скрытые состояния, обусловленные входом encoder_hidden_states. Если модель дискретная, возвращает распределения вероятностей для латентных пикселей без шума.

Вывод Transformer2DModel.

Update on GitHub