Diffusers 文档

ScoreSdeVeScheduler

Hugging Face's logo
加入 Hugging Face 社区

并访问增强的文档体验

开始使用

ScoreSdeVeScheduler

ScoreSdeVeScheduler 是一种方差爆炸的随机微分方程 (SDE) 调度器。 它在 Yang Song、Jascha Sohl-Dickstein、Diederik P. Kingma、Abhishek Kumar、Stefano Ermon、Ben Poole 的论文 Score-Based Generative Modeling through Stochastic Differential Equations 中提出。

论文的摘要如下:

从数据中创建噪声很容易;从噪声中创建数据就是生成式建模。我们提出了一个随机微分方程 (SDE),它通过缓慢注入噪声将复杂的数据分布平滑地转换为已知的先验分布,以及一个相应的逆时SDE,它通过缓慢去除噪声将先验分布转换回数据分布。至关重要的是,逆时SDE 仅依赖于扰动数据分布的时间相关梯度场(也称为得分)。通过利用基于得分的生成式建模的进展,我们可以使用神经网络准确地估计这些得分,并使用数值 SDE 求解器生成样本。我们证明了这个框架囊括了基于得分的生成式建模和扩散概率模型的先前方法,允许新的采样程序和新的建模能力。特别是,我们引入了一个预测-校正框架来纠正离散逆时 SDE 演化过程中的错误。我们还推导出一个等效的神经 ODE,它从与 SDE 相同的分布中进行采样,但此外还能实现精确的似然计算和改进的采样效率。此外,我们提供了一种使用基于得分的模型解决逆问题的新方法,如在类条件生成、图像修复和着色方面的实验所示。结合多个架构改进,我们在 CIFAR-10 上实现了无条件图像生成的突破性性能,Inception 分数为 9.89,FID 为 2.20,具有竞争力的似然为 2.99 比特/维,并首次从基于得分的生成式模型演示了 1024 x 1024 图像的高保真生成。

ScoreSdeVeScheduler

class diffusers.ScoreSdeVeScheduler

< >

( num_train_timesteps: int = 2000 snr: float = 0.15 sigma_min: float = 0.01 sigma_max: float = 1348.0 sampling_eps: float = 1e-05 correct_steps: int = 1 )

参数

  • num_train_timesteps (int, 默认值为 1000) — 用于训练模型的扩散步骤数。
  • snr (float, 默认值为 0.15) — 一个系数,用于对从 model_output 样本(来自网络)到随机噪声的步骤进行加权。
  • sigma_min (float, 默认值为 0.01) — 采样过程中 sigma 序列的初始噪声尺度。 最小的 sigma 应该反映数据的分布。
  • sigma_max (float, 默认值为 1348.0) — 用于传递到模型的连续时间步长范围内的最大值。
  • sampling_eps (float, 默认值为 1e-5) — 采样的结束值,其中时间步长从 1 到 epsilon 逐渐递减。
  • correct_steps (int, 默认值为 1) — 对生成的样本执行的校正步骤数量。

ScoreSdeVeScheduler 是一种方差爆炸的随机微分方程 (SDE) 调度器。

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

scale_model_input

< >

( sample: 张量 timestep: 可选 = None ) torch.Tensor

参数

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

返回值

torch.Tensor

一个缩放后的输入样本。

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

set_sigmas

< >

( num_inference_steps: int sigma_min: float = None sigma_max: float = None sampling_eps: float = None )

参数

  • num_inference_steps (int) — 使用预训练模型生成样本时使用的扩散步数。
  • sigma_min (float, 可选) — 初始噪声尺度值(覆盖调度器实例化期间给定的值)。
  • sigma_max (float, 可选) — 最终噪声尺度值(覆盖调度器实例化期间给定的值)。
  • sampling_eps (float, 可选) — 最终时间步值(覆盖调度器实例化期间给定的值)。

设置用于扩散链的噪声尺度(在推理之前运行)。sigmas 控制样本更新的 driftdiffusion 组件的权重。

set_timesteps

< >

( num_inference_steps: int sampling_eps: float = None device: 联合 = None )

参数

  • num_inference_steps (int) — 使用预训练模型生成样本时的扩散步骤数。
  • sampling_eps (float, 可选) — 最终时间步值(覆盖调度器实例化期间给定的值)。
  • device (strtorch.device, 可选) — 时间步应移动到的设备。如果为 None,则不会移动时间步。

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

step_correct

< >

( model_output: 张量 sample: 张量 generator: 可选 = None return_dict: bool = True ) SdeVeOutput元组

参数

  • model_output (torch.Tensor) — 来自学习扩散模型的直接输出。
  • sample (torch.Tensor) — 由扩散过程创建的样本的当前实例。
  • generator (torch.Generator, 可选) — 随机数生成器。
  • return_dict (bool, 可选,默认值为 True) — 是否返回 SdeVeOutput元组

返回值

SdeVeOutput元组

如果 return_dict 为 True,则返回 SdeVeOutput,否则返回一个元组,其中第一个元素是样本张量。

根据网络的 model_output 校正预测的样本。这通常在对前一个时间步进行预测后重复运行。

step_pred

< >

( model_output: 张量 timestep: int sample: 张量 generator: 可选 = None return_dict: bool = True )

SdeVeOutput元组

如果 return_dict 为 True,则返回 SdeVeOutput,否则返回一个元组,其中第一个元素是样本张量。

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

SdeVeOutput

class diffusers.schedulers.scheduling_sde_ve.SdeVeOutput

< >

( prev_sample: Tensor prev_sample_mean: Tensor )

参数

  • prev_sample (torch.Tensor 形状为 (batch_size, num_channels, height, width) 的图像) — 计算出的前一个时间步的样本 (x_{t-1})prev_sample 应该用作去噪循环中的下一个模型输入。
  • prev_sample_mean (torch.Tensor 形状为 (batch_size, num_channels, height, width) 的图像) — 对前一个时间步的 prev_sample 进行平均的 prev_sample

调度程序的 step 函数输出的输出类。

< > 在 GitHub 上更新