# ConsisIDTransformer3DModel

Pekin Üniversitesi & Rochester Üniversitesi & diğerleri tarafından [Identity-Preserving Text-to-Video Generation by Frequency Decomposition](https://huggingface.co/papers/2411.17440) makalesinde [ConsisID](https://github.com/PKU-YuanGroup/ConsisID)'den 3D veriler için bir Diffusion Transformer modeli tanıtılmıştır.

Model, aşağıdaki kod parçasıyla yüklenebilir.

```python
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]]

#### diffusers.ConsisIDTransformer3DModel[[diffusers.ConsisIDTransformer3DModel]]

```python
diffusers.ConsisIDTransformer3DModel(num_attention_heads: int = 30, attention_head_dim: int = 64, in_channels: int = 16, out_channels: int | None = 16, flip_sin_to_cos: bool = True, freq_shift: int = 0, time_embed_dim: int = 512, text_embed_dim: int = 4096, num_layers: int = 30, dropout: float = 0.0, attention_bias: bool = True, sample_width: int = 90, sample_height: int = 60, sample_frames: int = 49, patch_size: int = 2, temporal_compression_ratio: int = 4, max_text_seq_length: int = 226, activation_fn: str = 'gelu-approximate', timestep_activation_fn: str = 'silu', norm_elementwise_affine: bool = True, norm_eps: float = 1e-05, spatial_interpolation_scale: float = 1.875, temporal_interpolation_scale: float = 1.0, use_rotary_positional_embeddings: bool = False, use_learned_positional_embeddings: bool = False, is_train_face: bool = False, is_kps: bool = False, cross_attn_interval: int = 2, cross_attn_dim_head: int = 128, cross_attn_num_heads: int = 16, LFE_id_dim: int = 1280, LFE_vit_dim: int = 1024, LFE_depth: int = 10, LFE_dim_head: int = 64, LFE_num_heads: int = 16, LFE_num_id_token: int = 5, LFE_num_querie: int = 32, LFE_output_dim: int = 2048, LFE_ff_mult: int = 4, LFE_num_scale: int = 5, local_face_scale: float = 1.0)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/consisid_transformer_3d.py#L351)

**Parametreler:**

num_attention_heads (`int`, varsayılan `30`) : Çok başlı dikkat için kullanılacak baş sayısı.

attention_head_dim (`int`, varsayılan `64`) : Her baştaki kanal sayısı.

in_channels (`int`, varsayılan `16`) : Girdideki kanal sayısı.

out_channels (`int`, *isteğe bağlı*, varsayılan `16`) : Çıktıdaki kanal sayısı.

flip_sin_to_cos (`bool`, varsayılan `True`) : Zaman gömümünde sin'in cos'a çevrilip çevrilmeyeceğini belirtir.

time_embed_dim (`int`, varsayılan `512`) : Zaman adımları gömme çıktısının boyutu.

text_embed_dim (`int`, varsayılan `4096`) : Metin kodlayıcısından gelen metin gömme girdi boyutu.

num_layers (`int`, varsayılan `30`) : Kullanılacak Transformer bloğu katman sayısı.

dropout (`float`, varsayılan `0.0`) : Kullanılacak dropout olasılığı.

attention_bias (`bool`, varsayılan `True`) : Dikkat projeksiyon katmanlarında sapma (bias) kullanılıp kullanılmayacağı.

sample_width (`int`, varsayılan `90`) : Girdi latentlerinin genişliği.

sample_height (`int`, varsayılan `60`) : Girdi latentlerinin yüksekliği.

sample_frames (`int`, varsayılan `49`) : Girdi latentlerindeki kare sayısı. Not: ConsisID, varsayılan ve önerilen ayarlarında 13 latent kareyi birden işlediği için bu parametre 13 yerine yanlışlıkla 49 olarak başlatılmıştır; ancak geriye dönük uyumluluğu sağlamak için doğru değere değiştirilemez. K latent kareli bir dönüştürücü oluşturmak için buraya geçirilmesi gereken doğru değer şudur: ((K - 1) * temporal_compression_ratio + 1).

patch_size (`int`, varsayılan `2`) : Yama gömme katmanında kullanılacak yamaların boyutu.

temporal_compression_ratio (`int`, varsayılan `4`) : Zaman boyutu boyunca sıkıştırma oranı. `sample_frames` belgelendirmesine bakın.

max_text_seq_length (`int`, varsayılan `226`) : Girdi metin gömme dizilerinin en uzun uzunluğu.

activation_fn (`str`, varsayılan `"gelu-approximate"`) : İleri beslemeli ağda kullanılacak aktivasyon fonksiyonu.

timestep_activation_fn (`str`, varsayılan `"silu"`) : Zaman adımları gömmelemelerini üretirken kullanılacak aktivasyon fonksiyonu.

norm_elementwise_affine (`bool`, varsayılan `True`) : Normalizasyon katmanlarında öge bazlı afin dönüşümün kullanılıp kullanılmayacağı.

norm_eps (`float`, varsayılan `1e-5`) : Normalizasyon katmanlarında kullanılacak epsilon değeri.

spatial_interpolation_scale (`float`, varsayılan `1.875`) : Uzamsal boyutlar boyunca 3B konumsal gömme uygulamalarında uygulanacak ölçekleme faktörü.

temporal_interpolation_scale (`float`, varsayılan `1.0`) : 3B konumsal gömme (positional embeddings) içinde zaman boyutları boyunca uygulanacak ölçekleme faktörü.

is_train_face (`bool`, varsayılan `False`) : Eğitim sürecinde kimliği koruma modülünün etkinleştirilip etkinleştirilmeyeceğini belirtir. `True` olarak ayarlandığında, model kimliği koruma görevlerine odaklanır.

is_kps (`bool`, varsayılan `False`) : Küresel yüz çıkarıcısı için anahtar nokta (keypoint) etkinleştirilecek mi? `True` ise, anahtar noktalar modelde bulunur.

cross_attn_interval (`int`, varsayılan `2`) : Transformer mimarisinde çapraz dikkat katmanları arasındaki aralık. Daha büyük bir değer, çapraz dikkat hesaplamalarının sıklığını azaltabilir ve bu da hesaplama yükünü azaltmaya yardımcı olabilir.

cross_attn_dim_head (`int`, optional, varsayılan `128`) : Transformer mimarisindeki çapraz dikkat katmanlarında her dikkat başlığının boyutluluğu. Daha büyük bir değer, daha karmaşık kalıplara odaklanma kapasitesini artırır ancak bellek ve hesaplama maliyetlerini de artırır.

cross_attn_num_heads (`int`, isteğe bağlı, varsayılan `16`) : Çapraz dikkat katmanlarındaki dikkat başlarının sayısı. Daha fazla baş, farklı giriş bileşenleri arasındaki çeşitli ilişkileri yakalamak için daha paralel dikkat mekanizmalarına olanak tanır, ancak hesaplama gereksinimlerini de artırabilir.

LFE_id_dim (`int`, isteğe bağlı, varsayılan `1280`) : Local Facial Extractor (LFE) içinde kullanılan kimlik vektörünün boyutluluğu. Bu vektör, yüzün kimlik özelliklerini temsil eder ve yüz tanıma ile farklı kareler arasında kimliğin korunması gibi görevler için önemlidir.

LFE_vit_dim (`int`, isteğe bağlı, varsayılan `1024`) : Local Facial Extractor (LFE) içinde kullanılan vision transformer (ViT) çıktısının boyutu. Bu değer, yüz özelliği çıkarımı için işlenecek transformer tarafından üretilen özellik vektörlerinin boyutunu belirler.

LFE_depth (`int`, isteğe bağlı, varsayılan `10`) : Local Facial Extractor'ın (LFE) katman sayısı. Derinliğin artırılması, modelin yüz özelliklerinin daha karmaşık temsillerini yakalamasına olanak tanır ancak hesaplama yükünü de artırır.

LFE_dim_head (`int`, optional, varsayılan `64`) : Local Facial Extractor (LFE) içindeki her dikkat başlığının boyutluluğu. Bu parametre, çıkarım işlemi sırasında modelin yüz özelliklerinin farklı bölümlerini ne kadar ince bir şekilde işleyip odaklanabileceğini etkiler.

LFE_num_heads (`int`, isteğe bağlı, varsayılan `16`) : Local Facial Extractor (LFE) içindeki dikkat başlarının sayısı. Daha fazla baş, modelin çeşitli yüz özelliklerini yakalama yeteneğini artırabilir, ancak bunun bedeli artan hesaplama karmaşıklığıdır.

LFE_num_id_token (`int`, isteğe bağlı, varsayılan `5`) : Local Facial Extractor (LFE) içinde kullanılan kimlik belirteçlerinin sayısı. Bu, modelin özellik çıkarımı sırasında yüz kimliğinin korunmasını sağlamak için işleyeceği kimlikle ilgili belirteç sayısını tanımlar.

LFE_num_querie (`int`, isteğe bağlı, varsayılan `32`) : Local Facial Extractor (LFE) içinde kullanılan sorgu belirteçlerinin sayısı. Bu belirteçler, doğru yüz özelliği çıkarımına yardımcı olan yüksek frekanslı yüzle ilgili bilgileri yakalamak için kullanılır.

LFE_output_dim (`int`, isteğe bağlı, varsayılan `2048`) : Local Facial Extractor'ün (LFE) çıktı boyutu. Bu boyut, LFE modülünün ürettiği özellik vektörlerinin boyutunu belirler ve bu vektörler yüz tanıma veya izleme gibi sonraki görevlerde kullanılır.

LFE_ff_mult (`int`, isteğe bağlı, varsayılan `4`) : Local Facial Extractor (LFE) içindeki ileri beslemeli ağın gizli katman boyutuna uygulanan çarpım faktörü. Daha yüksek bir değer, modelin daha karmaşık yüz özelliği dönüşümlerini öğrenme kapasitesini artırır, ancak hesaplama ve bellek gereksinimlerini de artırır.

LFE_num_scale (`int`, isteğe bağlı, varsayılan `5`) : Görsel özelliğin farklı ölçek sayısı. Daha yüksek bir değer, modelin daha karmaşık yüz özelliği dönüşümlerini öğrenme kapasitesini artırır, ancak hesaplama ve bellek gereksinimlerini de artırır.

local_face_scale (`float`, varsayılan `1.0`) : Modelde yerel yüz özelliklerinin önemini ayarlamak için kullanılan ölçekleme faktörü. Bu, modelin yüksek frekanslı yüzle ilgili içeriğe ne kadar yoğunlaştığını etkileyebilir.

[ConsisID](https://github.com/PKU-YuanGroup/ConsisID) içinde video benzeri veriler için bir Transformer modeli.

#### forward[[diffusers.ConsisIDTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: typing.Union[int, float, torch.LongTensor], timestep_cond: typing.Optional[torch.Tensor] = None, image_rotary_emb: tuple[torch.Tensor, torch.Tensor] | None = None, attention_kwargs: dict[str, typing.Any] | None = None, id_cond: typing.Optional[torch.Tensor] = None, id_vit_hidden: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/consisid_transformer_3d.py#L623)

**Parametreler:**

hidden_states (`torch.Tensor`, şekli `(batch_size, num_frames, channels, height, width)`) : Girdi `hidden_states`.

encoder_hidden_states (`torch.Tensor`, şekli `(batch_size, sequence_len, embed_dims)`) : Kullanılacak koşullu gömlemeler (giriş koşullarından, örneğin istemlerden hesaplanan gömlemeler).

timestep (`torch.LongTensor`) : Gürültü azaltma adımını belirtmek için kullanılır.

timestep_cond (`torch.Tensor`, *isteğe bağlı*) : Zaman adımı için koşullu gömme. Sağlanırsa, gömmeler `self.time_embedding` katmanından geçirilen örneklerle toplanarak nihai zaman adımı gömmeleri elde edilir.

image_rotary_emb (`tuple` of `torch.Tensor`, *isteğe bağlı*) : Ön hesaplanmış döner konumsal gömme (embedding) değerleri.

attention_kwargs (`dict`, *isteğe bağlı*) : Belirtilirse, [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) içinde `self.processor` altında tanımlanan `AttentionProcessor`'a iletilen bir kwargs sözlüğü.

id_cond (`torch.Tensor`, *isteğe bağlı*) : Kimlik koşullandırma için kullanılan yerel yüz çıkarıcısı tarafından çıkarılan yüz gömme (embedding).

id_vit_hidden (`torch.Tensor`, *isteğe bağlı*) : Kimlik koşullandırma için kullanılan, yüz görüntülerinden çıkarılan ViT gizli durumları.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine `~models.transformer_2d.Transformer2DModelOutput` döndürülüp döndürülmediğini belirtir.

**Dönüş:**

`return_dict` True ise, `~models.transformer_2d.Transformer2DModelOutput` döndürülür, aksi takdirde ilk öğesi örnek tensörü olan bir `tuple` döndürülür.

[ConsisIDTransformer3DModel](/docs/diffusers/main/tr/api/models/consisid_transformer3d#diffusers.ConsisIDTransformer3DModel) ileri yöntemi.

## Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

#### diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

```python
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L21)

**Parametreler:**

sample (`torch.Tensor`, şekli `(batch_size, num_channels, height, width)` veya [Transformer2DModel](/docs/diffusers/main/tr/api/models/transformer2d#diffusers.Transformer2DModel) ayrık (discrete) ise `(batch size, num_vector_embeds - 1, num_latent_pixels)`) : `encoder_hidden_states` girdisine koşullu gizli durum (hidden states) çıktısı. Ayrık (discrete) ise, gürültüsü olmayan (unnoised) gizli (latent) pikseller için olasılık dağılımlarını döndürür.

[Transformer2DModel](/docs/diffusers/main/tr/api/models/transformer2d#diffusers.Transformer2DModel)'nin çıktısı.

