Diffusers 文档

KarrasVeScheduler

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

KarrasVeScheduler

KarrasVeScheduler 是一种专为方差扩展 (VE) 模型定制的随机采样器。它基于 Elucidating the Design Space of Diffusion-Based Generative ModelsScore-based generative modeling through stochastic differential equations 论文。

KarrasVeScheduler

class diffusers.KarrasVeScheduler

< >

( sigma_min: float = 0.02 sigma_max: float = 100 s_noise: float = 1.007 s_churn: float = 80 s_min: float = 0.05 s_max: float = 50 )

参数

  • sigma_min (float, 默认为 0.02) — 最小噪声幅度。
  • sigma_max (float, 默认为 100) — 最大噪声幅度。
  • s_noise (float, 默认为 1.007) — 用于抵消采样期间细节损失的额外噪声量。合理的范围是 [1.000, 1.011]。
  • s_churn (float, 默认为 80) — 控制随机性总量的参数。合理的范围是 [0, 100]。
  • s_min (float, 默认为 0.05) — 用于添加噪声(启用随机性)的 sigma 范围的起始值。合理的范围是 [0, 10]。
  • s_max (float, 默认为 50) — 用于添加噪声的 sigma 范围的结束值。合理的范围是 [0.2, 80]。

一种专为方差扩展模型定制的随机 scheduler。

此模型继承自 SchedulerMixinConfigMixin。查看超类文档,了解库为所有 schedulers 实现的通用方法,例如加载和保存。

有关参数的更多详细信息,请参阅 附录 E。用于为特定模型找到最佳 {s_noise, s_churn, s_min, s_max} 的网格搜索值在论文的表 5 中进行了描述。

add_noise_to_input

< >

( sample: Tensor sigma: float generator: typing.Optional[torch._C.Generator] = None )

参数

  • sample (torch.Tensor) — 输入样本。
  • sigma (float) —
  • generator (torch.Generator, 可选) — 一个随机数生成器。

显式的 Langevin 风格的“扰动”步骤,根据 gamma_i ≥ 0 向样本添加噪声,以达到更高的噪声水平 sigma_hat = sigma_i + gamma_i*sigma_i

scale_model_input

< >

( sample: Tensor timestep: typing.Optional[int] = None ) torch.Tensor

参数

  • sample (torch.Tensor) — 输入样本。
  • timestep (int, 可选) — 扩散链中的当前时间步。

返回值

torch.Tensor

一个缩放后的输入样本。

确保与需要根据当前时间步缩放去噪模型输入的调度器具有互换性。

set_timesteps

< >

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

参数

  • num_inference_steps (int) — 使用预训练模型生成样本时使用的扩散步骤数。
  • device (strtorch.device, 可选) — 时间步应移动到的设备。如果为 None,则不移动时间步。

设置用于扩散链的离散时间步(在推理之前运行)。

step

< >

( model_output: Tensor sigma_hat: float sigma_prev: float sample_hat: Tensor return_dict: bool = True ) ~schedulers.scheduling_karras_ve.KarrasVESchedulerOutputtuple

参数

  • model_output (torch.Tensor) — 来自学习的扩散模型的直接输出。
  • sigma_hat (float) —
  • sigma_prev (float) —
  • sample_hat (torch.Tensor) —
  • return_dict (bool, 可选, 默认为 True) — 是否返回 ~schedulers.scheduling_karras_ve.KarrasVESchedulerOutputtuple

返回值

~schedulers.scheduling_karras_ve.KarrasVESchedulerOutputtuple

如果 return_dict 为 True,则返回 ~schedulers.scheduling_karras_ve.KarrasVESchedulerOutput,否则返回一个 tuple,其中第一个元素是样本张量。

通过反转 SDE,从上一个时间步预测样本。此函数从学习的模型输出(通常是预测的噪声)传播扩散过程。

step_correct

< >

( model_output: Tensor sigma_hat: float sigma_prev: float sample_hat: Tensor sample_prev: Tensor derivative: Tensor return_dict: bool = True ) prev_sample (TODO)

参数

  • model_output (torch.Tensor) — 来自学习的扩散模型的直接输出。
  • sigma_hat (float) — TODO
  • sigma_prev (float) — TODO
  • sample_hat (torch.Tensor) — TODO
  • sample_prev (torch.Tensor) — TODO
  • derivative (torch.Tensor) — TODO
  • return_dict (bool, 可选, 默认为 True) — 是否返回 DDPMSchedulerOutputtuple

返回值

prev_sample (TODO)

扩散链中更新的样本。 derivative (TODO): TODO

根据网络的 model_output 校正预测的样本。

KarrasVeOutput

class diffusers.schedulers.deprecated.scheduling_karras_ve.KarrasVeOutput

< >

( prev_sample: Tensor derivative: Tensor pred_original_sample: typing.Optional[torch.Tensor] = None )

参数

  • prev_sample (torch.Tensor of shape (batch_size, num_channels, height, width) for images) — 计算出的上一个时间步的样本 (x_{t-1})。prev_sample 应该在去噪循环中用作下一个模型输入。
  • derivative (torch.Tensor of shape (batch_size, num_channels, height, width) for images) — 预测的原始图像样本 (x_0) 的导数。
  • pred_original_sample (torch.Tensor of shape (batch_size, num_channels, height, width) for images) — 基于当前时间步的模型输出,预测的去噪样本 (x_{0})。pred_original_sample 可以用于预览进度或进行指导。

调度器 step 函数输出的输出类。

< > 在 GitHub 上更新