Buckets:

mishig's picture
|
download
raw
7.29 kB

DiT

Scalable Diffusion Models with Transformers (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 adresinde bulunabilir.

Scheduler'lar kılavuzunu 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 bölümüne göz atın.

DiTPipeline[[diffusers.DiTPipeline]]

diffusers.DiTPipeline[[diffusers.DiTPipeline]]

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

Kaynak

Parametreler:

transformer (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 olarak yayınlandı, ancak bu uyumsuzluk göz ardı edilebilir.

vae (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) : 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 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]]

__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

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.

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 döndürülüp döndürülmemesi.

Dönüş: ImagePipelineOutput veya tuple

return_dict True ise 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:

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

get_label_ids(label: str | list[str])

Kaynak

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

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

Kaynak

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

Xet Storage Details

Size:
7.29 kB
·
Xet hash:
df138225e057d807d255948def44718a80f0f62da79c405d1289988c26233e91

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.