Buckets:
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[[diffusers.DiTPipeline]]
diffusers.DiTPipeline[[diffusers.DiTPipeline]]
diffusers.DiTPipeline(transformer: DiTTransformer2DModel, vae: AutoencoderKL, scheduler: KarrasDiffusionSchedulers, id2label: dict[int, str] | None = None)
Tham số:
transformer (DiTTransformer2DModel) : Một lớp có điều kiện DiTTransformer2DModel để khử nhiễu các latent ảnh đã mã hóa. Ban đầu được công bố dưới dạng Transformer2DModel trong cấu hình, 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 sang và từ các biểu diễn ẩn.
scheduler (DDIMScheduler) : Một trình lập lịch được sử dụng kết hợp với transformer để khử nhiễu các latent ả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[[diffusers.DiTPipeline.call]]
__call__(class_labels: list[int], 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)
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, optional, 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 để đảm bảo quá trình sinh là tất định.
num_inference_steps (int, optional, 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 cái giá 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[[diffusers.DiTPipeline.get_label_ids]]
get_label_ids(label: str | list[str])
Tham số:
label (str hoặc dict của str) : Chuỗi nhãn cần ánh xạ tới 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[[diffusers.ImagePipelineOutput]]
diffusers.ImagePipelineOutput[[diffusers.ImagePipelineOutput]]
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.
Xet Storage Details
- Size:
- 7.67 kB
- Xet hash:
- 320a281d9d70e25cdffcc7acfd93b28107fd98d806b6aebea35dc7d1be580c22
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.