Diffusers 文档

EDMEulerScheduler

Hugging Face's logo
加入Hugging Face社区

并获取增强文档体验的权限

开始吧

EDMEulerScheduler

Karras等人撰写的《关于扩散生成模型的原理设计空间阐释》论文中提出的Euler调度器的Karras公式(算法2)。这是一种快速调度器,常常在20-30步内就能生成良好的输出。调度器基于Katherine Crowson原始的k-diffusion实现。

EDMEulerScheduler

diffusers.EDMEulerScheduler

< >

( 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

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

    scale_model_input

    < >

    ( sample: Tenso timestep: Union ) torch.Tensor

    参数

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

    返回值

    torch.Tensor

    缩放后的输入样本。

    确保与需要根据当前时间步长缩放大噪声模型输入的调度器可交换。通过 (sigma**2 + 1) ** 0.5 缩放去噪模型输入以符合欧拉算法。

    set_begin_index

    < >

    ( begin_index: int = 0 )

    参数

    • begin_index (int) — 调度器的起始索引。

    设置调度器的起始索引。应在推理前从管道中运行此函数。

    set_timesteps

    < >

    ( num_inference_steps: int device: Union = None )

    参数

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

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

    < >

    ( 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.EDMEulerSchedulerOutputtuple

    参数

    • 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.EDMEulerSchedulerOutputtuple

    如果 return_dict 设置为 true,则返回 ~schedulers.scheduling_euler_discrete.EDMEulerSchedulerOutput,否则返回一个元组,其中第一个元素是样本张量。

    通过反转SDE(随机微分方程)预测上一时间步的样本。此函数通过学习模型输出(最常见的是预测的噪声)传播扩散过程。

EDMEulerSchedulerOutput

diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput

< >

( prev_sample: 张量 pred_original_sample: 可选 = None )

参数

  • prev_sample (torch.Tensor 形状为 (batch_size, num_channels, height, width) 适用于图像) — 上一个时间步的已计算样本 (x_{t-1})。应将 prev_sample 用作去噪循环中的下一次模型输入。
  • pred_original_sample (torch.Tensor 形状为 (batch_size, num_channels, height, width) 适用于图像) — 将基于当前时间步的模型输出预测的去噪样本 (x_{0})。可以使用 pred_original_sample 预览进度或做引导。

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

< > 在 GitHub 上更新