# OmniGenTransformer2DModel

[OmniGen](https://github.com/VectorSpaceLab/OmniGen/) için görüntüler üretmek üzere çok modlu talimatları kabul eden bir Transformer modeli.

Makalenin özeti şudur:

*Büyük Dil Modelleri'nin (LLM) ortaya çıkması, dil üretim görevlerini birleştirmiş ve insan-makine etkileşimini devrim niteliğinde dönüştürmüştür. Ancak görüntü üretimi alanında, tek bir çerçeve içinde çeşitli görevleri ele alabilen birleşik bir model büyük ölçüde keşfedilmemiştir. Bu çalışmada, birleşik görüntü üretimi için yeni bir difüzyon modeli olan OmniGen'i tanıtıyoruz. OmniGen, aşağıdaki özelliklerle karakterize edilir: 1) Birleştirme: OmniGen yalnızca metinden görüntüye üretim yeteneklerini sergilemekle kalmaz, aynı zamanda görüntü düzenleme, nesne odaklı üretim ve görsel koşullu üretim gibi çeşitli aşağı akış görevlerini de doğal olarak destekler. 2) Sadelik: OmniGen'in mimarisi son derece basitleştirilmiştir ve ek eklentilere olan ihtiyacı ortadan kaldırır. Ayrıca, mevcut difüzyon modellerine kıyasla daha kullanıcı dostudur ve ek ara adımlara ihtiyaç duymadan, talimatlar yoluyla karmaşık görevleri uçtan uca tamamlayabilir; bu da görüntü üretim iş akışını büyük ölçüde basitleştirir. 3) Bilgi Transferi: Birleşik bir biçimde öğrenmeden faydalanarak OmniGen, farklı görevler arasında bilgiyi etkili bir şekilde aktarır, görülmemiş görevleri ve alanları yönetir ve yeni yetenekler sergiler. Ayrıca modelin akıl yürütme yeteneklerini ve chain-of-thought mekanizmasının potansiyel uygulamalarını da inceliyoruz. Bu çalışma, genel amaçlı bir görüntü üretim modeli için ilk denemeyi temsil etmektedir ve gelecekteki ilerlemeleri teşvik etmek için kaynaklarımızı https://github.com/VectorSpaceLab/OmniGen adresinde yayınlayacağız.*

```python
import torch
from diffusers import OmniGenTransformer2DModel

transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)
```

## OmniGenTransformer2DModel[[diffusers.OmniGenTransformer2DModel]]

#### diffusers.OmniGenTransformer2DModel[[diffusers.OmniGenTransformer2DModel]]

```python
diffusers.OmniGenTransformer2DModel(in_channels: int = 4, patch_size: int = 2, hidden_size: int = 3072, rms_norm_eps: float = 1e-05, num_attention_heads: int = 32, num_key_value_heads: int = 32, intermediate_size: int = 8192, num_layers: int = 32, pad_token_id: int = 32000, vocab_size: int = 32064, max_position_embeddings: int = 131072, original_max_position_embeddings: int = 4096, rope_base: int = 10000, rope_scaling: dict = None, pos_embed_max_size: int = 192, time_step_dim: int = 256, flip_sin_to_cos: bool = True, downscale_freq_shift: int = 0, timestep_activation_fn: str = 'silu')
```

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

**Parametreler:**

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

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

hidden_size (`int`, varsayılan `3072`) : Modeldeki gizli katmanların boyutluluğu.

rms_norm_eps (`float`, varsayılan `1e-5`) : RMSNorm katmanı için Eps.

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

num_key_value_heads (`int`, varsayılan `32`) : Çok başlı dikkat (multi-head attention) içinde anahtarlar ve değerler için kullanılacak baş sayısı.

intermediate_size (`int`, varsayılan `8192`) : FeedForward katmanlarındaki gizli katmanın boyutu.

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

pad_token_id (`int`, varsayılan `32000`) : Dolgu belirtecinin kimliği.

vocab_size (`int`, varsayılan `32064`) : Gömme sözlüğünün sözlük boyutu.

rope_base (`int`, varsayılan `10000`) : RoPE oluşturulurken kullanılacak varsayılan theta değeri.

rope_scaling (`dict`, isteğe bağlı) : RoPE ölçekleme katsayıları. `short_factor` ve `long_factor` içermelidir.

pos_embed_max_size (`int`, varsayılan `192`) : Konumsal gömme (positional embeddings) boyutunun maksimum değeri.

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

flip_sin_to_cos (`bool`, varsayılan `True`) : Adım gömme hazırlanırken konumsal gömmedeki sin ve cos değerlerinin tersine çevrilip çevrilmeyeceğini belirtir.

downscale_freq_shift (`int`, varsayılan `0`) : Zaman adımları gömme işlemlerini küçültürken kullanılacak frekans kayması.

timestep_activation_fn (`str`, varsayılan `silu`) : Zaman adımları gömme (embeddings) için kullanılacak aktivasyon fonksiyonu.

OmniGen'de (https://huggingface.co/papers/2409.11340) tanıtılan Transformer modeli.

#### forward[[diffusers.OmniGenTransformer2DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: typing.Union[int, float, torch.FloatTensor], input_ids: Tensor, input_img_latents: list, input_image_sizes: dict, attention_mask: Tensor, position_ids: Tensor, return_dict: bool = True)
```

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

**Parametreler:**

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

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

input_ids (`torch.Tensor`) : Koşullama olarak kullanılan çok modlu metin token kimlikleri.

input_img_latents (`list` of `torch.Tensor`) : List of latents for input images used as conditioning.

input_image_sizes (`dict`, `int` anahtarlarından `list` of `int` değerlerine) : Örnek dizininden, koşullandırma dizisindeki girdi görsel gömme yerlerinin konumlarına eşleme.

attention_mask (`torch.Tensor`) : Birleşik çok modlu dizinin dikkat maskesi.

position_ids (`torch.Tensor`) : Konumsal gömme hesaplamalarında kullanılan konum kimlikleri.

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üş:** `~models.transformer_2d.Transformer2DModelOutput` veya `tuple`

`return_dict` True ise, `~models.transformer_2d.Transformer2DModelOutput` döndürülür, aksi takdirde düz bir `tuple` döndürülür.

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

