View Source Bumblebee.Diffusion.DdimScheduler (Bumblebee v0.1.2)
Denoising diffusion implicit models (DDIMs).
This sampling method was proposed as a follow up to the original denoising diffusion probabilistic models (DDPMs) in order to heavily reduce the number of steps during inference. DDPMs model the diffusion process as a Markov chain; DDIMs generalize this considering non-Markovian diffusion processes that lead to the same objective. This enables a reverse process with many less samples, as compared to DDPMs, while using the same denoising model.
DDIMs were shown to be a simple variant of pseudo numerical methods
for diffusion models (PNDMs), see Bumblebee.Diffusion.PndmScheduler
and the corresponding paper for more details.
configuration
Configuration
:num_train_steps
- the number of diffusion steps used to train the model. Defaults to1000
:beta_schedule
- the beta schedule type, a mapping from a beta range to a sequence of betas for stepping the model. Either of:linear
,:quadratic
, or:squared_cosine
. Defaults to:linear
:beta_start
- the start value for the beta schedule. Defaults to0.0001
:beta_end
- the end value for the beta schedule. Defaults to0.02
:alpha_clip_strategy
- each step $t$ uses the values of $\bar{\alpha}_t$ and $\bar{\alpha}_{t-1}$, however for $t = 0$ there is no previous alpha. The strategy can be either:one
($\bar{\alpha}_{t-1} = 1$) or:alpha_zero
($\bar{\alpha}_{t-1} = \bar{\alpha}_0$) . Defaults to:one
:timesteps_offset
- an offset added to the inference steps. You can use a combination oftimesteps_offset: 1
andalpha_clip_strategy: :alpha_zero
, so that the last step $t = 1$ uses $\bar{\alpha}_1$ and $\bar{\alpha}_0$, as done in stable diffusion . Defaults to0
:clip_denoised_sample
- whether to clip the predicted denoised sample ($x_0$ in Equation (12)) into $[-1, 1]$ for numerical stability. . Defaults totrue
:rederive_noise
- whether the noise (output of the denoising model) should be re-derived at each step based on the predicted denoised sample ($x_0$) and the current sample. This technique is used in OpenAI GLIDE . Defaults tofalse
:eta
- a weight for the noise added in a denoising diffusion step. This scales the value of $\sigma_t$ in Equation (12) in the original paper, as per Equation (16) . Defaults to0.0