# DDPM

Jonathan Ho, Ajay Jain ve Pieter Abbeel tarafından önerilen [Denoising Diffusion Probabilistic Models](https://huggingface.co/papers/2006.11239) (DDPM), aynı adı taşıyan difüzyon tabanlı bir modeldir. 🤗 Diffusers kütüphanesinde DDPM, hem makaledeki *discrete denoising scheduler*'a hem de pipeline'a atıfta bulunur.

Makalenin özeti şudur:

*Nonequilibrium termodinamiğinden ilham alan gizli değişkenli modeller sınıfı olan difüzyon olasılıksal modelleri kullanarak yüksek kaliteli görüntü sentez sonuçları sunuyoruz. En iyi sonuçlarımız, difüzyon olasılıksal modeller ile Langevin dinamiğine sahip gürültü giderme skoru eşleştirmesi arasındaki yeni bir bağlantıya göre tasarlanmış ağırlıklı varyasyonel sınır üzerinde eğitim alarak elde edilmektedir ve modellerimiz, otoregresif çözümlemenin bir genelleştirmesi olarak yorumlanabilen kademeli kayıplı sıkıştırma kaldırma şemasını doğal olarak kabul etmektedir. Koşulsuz CIFAR10 veri setinde 9.46 Inception skoru ve 3.17 ile alanın en iyisi FID skoru elde ediyoruz. 256x256 LSUN üzerinde, ProgressiveGAN'a benzer örnek kalitesi elde ediyoruz.*

Orijinal kod tabanı [hohonathanho/diffusion](https://github.com/hojonathanho/diffusion) 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.

# DDPMPipeline[[diffusers.DDPMPipeline]]

#### diffusers.DDPMPipeline[[diffusers.DDPMPipeline]]

```python
diffusers.DDPMPipeline(unet: UNet2DModel, scheduler: DDPMScheduler)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ddpm/pipeline_ddpm.py#L33)

**Parametreler:**

unet ([UNet2DModel](/docs/diffusers/main/tr/api/models/unet2d#diffusers.UNet2DModel)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan bir `UNet2DModel`.

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

Görsel ü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.DDPMPipeline.__call__]]

```python
__call__(batch_size: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, num_inference_steps: int = 1000, output_type: str | None = 'pil', return_dict: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ddpm/pipeline_ddpm.py#L54)

**Parametreler:**

batch_size (`int`, *isteğe bağlı*, varsayılan 1) : Üretilecek görsel sayısı.

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 1000) : 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.

Örnek:

```py
>>> from diffusers import DDPMPipeline

>>> # load model and scheduler
>>> pipe = DDPMPipeline.from_pretrained("google/ddpm-cat-256")

>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe().images[0]

>>> # save image
>>> image.save("ddpm_generated_image.png")
```

## 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ı.

