Diffusers documentation

DiT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DiT

Các Mô hình Khuếch tán Có thể Mở rộng với Transformers (DiT) do William Peebles và Saining Xie thực hiện.

Tóm tắt từ bài báo là:

Chúng tôi khám phá một lớp mô hình khuếch tán mới dựa trên kiến trúc transformer. Chúng tôi huấn luyện các mô hình khuếch tán tiềm ẩn cho hình ảnh, thay thế bộ khung U-Net thường được sử dụng bằng một transformer hoạt động trên các lát tiềm ẩn. Chúng tôi phân tích khả năng mở rộng của các Diffusion Transformer (DiT) của mình thông qua lăng kính độ phức tạp của bước truyền thẳng được đo bằng Gflops. Chúng tôi nhận thấy rằng các DiT có Gflops cao hơn — thông qua việc tăng độ sâu/chiều rộng của transformer hoặc tăng số lượng token đầu vào — luôn có FID thấp hơn. Ngoài việc sở hữu các thuộc tính mở rộng tốt, các mô hình DiT-XL/2 lớn nhất của chúng tôi vượt trội hơn tất cả các mô hình khuếch tán trước đó trên các benchmark ImageNet 512x512 và 256x256 có điều kiện lớp, đạt được FID tiên tiến là 2.27 trên benchmark sau.

Mã nguồn gốc có thể được tìm thấy tại facebookresearch/dit.

Hãy chắc chắn xem qua hướng dẫn về Schedulers để tìm hiểu cách khám phá sự đánh đổi giữa tốc độ và chất lượng của scheduler, và xem phần tái sử dụng các thành phần giữa các pipeline để tìm hiểu cách nạp các thành phần giống nhau vào nhiều pipeline một cách hiệu quả.

DiTPipeline

lớp diffusers.DiTPipeline

< >

( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )

Tham số

  • transformer (DiTTransformer2DModel) — Một lớp DiTTransformer2DModel có điều kiện để khử nhiễu các latents ảnh đã mã hóa. Ban đầu được công bố là Transformer2DModel trong config, nhưng sự không khớp này có thể bỏ qua.
  • vae (AutoencoderKL) — Mô hình Variational Auto-Encoder (VAE) để mã hóa và giải mã hình ảnh từ và sang các biểu diễn ẩn.
  • scheduler (DDIMScheduler) — Một scheduler được sử dụng kết hợp với transformer để khử nhiễu các latents của ảnh đã mã hóa.

Pipeline để tạo hình ảnh dựa trên khung xương Transformer thay vì UNet.

Mô hình này kế thừa từ DiffusionPipeline. Xem tài liệu của lớp cha để biết các phương thức chung được triển khai cho tất cả các pipeline (tải xuống, lưu, chạy trên một thiết bị cụ thể, v.v.).

__call__

< >

( 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

Tham số

  • class_labels (list[int]) — danh sách nhãn lớp ImageNet cho các hình ảnh sẽ được tạo ra.
  • guidance_scale (float, tùy chọn, mặc định là 4.0) — Giá trị guidance scale cao hơn khuyến khích mô hình tạo ra các hình ảnh gắn kết chặt chẽ với prompt văn bản, với cái giá là chất lượng hình ảnh thấp hơn. Guidance scale được kích hoạt khi guidance_scale > 1.
  • generator (torch.Generator, tùy chọn) — Một torch.Generator để làm cho quá trình sinh ra kết quả xác định.
  • num_inference_steps (int, tùy chọn, mặc định là 250) — Số bước khử nhiễu. Số bước khử nhiễu nhiều hơn thường dẫn đến hình ảnh có chất lượng cao hơn với chi phí là suy luận chậm hơn.
  • output_type (str, tùy chọn, mặc định là "pil") — Định dạng đầu ra của hình ảnh được tạo ra. Chọn giữa "pil" (PIL.Image), "np" (np.array) hoặc "pt" (torch.Tensor).
  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một ImagePipelineOutput thay vì một tuple thông thường hay không.

Trả về

ImagePipelineOutput hoặc tuple

Nếu return_dict là True, ImagePipelineOutput sẽ được trả về, ngược lại một tuple sẽ được trả về trong đó phần tử đầu tiên là một danh sách chứa các hình ảnh đã được tạo

Hàm gọi call của pipeline để tạo nội dung.

Ví dụ:

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

< >

( label: str | list[str] ) → list of int

Tham số

  • label (str hoặc dict của str) — Chuỗi nhãn cần ánh xạ sang các id lớp.

Trả về

list của int

Các id lớp cần được xử lý bởi pipeline.

Ánh xạ các chuỗi nhãn từ ImageNet sang các id lớp tương ứng.

ImagePipelineOutput

lớp diffusers.ImagePipelineOutput

< >

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

Tham số

  • images (List[PIL.Image.Image] hoặc np.ndarray) — Danh sách các hình ảnh PIL đã khử nhiễu có độ dài batch_size hoặc mảng NumPy có hình dạng (batch_size, height, width, num_channels).

Lớp đầu ra cho các pipeline hình ảnh.

Update on GitHub