Diffusers documentation
ConsisIDTransformer3DModel
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
< 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 )
Параметры
- 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 to2048) — Размерность выходного слоя 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
< 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 )
Параметры
- 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
< source >( 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.