Diffusers documentation
ScoreSdeVeScheduler
ScoreSdeVeScheduler
ScoreSdeVeScheduler là trình lập lịch phương trình vi phân ngẫu nhiên (SDE) phương sai bùng nổ. Nó được giới thiệu trong bài báo Score-Based Generative Modeling through Stochastic Differential Equations của Yang Song, Jascha Sohl-Dickstein, Diederik P. Kingma, Abhishek Kumar, Stefano Ermon, Ben Poole.
Tóm tắt từ bài báo là:
Việc tạo nhiễu từ dữ liệu thì dễ; việc tạo dữ liệu từ nhiễu chính là mô hình hóa sinh. Chúng tôi trình bày một phương trình vi phân ngẫu nhiên (SDE) biến đổi một cách mượt mà từ một phân phối dữ liệu phức tạp sang một phân phối tiên nghiệm đã biết bằng cách từ từ tiêm nhiễu, và một SDE ngược thời gian tương ứng biến đổi phân phối tiên nghiệm trở lại thành phân phối dữ liệu bằng cách từ từ loại bỏ nhiễu. Quan trọng là, SDE ngược thời gian chỉ phụ thuộc vào trường gradient phụ thuộc thời gian (còn gọi là score) của phân phối dữ liệu bị nhiễu. Bằng cách tận dụng những tiến bộ trong mô hình hóa sinh dựa trên score, chúng ta có thể ước lượng chính xác các score này bằng mạng nơ-ron, và sử dụng các bộ giải SDE số để tạo ra các mẫu. Chúng tôi chỉ ra rằng khung làm việc này bao hàm các phương pháp trước đó trong mô hình hóa sinh dựa trên score và mô hình hóa xác suất khuếch tán, cho phép các quy trình lấy mẫu mới và các khả năng mô hình hóa mới. Cụ thể, chúng tôi giới thiệu một khung dự đoán-sửa lỗi để sửa các sai số trong sự tiến hóa của SDE ngược thời gian đã rời rạc hóa. Chúng tôi cũng suy ra một ODE nơ-ron tương đương, lấy mẫu từ cùng một phân phối như SDE, nhưng ngoài ra còn cho phép tính toán xác suất hợp lý chính xác và cải thiện hiệu quả lấy mẫu. Ngoài ra, chúng tôi cung cấp một cách mới để giải các bài toán ngược bằng các mô hình dựa trên score, như được minh họa qua các thí nghiệm về sinh có điều kiện theo lớp, inpainting ảnh và tô màu. Kết hợp với nhiều cải tiến kiến trúc, chúng tôi đạt được hiệu suất phá vỡ kỷ lục cho việc sinh ảnh không điều kiện trên CIFAR-10 với điểm Inception là 9.89 và FID là 2.20, xác suất hợp lý cạnh tranh là 2.99 bits/dim, và lần đầu tiên chứng minh khả năng sinh ảnh 1024 x 1024 với độ trung thực cao từ một mô hình sinh dựa trên score.
ScoreSdeVeScheduler
lớp diffusers.ScoreSdeVeScheduler
< source >( num_train_timesteps: int = 2000snr: float = 0.15sigma_min: float = 0.01sigma_max: float = 1348.0sampling_eps: float = 1e-05correct_steps: int = 1 )
Tham số
- num_train_timesteps (
int, mặc định là 2000) — Số bước khuếch tán để huấn luyện mô hình. - snr (
float, mặc định là 0.15) — Hệ số trọng số cho bước từ mẫumodel_output(từ mạng) đến nhiễu ngẫu nhiên. - sigma_min (
float, mặc định là 0.01) — Thang độ nhiễu ban đầu cho chuỗi sigma trong quy trình lấy mẫu. Sigma tối thiểu nên phản ánh phân phối của dữ liệu. - sigma_max (
float, mặc định là 1348.0) — Giá trị tối đa được sử dụng cho phạm vi các bước thời gian liên tục được truyền vào mô hình. - sampling_eps (
float, mặc định là 1e-5) — Giá trị kết thúc của quá trình lấy mẫu, nơi các bước thời gian giảm dần từ 1 đến epsilon. - correct_steps (
int, mặc định là 1) — Số bước hiệu chỉnh được thực hiện trên một mẫu được tạo ra.
ScoreSdeVeScheduler là trình lập lịch phương trình vi phân ngẫu nhiên (SDE) phương sai bùng nổ.
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
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Tham số
- original_samples (
torch.Tensor) — Các mẫu gốc mà nhiễu sẽ được thêm vào. - noise (
torch.Tensor) — Tensor nhiễu cần thêm vào các mẫu gốc. - timesteps (
torch.Tensor) — Các bước thời gian (timesteps) để thêm nhiễu, xác định mức nhiễu từ lịch trình (schedule).
Trả về
torch.Tensor
Các mẫu nhiễu với nhiễu được thêm vào, được điều chỉnh theo lịch trình bước thời gian.
Thêm nhiễu vào các mẫu gốc theo lịch trình nhiễu tại các bước thời gian được chỉ định. Đây là quá trình khuếch tán thuận.
get_adjacent_sigma
< source >( timesteps: Tensort: Tensor ) → torch.Tensor
Trả về giá trị sigma tương ứng với chỉ số bước thời gian trước đó. Khi bước thời gian bằng không (không có bước thời gian trước), trả về không.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
Đả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_sigmas
< source >( num_inference_steps: intsigma_min: float | None = Nonesigma_max: float | None = Nonesampling_eps: float | None = 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. - sigma_min (
float, tùy chọn) — Giá trị thang độ nhiễu ban đầu (ghi đè giá trị được cung cấp khi khởi tạo trình lập lịch). - sigma_max (
float, tùy chọn) — Giá trị thang nhiễu cuối cùng (ghi đè giá trị được cung cấp khi khởi tạo trình lập lịch). - sampling_eps (
float, tùy chọn) — Giá trị bước thời gian cuối cùng (ghi đè giá trị được cung cấp khi khởi tạo trình lập lịch).
Đặt các thang đo nhiễu được sử dụng cho chuỗi khuếch tán (cần chạy trước khi suy luận). Các sigma kiểm soát trọng số của các thành phần drift và diffusion của việc cập nhật mẫu.
set_timesteps
< source >( num_inference_steps: intsampling_eps: float | None = Nonedevice: 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. - sampling_eps (
float, tùy chọn) — Giá trị bước thời gian cuối cùng (ghi đè giá trị được cung cấp khi khởi tạo trình lập lịch). - device (
strhoặctorch.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 liên tục được sử dụng cho chuỗi khuếch tán (cần chạy trước khi suy luận).
step_correct
< source >( model_output: Tensorsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple
Tham số
- model_output (
torch.Tensor) — Đầu ra trực tiếp từ mô hình khuếch tán đã học. - 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. - generator (
torch.Generator, tùy chọn) — Bộ tạo số ngẫu nhiên. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về SchedulerOutput haytuplehay không.
Trả về
SchedulerOutput hoặc tuple
If return_dict is True, SchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
Sửa mẫu dự đoán dựa trên model_output của mạng. Thao tác này thường được thực hiện lặp lại sau khi đưa ra dự đoán cho bước thời gian trước đó.
step_pred
< source >( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SdeVeOutput or tuple
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. - generator (
torch.Generator, tùy chọn) — Bộ tạo số ngẫu nhiên. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về SdeVeOutput haytuplehay không.
Trả về
SdeVeOutput hoặc tuple
If return_dict is True, SdeVeOutput is returned, otherwise a tuple
is returned where the first element is the sample tensor.
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).
SdeVeOutput
lớp diffusers.schedulers.scheduling_sde_ve.SdeVeOutput
< source >( prev_sample: Tensorprev_sample_mean: Tensor )
Tham số
- prev_sample (
torch.Tensorcó 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_samplenên được sử dụng làm đầu vào mô hình tiếp theo trong vòng lặp khử nhiễu. - prev_sample_mean (
torch.Tensorcó hình dạng(batch_size, num_channels, height, width)đối với ảnh) — Giá trị trung bình củaprev_sampleđược tính trung bình trên các bước thời gian trước đó.
Lớp đầu ra cho kết quả của hàm step của trình lập lịch.