算力平台:
DDIMScheduler
去噪扩散隐式模型(DDIM)由宋佳铭、陈林和 Stefano Ermon 提出。
论文的摘要如下:
去噪扩散概率模型(DDPMs)在没有对抗训练的情况下实现了高质量的图像生成,但它们需要模拟一个马尔可夫链的许多步骤才能生成样本。为了加速采样,我们提出了去噪扩散隐式模型(DDIMs),这是一种更高效的迭代隐式概率模型,具有与 DDPMs 相同的训练过程。在 DDPMs 中,生成过程被定义为马尔可夫扩散过程的逆过程。我们构建了一类非马尔可夫扩散过程,这些过程导致相同的训练目标,但其逆过程可以更快地进行采样。我们通过实验证明,DDIMs 可以在壁钟时间上比 DDPMs 快 10 倍到 50 倍生成高质量样本,允许我们在计算和样本质量之间进行权衡,并且可以直接在潜在空间中进行语义上有意义的图像插值。
该论文的原始代码库可以在 ermongroup/ddim 找到,你可以在 tsong.me 联系作者。
提示
论文 常见的扩散噪声计划和采样步骤存在缺陷 声称,训练和推理设置之间的不匹配导致 Stable Diffusion 的推理生成结果次优。为了解决这个问题,作者提出了:
- 重新调整噪声计划以强制零终端信噪比(SNR)
py
pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config, rescale_betas_zero_snr=True)
- 使用
v_prediction
训练模型(将以下参数添加到 train_text_to_image.py 或 train_text_to_image_lora.py 脚本中)
bash
--prediction_type="v_prediction"
- 将采样器更改为始终从最后一个时间步开始
py
pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config, timestep_spacing="trailing")
- 重新调整无分类器指导以防止过度曝光
py
image = pipe(prompt, guidance_rescale=0.7).images[0]
例如:
py
from diffusers import DiffusionPipeline, DDIMScheduler
import torch
pipe = DiffusionPipeline.from_pretrained("ptx0/pseudo-journey-v2", torch_dtype=torch.float16)
pipe.scheduler = DDIMScheduler.from_config(
pipe.scheduler.config, rescale_betas_zero_snr=True, timestep_spacing="trailing"
)
pipe.to("cuda")
prompt = "A lion in galaxies, spirals, nebulae, stars, smoke, iridescent, intricate detail, octane render, 8k"
image = pipe(prompt, guidance_rescale=0.7).images[0]
image
DDIMScheduler
[[autodoc]] DDIMScheduler
DDIMSchedulerOutput
[[autodoc]] schedulers.scheduling_ddim.DDIMSchedulerOutput