EDMEulerScheduler
Karras等人撰写的《关于扩散生成模型的原理设计空间阐释》论文中提出的Euler调度器的Karras公式(算法2)。这是一种快速调度器,常常在20-30步内就能生成良好的输出。调度器基于Katherine Crowson原始的k-diffusion实现。
EDMEulerScheduler
类 diffusers.EDMEulerScheduler
< source >( sigma_min: float = 0.002 sigma_max: float = 80.0 sigma_data: float = 0.5 sigma_schedule: str = 'karras' num_train_timesteps: int = 1000 prediction_type: str = 'epsilon' rho: float = 7.0 )
参数
- sigma_min (
float
, 可选,默认为0.002) — sigma计划中噪声的最小幅度。在EDM论文[1]中设置为0.002;一个合理的范围是[0,10]。 - sigma_max (
float
, 可选,默认为80.0) — sigma计划中噪声的最大幅度。在EDM论文[1]中设置为80.0;一个合理的范围是[0.2,80.0]。 - sigma_data (
float
, 可选, 默认为 0.5) — 数据分布的标准差。这在 EDM 文件[1]中设置为 0.5。 - sigma_schedule (
str
, 可选, 默认为karras
) — 计算sigma的计划表。默认情况下,我们使用 EDM 文件中引入的计划(《https://arxiv.org/abs/2206.00364》)。其他可接受的值是“指数”。指数计划已被纳入此模型:《https://huggingface.co/stabilityai/cosxl》。 - num_train_timesteps (
int
, 默认为 1000) — 训练模型所需的扩散步骤数。 - prediction_type(
Supportsimplified_Chinese_str
, 默认值epsilon
,可选的)- 调度器函数的预测类型; 可以为epsilon
(预测扩散过程的噪声),sample
(直接预测噪声样本) 或 v_prediction` (参见Imagen Video 论文中的第2.4节). - 实现了EDM公式中 zoals in Karras 等人于 2022 年提出的 Euler 调度器。[1]
[1] Karras, Tero, 等人。 “解释基于扩散的生成模型的配置空间。” https://arxiv.org/abs/2206.00364
该模型继承自SchedulerMixin和ConfigMixin。请查阅父类文档,了解库为所有调度器实现的通用方法,例如加载和保存。
scale_model_input
< source >( sample: Tenso timestep: Union ) →
torch.Tensor
确保与需要根据当前时间步长缩放大噪声模型输入的调度器可交换。通过
(sigma**2 + 1) ** 0.5
缩放去噪模型输入以符合欧拉算法。设置调度器的起始索引。应在推理前从管道中运行此函数。
set_timesteps
< source >( num_inference_steps: int device: Union = None )
设置用于扩散链(在推理之前)的离散时间步。
步
< source >( model_output: Tensor timestep: Union sample: Tensor s_churn: float = 0.0 s_tmin: float = 0.0 s_tmax: float = inf s_noise: float = 1.0 generator: Optional = None return_dict: bool = True ) →
~schedulers.scheduling_euler_discrete.EDMEulerSchedulerOutput
或tuple
参数
- model_output (
torch.Tensor
) — 来自学习扩散模型的直接输出。 - timestep (
float
) — 在扩散链中的当前离散时间步。 - sample (
torch.Tensor
) — 通过扩散过程创建的当前样本实例。 - s_churn (
float
) — - s_tmin (
float
) — - s_tmax (
float
) — - 添加噪声的缩放因子 (
float
, 默认值为 1.0) — - generator (
torch.Generator
, 可选项) — 随机数生成器。 - return_dict (
bool
) — 是否返回~schedulers.scheduling_euler_discrete.EDMEulerSchedulerOutput
或元组。
返回值
~schedulers.scheduling_euler_discrete.EDMEulerSchedulerOutput
或tuple
如果 return_dict 设置为
true
,则返回~schedulers.scheduling_euler_discrete.EDMEulerSchedulerOutput
,否则返回一个元组,其中第一个元素是样本张量。通过反转SDE(随机微分方程)预测上一时间步的样本。此函数通过学习模型输出(最常见的是预测的噪声)传播扩散过程。
- model_output (
EDMEulerSchedulerOutput
类 diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput
< 源代码 >( prev_sample: 张量 pred_original_sample: 可选 = None )
调度器的 step
函数输出输出类。