Diffusers documentation

RePaintScheduler

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

RePaintScheduler

RePaintScheduler là trình lập lịch inpainting dựa trên DDPM cho inpainting không giám sát với các mask cực đoan. Nó được thiết kế để sử dụng cùng với RePaintPipeline, và dựa trên bài báo RePaint: Inpainting using Denoising Diffusion Probabilistic Models của Andreas Lugmayr và cộng sự.

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

Inpainting dạng tự do là bài toán thêm nội dung mới vào một hình ảnh tại các vùng được chỉ định bởi một mặt nạ nhị phân tùy ý. Hầu hết các phương pháp hiện có được huấn luyện cho một phân bố mặt nạ nhất định, điều này hạn chế khả năng tổng quát hóa của chúng đối với các loại mặt nạ chưa từng thấy. Hơn nữa, việc huấn luyện với các tổn thất theo từng pixel và tổn thất nhận thức thường dẫn đến việc mở rộng kết cấu đơn giản về phía các vùng bị thiếu thay vì tạo ra nội dung có ý nghĩa ngữ nghĩa. Trong công việc này, chúng tôi đề xuất RePaint: một phương pháp inpainting dựa trên Mô hình Xác suất Khuếch tán Loại bỏ nhiễu (DDPM) có thể áp dụng ngay cả cho các mặt nạ cực đoan. Chúng tôi sử dụng một DDPM vô điều kiện đã được huấn luyện trước như là tiên nghiệm sinh. Để điều kiện hóa quá trình sinh, chúng tôi chỉ thay đổi các bước lặp ngược của quá trình khuếch tán bằng cách lấy mẫu các vùng không bị che mặt nạ bằng cách sử dụng thông tin hình ảnh đã cho. Vì kỹ thuật này không sửa đổi hoặc điều kiện hóa chính mạng DDPM gốc, mô hình tạo ra các hình ảnh đầu ra chất lượng cao và đa dạng cho bất kỳ dạng inpainting nào. Chúng tôi xác thực phương pháp của mình cho cả inpainting khuôn mặt và inpainting hình ảnh đa dụng bằng cách sử dụng các mặt nạ tiêu chuẩn và cực đoan. RePaint vượt trội hơn các phương pháp Autoregressive và GAN tiên tiến nhất cho ít nhất năm trong số sáu phân bố mặt nạ. Kho GitHub: this http URL.

Bản triển khai gốc có thể được tìm thấy tại andreas128/RePaint.

RePaintScheduler

lớp diffusers.RePaintScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'eta: float = 0.0trained_betas: numpy.ndarray | None = Noneclip_sample: bool = True )

Tham số

  • num_train_timesteps (int, mặc định là 1000) — Số bước khuếch tán để huấn luyện mô hình.
  • beta_start (float, mặc định là 0.0001) — Giá trị beta ban đầu của suy luận.
  • beta_end (float, mặc định là 0.02) — Giá trị beta cuối cùng.
  • beta_schedule (str, mặc định là "linear") — Lịch trình beta, một ánh xạ từ một khoảng beta sang một chuỗi các beta để bước qua mô hình. Chọn từ linear, scaled_linear, squaredcos_cap_v2, hoặc sigmoid.
  • eta (float, mặc định là 0.0) — Trọng số của nhiễu được thêm vào trong một bước khuếch tán. Giá trị 0.0 tương ứng với DDIM và giá trị 1.0 tương ứng với DDPM.
  • trained_betas (np.ndarray, tùy chọn) — Truyền một mảng betas trực tiếp vào constructor để bỏ qua beta_start và beta_end.
  • clip_sample (bool, mặc định là True) — Cắt mẫu dự đoán trong khoảng từ -1 đến 1 để đảm bảo ổn định về mặt số học.

RePaintScheduler là một trình lập lịch cho việc inpainting DDPM bên trong một mask cho trước.

Mô hình này kế thừa từ SchedulerMixin và ConfigMixin. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các trình lập lịch, chẳng hạn như tải và lưu.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor )

Tham số

  • original_samples (torch.Tensor) — Các mẫu gốc mà nhiễu sẽ được thêm vào.
  • noise (torch.Tensor) — Nhiễu sẽ được thêm vào các mẫu.
  • timesteps (torch.IntTensor) — Các bước thời gian (timesteps) sẽ xác định mức độ nhiễu cho mỗi mẫu.

Gây ra

NotImplementedError

Chỉ ra rằng việc thêm nhiễu cho quá trình huấn luyện RePaint không được hỗ trợ bởi trình lập lịch này.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Tham số

  • sample (torch.Tensor) — Mẫu đầu vào.
  • timestep (int, tùy chọn) — Bước thời gian hiện tại trong chuỗi khuếch tán.

Trả về

torch.Tensor

Một mẫu đầu vào đã được chuẩn hóa.

Đảm bảo khả năng hoán đổi với các trình lập lịch cần mở rộng đầu vào của mô hình khử nhiễu tùy thuộc vào bước thời gian hiện tại.

set_timesteps

< >

( num_inference_steps: intjump_length: int = 10jump_n_sample: int = 10device: typing.Union[str, torch.device, NoneType] = None )

Tham số

  • num_inference_steps (int) — Số bước khuếch tán được sử dụng khi tạo mẫu bằng mô hình đã được huấn luyện trước.
  • jump_length (int, mặc định là 10) — Số bước tiến về phía trước trong thời gian trước khi quay ngược thời gian cho một lần nhảy (“j” trong bài báo RePaint). Hãy xem Hình 9 và 10 trong bài báo.
  • jump_n_sample (int, mặc định là 10) — Số lần thực hiện bước nhảy thời gian tiến cho một mẫu thời gian được chọn. Hãy xem Hình 9 và 10 trong bài báo.
  • device (str hoặc torch.device, tùy chọn) — Thiết bị mà các bước thời gian (timesteps) sẽ được chuyển đến. Nếu là None, các bước thời gian sẽ không được chuyển.

Đặt các bước thời gian rời rạc được sử dụng cho chuỗi khuếch tán (cần chạy trước khi suy luận).

bước

< >

( model_output: Tensortimestep: intsample: Tensororiginal_image: Tensormask: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → RePaintSchedulerOutput or tuple[torch.Tensor, torch.Tensor]

Tham số

  • model_output (torch.Tensor) — Đầu ra trực tiếp từ mô hình khuếch tán đã học.
  • timestep (int) — Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán.
  • sample (torch.Tensor) — Một bản thể hiện hiện tại của mẫu được tạo ra bởi quá trình khuếch tán.
  • original_image (torch.Tensor) — Hình ảnh gốc để thực hiện inpaint.
  • mask (torch.Tensor) — Mặt nạ mà giá trị 0.0 chỉ ra phần của ảnh gốc cần được inpaint.
  • generator (torch.Generator, tùy chọn) — Bộ tạo số ngẫu nhiên.
  • return_dict (bool, mặc định là True) — Có nên trả về một RePaintSchedulerOutput thay vì một tuple hay không.

Trả về

RePaintSchedulerOutput hoặc tuple[torch.Tensor, torch.Tensor]

If return_dict is True, RePaintSchedulerOutput is returned, otherwise a tuple is returned where the first element is the previous sample and the second is the predicted original sample.

Dự đoán mẫu từ bước thời gian trước đó bằng cách đảo ngược SDE. Hàm này lan truyền quá trình khuếch tán từ các đầu ra của mô hình đã học (thường nhất là nhiễu được dự đoán).

undo_step

< >

( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor

Tham số

  • sample (torch.Tensor) — Mẫu mà nhiễu được thêm vào.
  • timestep (int) — Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán.
  • generator (torch.Generator, tùy chọn) — Bộ tạo số ngẫu nhiên.

Trả về

torch.Tensor

Mẫu tại bước thời gian tiếp theo trong chuỗi khuếch tán.

Thêm nhiễu vào một mẫu để di chuyển nó tiến lên một bước khuếch tán.

RePaintSchedulerOutput

lớp diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: Tensor )

Tham số

  • prev_sample (torch.Tensor có shape (batch_size, num_channels, height, width) đối với ảnh) — Mẫu đã tính (x_{t-1}) của bước thời gian trước đó. prev_sample nên được sử dụng làm đầu vào mô hình tiếp theo trong vòng lặp khử nhiễu.
  • pred_original_sample (torch.Tensor có hình dạng (batch_size, num_channels, height, width) đối với ảnh) — Mẫu khử nhiễu dự đoán (x_{0}) dựa trên đầu ra của mô hình tại bước thời gian hiện tại. pred_original_sample có thể được dùng để xem trước tiến độ hoặc cho việc dẫn hướng.

Lớp đầu ra cho kết quả của hàm bước của trình lập lịch.

Update on GitHub