Diffusers documentation
DDPM
DDPM
Denoising Diffusion Probabilistic Models (DDPM) của Jonathan Ho, Ajay Jain và Pieter Abbeel đề xuất một mô hình dựa trên diffusion cùng tên. Trong thư viện 🤗 Diffusers, DDPM dùng để chỉ discrete denoising scheduler trong bài báo cũng như pipeline.
Tóm tắt từ bài báo là:
Chúng tôi trình bày các kết quả tổng hợp hình ảnh chất lượng cao sử dụng mô hình xác suất khuếch tán, một lớp mô hình biến ẩn được lấy cảm hứng từ các cân nhắc về nhiệt động lực học phi cân bằng. Kết quả tốt nhất của chúng tôi đạt được bằng cách huấn luyện trên một cận biến phân có trọng số được thiết kế theo một kết nối mới giữa mô hình xác suất khuếch tán và khớp điểm số khử nhiễu với động lực học Langevin, và các mô hình của chúng tôi tự nhiên chấp nhận một lược đồ giải nén mất mát tiến trình có thể được diễn giải như một tổng quát hóa của giải mã tự hồi quy. Trên tập dữ liệu CIFAR10 không điều kiện, chúng tôi đạt được điểm Inception là 9.46 và điểm FID tiên tiến nhất là 3.17. Trên LSUN 256x256, chúng tôi đạt được chất lượng mẫu tương tự như ProgressiveGAN.
Mã nguồn gốc có thể được tìm thấy tại hohonathanho/diffusion.
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ả.
DDPMPipeline
lớp diffusers.DDPMPipeline
< source >( unet: UNet2DModelscheduler: DDPMScheduler )
Tham số
- unet (UNet2DModel) —
Một
UNet2DModelđể khử nhiễu các latents của ảnh đã được mã hóa. - scheduler (SchedulerMixin) —
Một scheduler được sử dụng kết hợp với
unetđể khử nhiễu ảnh đã mã hóa. Có thể là một trong DDPMScheduler hoặc DDIMScheduler.
Pipeline để tạo hình ảnh.
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__
< source >( batch_size: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonenum_inference_steps: int = 1000output_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple
Tham số
- batch_size (
int, tùy chọn, mặc định là 1) — Số lượng hình ảnh cần tạo. - generator (
torch.Generator, tùy chọn) — Mộttorch.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à 1000) — 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.
ImagePipelineOutput
lớp diffusers.ImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Lớp đầu ra cho các pipeline hình ảnh.