# DiT

[Scalable Diffusion Models with Transformers](https://huggingface.co/papers/2212.09748) (DiT), William Peebles ve Saining Xie tarafından kaleme alınmıştır.

Makalenin özeti şudur:

*Transformer mimarisine dayalı yeni bir difüzyon modeli sınıfını inceliyoruz. Görüntüler için latent difüzyon modelleri eğitiyor ve yaygın olarak kullanılan U-Net omurgasını, latent yamalar üzerinde çalışan bir transformer ile değiştiriyoruz. Diffusion Transformers (DiT) modellerimizin ölçeklenebilirliğini, Gflops cinsinden ölçülen ileri geçiş karmaşıklığı perspektifinden analiz ediyoruz. Daha yüksek Gflops'a sahip DiT'lerin — artan transformer derinliği/genişliği veya artan girdi token sayısı yoluyla — tutarlı olarak daha düşük FID değerlerine sahip olduğunu buluyoruz. İyi ölçeklenebilirlik özelliklerine sahip olmanın yanı sıra, en büyük DiT-XL/2 modellerimiz, sınıf koşullu ImageNet 512x512 ve 256x256 kıyaslamalarında tüm önceki difüzyon modellerini geride bırakarak, ikincisinde 2.27'lik bir son teknoloji FID değerine ulaşıyor.*

Orijinal kod tabanı [facebookresearch/dit](https://github.com/facebookresearch/dit) adresinde bulunabilir.

> [!TIP]
> Scheduler'lar [kılavuzunu](../../using-diffusers/schedulers) inceleyerek scheduler hızı ve kalitesi arasındaki ödünleşimi nasıl keşfedebileceğinizi öğrenin ve aynı bileşenleri birden fazla pipeline'a nasıl verimli bir şekilde yükleyebileceğinizi öğrenmek için [pipeline'lar arasında bileşenleri yeniden kullanma](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) bölümüne göz atın.

## DiTPipeline[[diffusers.DiTPipeline]]

#### diffusers.DiTPipeline[[diffusers.DiTPipeline]]

```python
diffusers.DiTPipeline(transformer: DiTTransformer2DModel, vae: AutoencoderKL, scheduler: KarrasDiffusionSchedulers, id2label: dict[int, str] | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/dit/pipeline_dit.py#L38)

**Parametreler:**

transformer ([DiTTransformer2DModel](/docs/diffusers/main/tr/api/models/dit_transformer2d#diffusers.DiTTransformer2DModel)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için koşullandırılmış bir `DiTTransformer2DModel` sınıfı. Yapılandırmada başlangıçta [`Transformer2DModel`](https://huggingface.co/facebook/DiT-XL-2-256/blob/main/transformer/config.json#L2) olarak yayınlandı, ancak bu uyumsuzluk göz ardı edilebilir.

vae ([AutoencoderKL](/docs/diffusers/main/tr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Görüntüleri latent temsillere kodlamak ve bu temsillerden görüntülere çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) modeli.

scheduler ([DDIMScheduler](/docs/diffusers/main/tr/api/schedulers/ddim#diffusers.DDIMScheduler)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için `transformer` ile birlikte kullanılacak bir zamanlayıcı.

UNet yerine Transformer omurgasına dayalı görüntü üretimi için Pipeline.

Bu model [DiffusionPipeline](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.DiffusionPipeline) sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.

#### __call__[[diffusers.DiTPipeline.__call__]]

```python
__call__(class_labels: list, guidance_scale: float = 4.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, num_inference_steps: int = 50, output_type: str | None = 'pil', return_dict: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/dit/pipeline_dit.py#L101)

**Parametreler:**

class_labels (list[int]) : Üretilmesi istenen görüntüler için ImageNet sınıf etiketlerinin listesi.

guidance_scale (`float`, *opsiyonel*, varsayılan 4.0) : Daha yüksek bir guidance scale değeri, modelin metin `prompt`'u ile yakından ilişkili görseller üretmesini teşvik eder; bunun bedeli ise daha düşük görsel kalitedir. Guidance scale, `guidance_scale > 1` olduğunda etkinleşir.

generator (`torch.Generator`, *isteğe bağlı*) : Üretimi deterministik hale getirmek için bir [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html).

num_inference_steps (`int`, *isteğe bağlı*, varsayılan 250) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.

output_type (`str`, *isteğe bağlı*, varsayılan `"pil"`) : Üretilen görüntünün çıktı biçimi. `"pil"` (`PIL.Image`), `"np"` (`np.array`) veya `"pt"` (`torch.Tensor`) arasında seçim yapın.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine [ImagePipelineOutput](/docs/diffusers/main/tr/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) döndürülüp döndürülmemesi.

**Dönüş:** [ImagePipelineOutput](/docs/diffusers/main/tr/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) veya `tuple`

`return_dict` `True` ise [ImagePipelineOutput](/docs/diffusers/main/tr/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) döndürülür, aksi halde ilk öğesi üretilen görüntülerin listesini içeren bir `tuple` döndürülür

Üretim için pipeline'ın çağrı fonksiyonu.

Örnekler:

```py
>>> from diffusers import DiTPipeline, DPMSolverMultistepScheduler
>>> import torch

>>> pipe = DiTPipeline.from_pretrained("facebook/DiT-XL-2-256", torch_dtype=torch.float16)
>>> pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
>>> pipe = pipe.to("cuda")

>>> # pick words from Imagenet class labels
>>> pipe.labels  # to print all available words

>>> # pick words that exist in ImageNet
>>> words = ["white shark", "umbrella"]

>>> class_ids = pipe.get_label_ids(words)

>>> generator = torch.manual_seed(33)
>>> output = pipe(class_labels=class_ids, num_inference_steps=25, generator=generator)

>>> image = output.images[0]  # label 'white shark'
```

#### get_label_ids[[diffusers.DiTPipeline.get_label_ids]]

```python
get_label_ids(label: str | list[str])
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/dit/pipeline_dit.py#L76)

**Parametreler:**

label (`str` veya `str` içeren `dict`) : Sınıf kimliklerine eşlenecek etiket dizgileri.

**Dönüş:** `list` of `int`

Pipeline tarafından işlenecek sınıf kimlikleri.

ImageNet etiket dizelerini ilgili sınıf kimliklerine eşleyin.

## ImagePipelineOutput[[diffusers.ImagePipelineOutput]]

#### diffusers.ImagePipelineOutput[[diffusers.ImagePipelineOutput]]

```python
diffusers.ImagePipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L135)

**Parametreler:**

images (`List[PIL.Image.Image]` veya `np.ndarray`) : Uzunluğu `batch_size` olan gürültüsü azaltılmış PIL görüntülerinin listesi veya `(batch_size, height, width, num_channels)` biçiminde NumPy dizisi.

Görüntü hatları için çıktı sınıfı.

