Diffusers 文档

KarrasVe调度器

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

KarrasVe调度器

KarrasVeScheduler 是一个针对方差扩展(VE)模型定制的随机采样器。它基于 “阐明基于扩散的生成模型的设计空间”“通过随机微分方程的基于分数的生成建模” 论文。

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]。

一种为方差扩展模型量身定制的随机采样器。

此模型继承自 SchedulerMixinConfigMixin。有关库为所有调度器(如加载和保存)实现的通用方法,请查看超类文档。

有关参数的更多详细信息,请参见 附录 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, 可选) — 随机数生成器。

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

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,则时间步不移动。

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

步骤

< >

( 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,否则返回一个元组,其中第一个元素是样本张量。

通过逆转 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)

扩散链中更新的样本。导数(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, 图像形状为 (batch_size, num_channels, height, width)) — 上一个时间步计算的样本(x_{t-1})。prev_sample 应作为去噪循环中的下一个模型输入。
  • derivative (torch.Tensor, 图像形状为 (batch_size, num_channels, height, width)) — 预测原始图像样本 (x_0) 的导数。
  • pred_original_sample (torch.Tensor, 图像形状为 (batch_size, num_channels, height, width)) — 基于当前时间步的模型输出预测的去噪样本 (x_{0})。pred_original_sample 可用于预览进度或进行引导。

调度器步进函数输出的输出类。

< > 在 GitHub 上更新