Diffusers documentation

DDIM

You are viewing v0.16.0 version. A newer version v0.31.0 is available.
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DDIM

Overview

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

The abstract of the paper is the following:

Denoising diffusion probabilistic models (DDPMs) have achieved high quality image generation without adversarial training, yet they require simulating a Markov chain for many steps to produce a sample. To accelerate sampling, we present denoising diffusion implicit models (DDIMs), a more efficient class of iterative implicit probabilistic models with the same training procedure as DDPMs. In DDPMs, the generative process is defined as the reverse of a Markovian diffusion process. We construct a class of non-Markovian diffusion processes that lead to the same training objective, but whose reverse process can be much faster to sample from. We empirically demonstrate that DDIMs can produce high quality samples 10× to 50× faster in terms of wall-clock time compared to DDPMs, allow us to trade off computation for sample quality, and can perform semantically meaningful image interpolation directly in the latent space.

The original codebase of this paper can be found here: ermongroup/ddim. For questions, feel free to contact the author on tsong.me.

Available Pipelines:

Pipeline Tasks Colab
pipeline_ddim.py Unconditional Image Generation -

DDIMPipeline

class diffusers.DDIMPipeline

< >

( unet scheduler )

Parameters

This model inherits from DiffusionPipeline. Check the superclass documentation for the generic methods the library implements for all the pipelines (such as downloading or saving, running on a particular device, etc.)

__call__

< >

( batch_size: int = 1 generator: typing.Union[torch._C.Generator, typing.List[torch._C.Generator], NoneType] = None eta: float = 0.0 num_inference_steps: int = 50 use_clipped_model_output: typing.Optional[bool] = None output_type: typing.Optional[str] = 'pil' return_dict: bool = True ) ImagePipelineOutput or tuple

Parameters

  • batch_size (int, optional, defaults to 1) — The number of images to generate.
  • generator (torch.Generator, optional) — One or a list of torch generator(s) to make generation deterministic.
  • eta (float, optional, defaults to 0.0) — The eta parameter which controls the scale of the variance (0 is DDIM and 1 is one type of DDPM).
  • num_inference_steps (int, optional, defaults to 50) — The number of denoising steps. More denoising steps usually lead to a higher quality image at the expense of slower inference.
  • use_clipped_model_output (bool, optional, defaults to None) — if True or False, see documentation for DDIMScheduler.step. If None, nothing is passed downstream to the scheduler. So use None for schedulers which don’t support this argument.
  • output_type (str, optional, defaults to "pil") — The output format of the generate image. Choose between PIL: PIL.Image.Image or np.array.
  • return_dict (bool, optional, defaults to True) — Whether or not to return a ImagePipelineOutput instead of a plain tuple.

Returns

ImagePipelineOutput or tuple

~pipelines.utils.ImagePipelineOutput if return_dict is True, otherwise a `tuple. When returning a tuple, the first element is a list with the generated images.