Diffusers 文档

DDIM

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验

开始使用

DDIM

Denoising Diffusion Implicit Models (DDIM) by Jiaming Song, Chenlin Meng and Stefano Ermon.

The abstract from the paper is

去噪扩散概率模型(DDPM)在没有对抗训练的情况下就实现了高质量图像生成,但它们需要模拟马尔可夫链以生成样本,需要很多步骤。为了加速采样,我们提出了去噪扩散隐式模型(DDIM),这是一种更高效的迭代隐式概率模型类别,其训练过程与 DDPM 相同。在 DDPM 中,生成过程被定义为马尔可夫扩散过程的逆过程。我们构建了一类非马尔可夫扩散过程,它们导致相同的训练目标,但其逆过程的采样速度要快得多。我们通过实验证明,与 DDPM 相比,DDIM 可以以快 10 倍到 50 倍的速度生成高质量样本,使我们能够在计算量和样本质量之间进行权衡,并且能够在潜在空间中直接执行语义上有意义的图像插值。

The original codebase can be found at ermongroup/ddim.

DDIMPipeline

class diffusers.DDIMPipeline

< >

( unet scheduler )

Parameters

用于图像生成的管道。

此模型继承自 DiffusionPipeline。查看超类文档以获取为所有管道实现的通用方法(下载、保存、在特定设备上运行等)。

__call__

< >

( batch_size: int = 1 generator: Union = None eta: float = 0.0 num_inference_steps: int = 50 use_clipped_model_output: Optional = None output_type: Optional = 'pil' return_dict: bool = True ) ImagePipelineOutput or tuple

Parameters

  • batch_size (int, optional, defaults to 1) — 要生成的图像数量。
  • generator (torch.Generator, optional) — 一个 torch.Generator,用于使生成确定性。
  • eta (float, optional, defaults to 0.0) — 对应于 num_inference_steps (int, 可选, 默认值 50) — 降噪步骤数。更多降噪步骤通常会导致更高质量的图像,但会牺牲推理速度。
  • use_clipped_model_output (bool, 可选, 默认值 None) — 如果为 TrueFalse,请参见 DDIMScheduler.step() 的文档。如果为 None,则不会将任何内容传递到下游调度器(对于不支持此参数的调度器,请使用 None)。
  • output_type (str, 可选, 默认值 "pil") — 生成的图像的输出格式。在 PIL.Imagenp.array 之间选择。
  • return_dict (bool, 可选, 默认值 True) — 是否返回 ImagePipelineOutput 而不是普通元组。

返回值

ImagePipelineOutput元组

如果 return_dictTrue,则返回 ImagePipelineOutput,否则返回一个 元组,其中第一个元素是包含生成图像的列表。

管道用于生成的调用函数。

示例

>>> from diffusers import DDIMPipeline
>>> import PIL.Image
>>> import numpy as np

>>> # load model and scheduler
>>> pipe = DDIMPipeline.from_pretrained("fusing/ddim-lsun-bedroom")

>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe(eta=0.0, num_inference_steps=50)

>>> # process image to PIL
>>> image_processed = image.cpu().permute(0, 2, 3, 1)
>>> image_processed = (image_processed + 1.0) * 127.5
>>> image_processed = image_processed.numpy().astype(np.uint8)
>>> image_pil = PIL.Image.fromarray(image_processed[0])

>>> # save image
>>> image_pil.save("test.png")

ImagePipelineOutput

class diffusers.ImagePipelineOutput

< >

( images: Union )

Parameters

  • images (List[PIL.Image.Image]np.ndarray) — 长度为 batch_size 的降噪 PIL 图像列表,或形状为 (batch_size, height, width, num_channels) 的 NumPy 数组。

图像管道的输出类。

< > 在 GitHub 上更新