Diffusers documentation
DiT
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 giriş 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
sınıf diffusers.DiTPipeline
< source >( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )
Parametreler
- transformer (DiTTransformer2DModel) —
Kodlanmış görüntü latentlerini gürültüden arındırmak için koşullandırılmış bir
DiTTransformer2DModelsınıfı. Yapılandırmada başlangıçtaTransformer2DModelolarak yayınlandı, ancak bu uyumsuzluk göz ardı edilebilir. - vae (AutoencoderKL) — Görselleri latent temsillere kodlamak ve bu temsillerden çö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
transformerile 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ı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__
< source >( class_labels: listguidance_scale: float = 4.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonenum_inference_steps: int = 50output_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple
Parametreler
- class_labels (list[int]) — Oluşturulacak görüntüler için ImageNet sınıf etiketlerinin listesi.
- guidance_scale (
float, isteğe bağlı, varsayılan 4.0) — Daha yüksek bir guidance scale değeri, modelin metinlepromptile yakından ilişkili görseller üretmesini teşvik eder, ancak bu durum görsel kalitesinin düşmesine yol açar. Guidance scale,guidance_scale > 1olduğunda etkinleştirilir. - generator (
torch.Generator, isteğe bağlı) — Üretimi deterministik hale getirmek için kullanılan birtorch.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") — Oluşturulan 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ılanTrue) — Düz bir tuple yerine ImagePipelineOutput döndürülüp döndürülmemesi.
Dönüş değeri
ImagePipelineOutput veya tuple
return_dict True ise ImagePipelineOutput döndürülür, aksi halde ilk öğesi üretilen görüntülerin listesinden oluşan 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
< source >( label: str | list[str] ) → list of int
ImageNet etiket dizelerini ilgili sınıf kimliklerine eşleyin.
ImagePipelineOutput
sınıf diffusers.ImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Görüntü hatları için çıktı sınıfı.