Diffusers documentation
DDIM
DDIM
Denoising Diffusion Implicit Models (DDIM) của Jiaming Song, Chenlin Meng và Stefano Ermon.
Tóm tắt từ bài báo là:
Các mô hình xác suất khuếch tán khử nhiễu (DDPM) đã đạt được chất lượng tạo ảnh cao mà không cần huấn luyện đối kháng, nhưng chúng yêu cầu mô phỏng một chuỗi Markov qua nhiều bước để tạo ra một mẫu. Để tăng tốc quá trình lấy mẫu, chúng tôi giới thiệu các mô hình xác suất ẩn khử nhiễu (DDIM), một lớp mô hình xác suất ẩn lặp hiệu quả hơn với cùng quy trình huấn luyện như DDPM. Trong DDPM, quá trình sinh được định nghĩa là quá trình ngược của một quá trình khuếch tán Markov. Chúng tôi xây dựng một lớp các quá trình khuếch tán phi Markov dẫn đến cùng mục tiêu huấn luyện, nhưng quá trình ngược của chúng có thể lấy mẫu nhanh hơn nhiều. Chúng tôi chứng minh thực nghiệm rằng DDIM có thể tạo ra các mẫu chất lượng cao nhanh hơn 10 lần đến 50 lần về thời gian thực so với DDPM, cho phép chúng tôi đánh đổi giữa tính toán và chất lượng mẫu, và có thể thực hiện nội suy ảnh có ý nghĩa ngữ nghĩa trực tiếp trong không gian ẩn.
Mã nguồn gốc có thể được tìm thấy tại ermongroup/ddim.
DDIMPipeline
lớp diffusers.DDIMPipeline
< source >( unet: UNet2DModelscheduler: DDIMScheduler )
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] = Noneeta: float = 0.0num_inference_steps: int = 50use_clipped_model_output: bool | None = Noneoutput_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. - eta (
float, tùy chọn, mặc định là 0.0) — Tương ứng với tham số eta (η) trong bài báo DDIM. Chỉ áp dụng cho DDIMScheduler và bị bỏ qua ở các scheduler khác. Giá trị0tương ứng với DDIM và1tương ứng với DDPM. - num_inference_steps (
int, tùy chọn, mặc định là 50) — 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. - use_clipped_model_output (
bool, tùy chọn, mặc định làNone) — Nếu làTruehoặcFalse, xem tài liệu cho DDIMScheduler.step(). Nếu làNone, không có gì được truyền xuống hạ nguồn cho trình lập lịch (dùngNonecho các trình lập lịch không hỗ trợ tham số này). - 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 DDIMPipeline
>>> import PIL.Image
>>> import numpy as np
>>> # load model and scheduler
>>> pipe = DDIMPipeline.from_pretrained("fusing/ddim-lsun-bedroom")
>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe(eta=0.0, num_inference_steps=50)
>>> # process image to PIL
>>> image_processed = image.cpu().permute(0, 2, 3, 1)
>>> image_processed = (image_processed + 1.0) * 127.5
>>> image_processed = image_processed.numpy().astype(np.uint8)
>>> image_pil = PIL.Image.fromarray(image_processed[0])
>>> # save image
>>> image_pil.save("test.png")ImagePipelineOutput
lớp diffusers.ImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Lớp đầu ra cho các pipeline hình ảnh.