Building your diffusion posterior sampling method using SDEs#

This demo shows you how to use deepinv.sampling.PosteriorDiffusion to perform posterior sampling. It also can be used to perform unconditional image generation with arbitrary denoisers, if the data fidelity term is not specified.

This method requires:

The deepinv.sampling.PosteriorDiffusion class can be used to perform posterior sampling for inverse problems. Consider the acquisition model:

\[y = \noise{\forw{x}}\]

where \(\forw{x}\) is the forward operator (e.g., a convolutional operator) and \(\noise{\cdot}\) is the noise operator (e.g., Gaussian noise). This class defines the reverse-time SDE for the posterior distribution \(p(x|y)\) given the data \(y\):

\[d\, x_t = \left( f(x_t, t) - \frac{1 + \alpha}{2} g(t)^2 \nabla_{x_t} \log p_t(x_t | y) \right) d\,t + g(t) \sqrt{\alpha} d\, w_{t}\]

where \(f\) is the drift term, \(g\) is the diffusion coefficient and \(w\) is the standard Brownian motion. The drift term and the diffusion coefficient are defined by the underlying (unconditional) forward-time SDE sde. In this example, we will use 2 well-known SDE in the literature: the Variance-Exploding (VE) and Variance-Preserving (VP or DDPM).

The (conditional) score function \(\nabla_{x_t} \log p_t(x_t | y)\) can be decomposed using the Bayes’ rule:

\[\nabla_{x_t} \log p_t(x_t | y) = \nabla_{x_t} \log p_t(x_t) + \nabla_{x_t} \log p_t(y | x_t).\]

The first term is the score function of the unconditional SDE, which is typically approximated by an MMSE denoiser (denoiser) using the well-known Tweedie’s formula, while the second term is approximated by the (noisy) data-fidelity term (data_fidelity). We implement various data-fidelity terms in the user guide.

Note

In this demo, we limit the number of diffusion steps for the sake of speed, but in practice, you should use a larger number of steps to obtain better results.


Let us import the necessary modules, define the denoiser and the SDE.

In this first example, we use the Variance-Exploding SDE, whose forward process is defined as:

\[d\, x_t = g(t) d\, w_t \quad \mbox{where } g(t) = \sigma_{\mathrm{min}}\left( \frac{\sigma_{\mathrm{max}}}{\sigma_{\mathrm{min}}}\right)^t\sqrt{2\log\frac{\sigma_{\mathrm{max}}}{\sigma_{\mathrm{min}}} }.\]
import torch
import deepinv as dinv
from deepinv.models import NCSNpp

device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.float64
figsize = 2.5
gif_frequency = 10  # Increase this value to save the GIF saving time
from deepinv.sampling import (
    PosteriorDiffusion,
    DPSDataFidelity,
    EulerSolver,
    VarianceExplodingDiffusion,
)
from deepinv.optim import ZeroFidelity

# In this example, we use the pre-trained FFHQ-64 model from the
# EDM framework: https://arxiv.org/pdf/2206.00364 .
# The network architecture is from Song et al: https://arxiv.org/abs/2011.13456 .
denoiser = NCSNpp(pretrained="download").to(device)

# The solution is obtained by calling the SDE object with a desired solver (here, Euler).
# The reproducibility of the SDE Solver class can be controlled by providing the pseudo-random number generator.
num_steps = 150
rng = torch.Generator(device).manual_seed(42)
timesteps = torch.linspace(1, 0.001, num_steps)
solver = EulerSolver(timesteps=timesteps, rng=rng)

sigma_min = 0.005
sigma_max = 5
sde = VarianceExplodingDiffusion(
    sigma_max=sigma_max,
    sigma_min=sigma_min,
    alpha=0.5,
    device=device,
    dtype=dtype,
)
Downloading: "https://huggingface.co/deepinv/edm/resolve/main/ncsnpp-ffhq64-uncond-ve.pt?download=true" to /home/runner/.cache/torch/hub/checkpoints/ncsnpp-ffhq64-uncond-ve.pt

  0%|          | 0.00/240M [00:00<?, ?B/s]
 12%|β–ˆβ–        | 27.6M/240M [00:00<00:00, 289MB/s]
 24%|β–ˆβ–ˆβ–       | 57.2M/240M [00:00<00:00, 301MB/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 91.4M/240M [00:00<00:00, 327MB/s]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 126M/240M [00:00<00:00, 341MB/s]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 160M/240M [00:00<00:00, 344MB/s]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 194M/240M [00:00<00:00, 349MB/s]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 228M/240M [00:00<00:00, 352MB/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 240M/240M [00:00<00:00, 341MB/s]

Reverse-time SDE as sampling process#

When the data fidelity is not given, the posterior diffusion is equivalent to the unconditional diffusion. Sampling is performed by solving the reverse-time SDE. To do so, we generate a reverse-time trajectory.

model = PosteriorDiffusion(
    data_fidelity=ZeroFidelity(),
    sde=sde,
    denoiser=denoiser,
    solver=solver,
    dtype=dtype,
    device=device,
    verbose=True,
)
x, trajectory = model(
    y=None,
    physics=None,
    x_init=(1, 3, 64, 64),
    seed=1,
    get_trajectory=True,
)
dinv.utils.plot(
    x,
    titles="Unconditional generation",
    save_fn="sde_sample.png",
    figsize=(figsize, figsize),
)

dinv.utils.save_videos(
    trajectory.cpu()[::gif_frequency],
    time_dim=0,
    titles=["VE-SDE Trajectory"],
    save_fn="sde_trajectory.gif",
    figsize=(figsize, figsize),
)
  0%|          | 0/149 [00:00<?, ?it/s]
  1%|          | 1/149 [00:00<01:24,  1.75it/s]
  1%|▏         | 2/149 [00:01<01:21,  1.79it/s]
  2%|▏         | 3/149 [00:01<01:20,  1.81it/s]
  3%|β–Ž         | 4/149 [00:02<01:19,  1.82it/s]
  3%|β–Ž         | 5/149 [00:02<01:19,  1.82it/s]
  4%|▍         | 6/149 [00:03<01:18,  1.82it/s]
  5%|▍         | 7/149 [00:03<01:19,  1.79it/s]
  5%|β–Œ         | 8/149 [00:04<01:18,  1.79it/s]
  6%|β–Œ         | 9/149 [00:04<01:17,  1.80it/s]
  7%|β–‹         | 10/149 [00:05<01:17,  1.79it/s]
  7%|β–‹         | 11/149 [00:06<01:16,  1.79it/s]
  8%|β–Š         | 12/149 [00:06<01:16,  1.79it/s]
  9%|β–Š         | 13/149 [00:07<01:15,  1.79it/s]
  9%|β–‰         | 14/149 [00:07<01:15,  1.80it/s]
 10%|β–ˆ         | 15/149 [00:08<01:14,  1.81it/s]
 11%|β–ˆ         | 16/149 [00:08<01:13,  1.81it/s]
 11%|β–ˆβ–        | 17/149 [00:09<01:12,  1.81it/s]
 12%|β–ˆβ–        | 18/149 [00:09<01:12,  1.82it/s]
 13%|β–ˆβ–Ž        | 19/149 [00:10<01:11,  1.82it/s]
 13%|β–ˆβ–Ž        | 20/149 [00:11<01:10,  1.82it/s]
 14%|β–ˆβ–        | 21/149 [00:11<01:10,  1.82it/s]
 15%|β–ˆβ–        | 22/149 [00:12<01:09,  1.82it/s]
 15%|β–ˆβ–Œ        | 23/149 [00:12<01:09,  1.82it/s]
 16%|β–ˆβ–Œ        | 24/149 [00:13<01:08,  1.82it/s]
 17%|β–ˆβ–‹        | 25/149 [00:13<01:08,  1.82it/s]
 17%|β–ˆβ–‹        | 26/149 [00:14<01:07,  1.82it/s]
 18%|β–ˆβ–Š        | 27/149 [00:14<01:06,  1.83it/s]
 19%|β–ˆβ–‰        | 28/149 [00:15<01:06,  1.83it/s]
 19%|β–ˆβ–‰        | 29/149 [00:16<01:05,  1.83it/s]
 20%|β–ˆβ–ˆ        | 30/149 [00:16<01:05,  1.83it/s]
 21%|β–ˆβ–ˆ        | 31/149 [00:17<01:04,  1.82it/s]
 21%|β–ˆβ–ˆβ–       | 32/149 [00:17<01:04,  1.82it/s]
 22%|β–ˆβ–ˆβ–       | 33/149 [00:18<01:03,  1.83it/s]
 23%|β–ˆβ–ˆβ–Ž       | 34/149 [00:18<01:02,  1.83it/s]
 23%|β–ˆβ–ˆβ–Ž       | 35/149 [00:19<01:02,  1.83it/s]
 24%|β–ˆβ–ˆβ–       | 36/149 [00:19<01:01,  1.83it/s]
 25%|β–ˆβ–ˆβ–       | 37/149 [00:20<01:01,  1.83it/s]
 26%|β–ˆβ–ˆβ–Œ       | 38/149 [00:20<01:01,  1.81it/s]
 26%|β–ˆβ–ˆβ–Œ       | 39/149 [00:21<01:00,  1.82it/s]
 27%|β–ˆβ–ˆβ–‹       | 40/149 [00:22<00:59,  1.82it/s]
 28%|β–ˆβ–ˆβ–Š       | 41/149 [00:22<00:59,  1.83it/s]
 28%|β–ˆβ–ˆβ–Š       | 42/149 [00:23<00:58,  1.83it/s]
 29%|β–ˆβ–ˆβ–‰       | 43/149 [00:23<00:57,  1.83it/s]
 30%|β–ˆβ–ˆβ–‰       | 44/149 [00:24<00:57,  1.83it/s]
 30%|β–ˆβ–ˆβ–ˆ       | 45/149 [00:24<00:56,  1.83it/s]
 31%|β–ˆβ–ˆβ–ˆ       | 46/149 [00:25<00:56,  1.83it/s]
 32%|β–ˆβ–ˆβ–ˆβ–      | 47/149 [00:25<00:55,  1.83it/s]
 32%|β–ˆβ–ˆβ–ˆβ–      | 48/149 [00:26<00:55,  1.83it/s]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 49/149 [00:26<00:54,  1.83it/s]
 34%|β–ˆβ–ˆβ–ˆβ–Ž      | 50/149 [00:27<00:54,  1.83it/s]
 34%|β–ˆβ–ˆβ–ˆβ–      | 51/149 [00:28<00:54,  1.81it/s]
 35%|β–ˆβ–ˆβ–ˆβ–      | 52/149 [00:28<00:53,  1.81it/s]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 53/149 [00:29<00:52,  1.81it/s]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 54/149 [00:29<00:52,  1.82it/s]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 55/149 [00:30<00:51,  1.82it/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 56/149 [00:30<00:50,  1.83it/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 57/149 [00:31<00:50,  1.83it/s]
 39%|β–ˆβ–ˆβ–ˆβ–‰      | 58/149 [00:31<00:49,  1.83it/s]
 40%|β–ˆβ–ˆβ–ˆβ–‰      | 59/149 [00:32<00:49,  1.83it/s]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 60/149 [00:33<00:48,  1.83it/s]
 41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 61/149 [00:33<00:48,  1.83it/s]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 62/149 [00:34<00:47,  1.83it/s]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 63/149 [00:34<00:47,  1.83it/s]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 64/149 [00:35<00:46,  1.83it/s]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 65/149 [00:35<00:45,  1.83it/s]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 66/149 [00:36<00:45,  1.83it/s]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 67/149 [00:36<00:44,  1.83it/s]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 68/149 [00:37<00:44,  1.83it/s]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 69/149 [00:37<00:43,  1.83it/s]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 70/149 [00:38<00:43,  1.83it/s]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 71/149 [00:39<00:42,  1.83it/s]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 72/149 [00:39<00:42,  1.83it/s]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 73/149 [00:40<00:41,  1.83it/s]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 74/149 [00:40<00:40,  1.83it/s]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 75/149 [00:41<00:40,  1.83it/s]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 76/149 [00:41<00:39,  1.83it/s]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 77/149 [00:42<00:39,  1.82it/s]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 78/149 [00:42<00:38,  1.82it/s]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 79/149 [00:43<00:38,  1.82it/s]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 80/149 [00:43<00:37,  1.82it/s]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 81/149 [00:44<00:37,  1.82it/s]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 82/149 [00:45<00:36,  1.83it/s]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 83/149 [00:45<00:36,  1.83it/s]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 84/149 [00:46<00:35,  1.83it/s]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 85/149 [00:46<00:35,  1.82it/s]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 86/149 [00:47<00:34,  1.82it/s]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 87/149 [00:47<00:33,  1.83it/s]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 88/149 [00:48<00:33,  1.83it/s]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 89/149 [00:48<00:32,  1.83it/s]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 90/149 [00:49<00:32,  1.83it/s]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 91/149 [00:49<00:31,  1.83it/s]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 92/149 [00:50<00:31,  1.83it/s]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 93/149 [00:51<00:30,  1.83it/s]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 94/149 [00:51<00:30,  1.83it/s]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 95/149 [00:52<00:29,  1.83it/s]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 96/149 [00:52<00:28,  1.83it/s]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 97/149 [00:53<00:28,  1.83it/s]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 98/149 [00:53<00:27,  1.83it/s]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 99/149 [00:54<00:27,  1.83it/s]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 100/149 [00:54<00:26,  1.83it/s]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 101/149 [00:55<00:26,  1.83it/s]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 102/149 [00:55<00:25,  1.83it/s]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 103/149 [00:56<00:25,  1.83it/s]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 104/149 [00:57<00:24,  1.82it/s]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 105/149 [00:57<00:24,  1.83it/s]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 106/149 [00:58<00:23,  1.83it/s]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 107/149 [00:58<00:23,  1.82it/s]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 108/149 [00:59<00:22,  1.82it/s]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 109/149 [00:59<00:21,  1.82it/s]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 110/149 [01:00<00:21,  1.82it/s]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 111/149 [01:00<00:20,  1.82it/s]
 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 112/149 [01:01<00:20,  1.82it/s]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 113/149 [01:02<00:19,  1.82it/s]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 114/149 [01:02<00:19,  1.82it/s]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 115/149 [01:03<00:18,  1.82it/s]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 116/149 [01:03<00:18,  1.82it/s]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 117/149 [01:04<00:17,  1.82it/s]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 118/149 [01:04<00:17,  1.82it/s]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 119/149 [01:05<00:16,  1.82it/s]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 120/149 [01:05<00:15,  1.82it/s]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 121/149 [01:06<00:15,  1.82it/s]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 122/149 [01:06<00:14,  1.82it/s]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 123/149 [01:07<00:14,  1.82it/s]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 124/149 [01:08<00:13,  1.82it/s]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 125/149 [01:08<00:13,  1.81it/s]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 126/149 [01:09<00:12,  1.81it/s]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 127/149 [01:09<00:12,  1.81it/s]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 128/149 [01:10<00:11,  1.81it/s]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 129/149 [01:10<00:11,  1.81it/s]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 130/149 [01:11<00:10,  1.81it/s]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 131/149 [01:11<00:09,  1.81it/s]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 132/149 [01:12<00:09,  1.81it/s]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 133/149 [01:13<00:08,  1.82it/s]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 134/149 [01:13<00:08,  1.82it/s]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 135/149 [01:14<00:07,  1.82it/s]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 136/149 [01:14<00:07,  1.82it/s]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 137/149 [01:15<00:06,  1.82it/s]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 138/149 [01:15<00:06,  1.82it/s]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 139/149 [01:16<00:05,  1.82it/s]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 140/149 [01:16<00:04,  1.82it/s]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 141/149 [01:17<00:04,  1.82it/s]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 142/149 [01:17<00:03,  1.82it/s]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 143/149 [01:18<00:03,  1.82it/s]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 144/149 [01:19<00:02,  1.82it/s]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 145/149 [01:19<00:02,  1.82it/s]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 146/149 [01:20<00:01,  1.82it/s]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 147/149 [01:20<00:01,  1.80it/s]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 148/149 [01:21<00:00,  1.81it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 149/149 [01:21<00:00,  1.82it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 149/149 [01:21<00:00,  1.82it/s]

We obtain the following unconditional sample

example of unconditional sampleexample of unconditional trajectory

When the data fidelity is given, together with the measurements and the physics, this class can be used to perform posterior sampling for inverse problems. For example, consider the inpainting problem, where we have a noisy image and we want to recover the original image. We can use the deepinv.sampling.DPSDataFidelity as the data fidelity term.

del trajectory  # clean memory
mask = torch.ones_like(x)
mask[..., 24:40, 24:40] = 0.0
physics = dinv.physics.Inpainting(img_size=x.shape[1:], mask=mask, device=device)
y = physics(x)

weight = 3.0  # guidance strength
dps_fidelity = DPSDataFidelity(denoiser=denoiser, weight=weight)

model = PosteriorDiffusion(
    data_fidelity=dps_fidelity,
    denoiser=denoiser,
    sde=sde,
    solver=solver,
    dtype=dtype,
    device=device,
    verbose=True,
)

# To perform posterior sampling, we need to provide the measurements, the physics and the solver.
# Moreover, when the physics is given, the initial point can be inferred from the physics if not given explicitly.
seed_1 = 11
x_hat, trajectory = model(
    y,
    physics,
    seed=seed_1,
    get_trajectory=True,
)
# Here, we plot the original image, the measurement and the posterior sample
dinv.utils.plot(
    [x, y, x_hat],
    show=True,
    titles=["Original", "Measurement", "Posterior sample"],
    figsize=(figsize * 3, figsize),
)
# We can also save the trajectory of the posterior sample
dinv.utils.save_videos(
    trajectory[::gif_frequency],
    time_dim=0,
    titles=["Posterior sample with VE"],
    save_fn="posterior_trajectory.gif",
    figsize=(figsize, figsize),
)
  0%|          | 0/149 [00:00<?, ?it/s]
  1%|          | 1/149 [00:01<04:07,  1.67s/it]
  1%|▏         | 2/149 [00:03<04:02,  1.65s/it]
  2%|▏         | 3/149 [00:04<03:59,  1.64s/it]
  3%|β–Ž         | 4/149 [00:06<03:57,  1.64s/it]
  3%|β–Ž         | 5/149 [00:08<03:56,  1.64s/it]
  4%|▍         | 6/149 [00:09<03:54,  1.64s/it]
  5%|▍         | 7/149 [00:11<03:53,  1.64s/it]
  5%|β–Œ         | 8/149 [00:13<03:51,  1.64s/it]
  6%|β–Œ         | 9/149 [00:14<03:50,  1.64s/it]
  7%|β–‹         | 10/149 [00:16<03:48,  1.64s/it]
  7%|β–‹         | 11/149 [00:18<03:46,  1.64s/it]
  8%|β–Š         | 12/149 [00:19<03:44,  1.64s/it]
  9%|β–Š         | 13/149 [00:21<03:43,  1.64s/it]
  9%|β–‰         | 14/149 [00:23<03:43,  1.65s/it]
 10%|β–ˆ         | 15/149 [00:24<03:41,  1.65s/it]
 11%|β–ˆ         | 16/149 [00:26<03:39,  1.65s/it]
 11%|β–ˆβ–        | 17/149 [00:27<03:37,  1.65s/it]
 12%|β–ˆβ–        | 18/149 [00:29<03:35,  1.64s/it]
 13%|β–ˆβ–Ž        | 19/149 [00:31<03:33,  1.64s/it]
 13%|β–ˆβ–Ž        | 20/149 [00:32<03:31,  1.64s/it]
 14%|β–ˆβ–        | 21/149 [00:34<03:29,  1.64s/it]
 15%|β–ˆβ–        | 22/149 [00:36<03:28,  1.64s/it]
 15%|β–ˆβ–Œ        | 23/149 [00:37<03:26,  1.64s/it]
 16%|β–ˆβ–Œ        | 24/149 [00:39<03:25,  1.64s/it]
 17%|β–ˆβ–‹        | 25/149 [00:41<03:23,  1.64s/it]
 17%|β–ˆβ–‹        | 26/149 [00:42<03:22,  1.64s/it]
 18%|β–ˆβ–Š        | 27/149 [00:44<03:20,  1.64s/it]
 19%|β–ˆβ–‰        | 28/149 [00:46<03:18,  1.64s/it]
 19%|β–ˆβ–‰        | 29/149 [00:47<03:17,  1.65s/it]
 20%|β–ˆβ–ˆ        | 30/149 [00:49<03:15,  1.65s/it]
 21%|β–ˆβ–ˆ        | 31/149 [00:50<03:14,  1.64s/it]
 21%|β–ˆβ–ˆβ–       | 32/149 [00:52<03:12,  1.64s/it]
 22%|β–ˆβ–ˆβ–       | 33/149 [00:54<03:10,  1.64s/it]
 23%|β–ˆβ–ˆβ–Ž       | 34/149 [00:55<03:08,  1.64s/it]
 23%|β–ˆβ–ˆβ–Ž       | 35/149 [00:57<03:07,  1.64s/it]
 24%|β–ˆβ–ˆβ–       | 36/149 [00:59<03:05,  1.64s/it]
 25%|β–ˆβ–ˆβ–       | 37/149 [01:00<03:03,  1.64s/it]
 26%|β–ˆβ–ˆβ–Œ       | 38/149 [01:02<03:02,  1.64s/it]
 26%|β–ˆβ–ˆβ–Œ       | 39/149 [01:04<03:00,  1.64s/it]
 27%|β–ˆβ–ˆβ–‹       | 40/149 [01:05<02:59,  1.65s/it]
 28%|β–ˆβ–ˆβ–Š       | 41/149 [01:07<02:57,  1.65s/it]
 28%|β–ˆβ–ˆβ–Š       | 42/149 [01:09<02:55,  1.64s/it]
 29%|β–ˆβ–ˆβ–‰       | 43/149 [01:10<02:54,  1.64s/it]
 30%|β–ˆβ–ˆβ–‰       | 44/149 [01:12<02:52,  1.64s/it]
 30%|β–ˆβ–ˆβ–ˆ       | 45/149 [01:13<02:51,  1.65s/it]
 31%|β–ˆβ–ˆβ–ˆ       | 46/149 [01:15<02:49,  1.65s/it]
 32%|β–ˆβ–ˆβ–ˆβ–      | 47/149 [01:17<02:48,  1.65s/it]
 32%|β–ˆβ–ˆβ–ˆβ–      | 48/149 [01:18<02:46,  1.65s/it]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 49/149 [01:20<02:45,  1.66s/it]
 34%|β–ˆβ–ˆβ–ˆβ–Ž      | 50/149 [01:22<02:43,  1.65s/it]
 34%|β–ˆβ–ˆβ–ˆβ–      | 51/149 [01:23<02:41,  1.65s/it]
 35%|β–ˆβ–ˆβ–ˆβ–      | 52/149 [01:25<02:39,  1.65s/it]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 53/149 [01:27<02:38,  1.65s/it]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 54/149 [01:28<02:37,  1.65s/it]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 55/149 [01:30<02:36,  1.66s/it]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 56/149 [01:32<02:34,  1.66s/it]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 57/149 [01:33<02:32,  1.65s/it]
 39%|β–ˆβ–ˆβ–ˆβ–‰      | 58/149 [01:35<02:30,  1.65s/it]
 40%|β–ˆβ–ˆβ–ˆβ–‰      | 59/149 [01:37<02:28,  1.65s/it]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 60/149 [01:38<02:26,  1.64s/it]
 41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 61/149 [01:40<02:24,  1.65s/it]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 62/149 [01:42<02:24,  1.66s/it]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 63/149 [01:43<02:22,  1.65s/it]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 64/149 [01:45<02:20,  1.65s/it]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 65/149 [01:47<02:19,  1.66s/it]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 66/149 [01:48<02:18,  1.67s/it]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 67/149 [01:50<02:16,  1.66s/it]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 68/149 [01:52<02:14,  1.66s/it]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 69/149 [01:53<02:12,  1.66s/it]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 70/149 [01:55<02:10,  1.66s/it]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 71/149 [01:56<02:08,  1.65s/it]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 72/149 [01:58<02:07,  1.65s/it]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 73/149 [02:00<02:05,  1.65s/it]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 74/149 [02:01<02:03,  1.65s/it]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 75/149 [02:03<02:01,  1.65s/it]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 76/149 [02:05<02:00,  1.65s/it]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 77/149 [02:06<01:58,  1.65s/it]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 78/149 [02:08<01:57,  1.65s/it]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 79/149 [02:10<01:55,  1.65s/it]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 80/149 [02:11<01:53,  1.65s/it]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 81/149 [02:13<01:52,  1.65s/it]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 82/149 [02:15<01:50,  1.65s/it]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 83/149 [02:16<01:48,  1.65s/it]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 84/149 [02:18<01:47,  1.65s/it]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 85/149 [02:20<01:45,  1.65s/it]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 86/149 [02:21<01:43,  1.65s/it]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 87/149 [02:23<01:42,  1.66s/it]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 88/149 [02:25<01:40,  1.65s/it]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 89/149 [02:26<01:39,  1.66s/it]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 90/149 [02:28<01:38,  1.67s/it]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 91/149 [02:30<01:36,  1.67s/it]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 92/149 [02:31<01:34,  1.66s/it]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 93/149 [02:33<01:32,  1.66s/it]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 94/149 [02:35<01:31,  1.66s/it]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 95/149 [02:36<01:29,  1.66s/it]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 96/149 [02:38<01:27,  1.65s/it]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 97/149 [02:39<01:25,  1.65s/it]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 98/149 [02:41<01:24,  1.65s/it]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 99/149 [02:43<01:22,  1.64s/it]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 100/149 [02:44<01:20,  1.64s/it]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 101/149 [02:46<01:18,  1.64s/it]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 102/149 [02:48<01:17,  1.65s/it]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 103/149 [02:49<01:15,  1.65s/it]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 104/149 [02:51<01:14,  1.64s/it]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 105/149 [02:53<01:12,  1.65s/it]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 106/149 [02:54<01:10,  1.64s/it]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 107/149 [02:56<01:08,  1.64s/it]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 108/149 [02:58<01:07,  1.64s/it]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 109/149 [02:59<01:05,  1.64s/it]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 110/149 [03:01<01:03,  1.64s/it]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 111/149 [03:02<01:02,  1.64s/it]
 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 112/149 [03:04<01:00,  1.64s/it]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 113/149 [03:06<00:58,  1.64s/it]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 114/149 [03:07<00:57,  1.64s/it]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 115/149 [03:09<00:55,  1.64s/it]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 116/149 [03:11<00:54,  1.65s/it]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 117/149 [03:12<00:52,  1.65s/it]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 118/149 [03:14<00:51,  1.65s/it]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 119/149 [03:16<00:49,  1.65s/it]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 120/149 [03:17<00:47,  1.65s/it]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 121/149 [03:19<00:46,  1.65s/it]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 122/149 [03:21<00:44,  1.65s/it]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 123/149 [03:22<00:43,  1.66s/it]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 124/149 [03:24<00:41,  1.67s/it]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 125/149 [03:26<00:40,  1.68s/it]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 126/149 [03:27<00:38,  1.68s/it]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 127/149 [03:29<00:37,  1.69s/it]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 128/149 [03:31<00:35,  1.68s/it]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 129/149 [03:32<00:33,  1.68s/it]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 130/149 [03:34<00:31,  1.67s/it]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 131/149 [03:36<00:30,  1.67s/it]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 132/149 [03:37<00:28,  1.66s/it]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 133/149 [03:39<00:26,  1.66s/it]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 134/149 [03:41<00:24,  1.65s/it]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 135/149 [03:42<00:23,  1.65s/it]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 136/149 [03:44<00:21,  1.65s/it]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 137/149 [03:46<00:19,  1.65s/it]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 138/149 [03:47<00:18,  1.65s/it]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 139/149 [03:49<00:16,  1.65s/it]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 140/149 [03:51<00:14,  1.65s/it]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 141/149 [03:52<00:13,  1.65s/it]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 142/149 [03:54<00:11,  1.65s/it]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 143/149 [03:55<00:09,  1.64s/it]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 144/149 [03:57<00:08,  1.65s/it]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 145/149 [03:59<00:06,  1.64s/it]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 146/149 [04:00<00:04,  1.64s/it]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 147/149 [04:02<00:03,  1.64s/it]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 148/149 [04:04<00:01,  1.64s/it]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 149/149 [04:05<00:00,  1.64s/it]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 149/149 [04:05<00:00,  1.65s/it]

We obtain the following posterior sample and trajectory

example of posterior trajectory

Note

Reproducibility: To ensure the reproducibility, if the parameter rng is given, the same sample will be generated when the same seed is used. One can obtain varying samples by using a different seed.

Parallel sampling: one can draw multiple samples in parallel by giving the initial shape, e.g., x_init = (B, C, H, W)

Varying the SDE#

One can also change the underlying SDE for sampling. For example, we can also use the Variance-Preserving (VP or DDPM) in deepinv.sampling.VariancePreservingDiffusion, whose forward drift and diffusion term are defined as:

\[f(x_t, t) = -\frac{1}{2} \beta(t)x_t \qquad \mbox{ and } \qquad g(t) = \beta(t) \qquad \mbox{ with } \beta(t) = \beta_{\mathrm{min}} + t \left( \beta_{\mathrm{max}} - \beta_{\mathrm{min}} \right).\]
from deepinv.sampling import VariancePreservingDiffusion

del trajectory
sde = VariancePreservingDiffusion(device=device, dtype=dtype)
model = PosteriorDiffusion(
    data_fidelity=dps_fidelity,
    denoiser=denoiser,
    sde=sde,
    solver=solver,
    device=device,
    dtype=dtype,
    verbose=True,
)

x_hat_vp, trajectory = model(
    y,
    physics,
    seed=111,
    timesteps=torch.linspace(1, 0.001, 150),
    get_trajectory=True,
)
dinv.utils.plot(
    [x_hat, x_hat_vp],
    titles=[
        "posterior sample with VE",
        "posterior sample with VP",
    ],
    figsize=(figsize * 2, figsize),
)


# We can also save the trajectory of the posterior sample
dinv.utils.save_videos(
    trajectory[::gif_frequency],
    time_dim=0,
    titles=["Posterior sample with VP"],
    save_fn="posterior_trajectory_vp.gif",
    figsize=(figsize, figsize),
)
  0%|          | 0/149 [00:00<?, ?it/s]
  1%|          | 1/149 [00:01<04:04,  1.65s/it]
  1%|▏         | 2/149 [00:03<04:02,  1.65s/it]
  2%|▏         | 3/149 [00:04<04:00,  1.65s/it]
  3%|β–Ž         | 4/149 [00:06<03:58,  1.65s/it]
  3%|β–Ž         | 5/149 [00:08<03:57,  1.65s/it]
  4%|▍         | 6/149 [00:09<03:55,  1.65s/it]
  5%|▍         | 7/149 [00:11<03:53,  1.65s/it]
  5%|β–Œ         | 8/149 [00:13<03:52,  1.65s/it]
  6%|β–Œ         | 9/149 [00:14<03:50,  1.65s/it]
  7%|β–‹         | 10/149 [00:16<03:49,  1.65s/it]
  7%|β–‹         | 11/149 [00:18<03:48,  1.65s/it]
  8%|β–Š         | 12/149 [00:19<03:46,  1.65s/it]
  9%|β–Š         | 13/149 [00:21<03:44,  1.65s/it]
  9%|β–‰         | 14/149 [00:23<03:43,  1.65s/it]
 10%|β–ˆ         | 15/149 [00:24<03:41,  1.65s/it]
 11%|β–ˆ         | 16/149 [00:26<03:40,  1.66s/it]
 11%|β–ˆβ–        | 17/149 [00:28<03:38,  1.66s/it]
 12%|β–ˆβ–        | 18/149 [00:29<03:37,  1.66s/it]
 13%|β–ˆβ–Ž        | 19/149 [00:31<03:35,  1.66s/it]
 13%|β–ˆβ–Ž        | 20/149 [00:33<03:33,  1.65s/it]
 14%|β–ˆβ–        | 21/149 [00:34<03:31,  1.65s/it]
 15%|β–ˆβ–        | 22/149 [00:36<03:29,  1.65s/it]
 15%|β–ˆβ–Œ        | 23/149 [00:37<03:27,  1.65s/it]
 16%|β–ˆβ–Œ        | 24/149 [00:39<03:25,  1.65s/it]
 17%|β–ˆβ–‹        | 25/149 [00:41<03:23,  1.64s/it]
 17%|β–ˆβ–‹        | 26/149 [00:42<03:22,  1.65s/it]
 18%|β–ˆβ–Š        | 27/149 [00:44<03:21,  1.65s/it]
 19%|β–ˆβ–‰        | 28/149 [00:46<03:19,  1.65s/it]
 19%|β–ˆβ–‰        | 29/149 [00:47<03:18,  1.65s/it]
 20%|β–ˆβ–ˆ        | 30/149 [00:49<03:16,  1.65s/it]
 21%|β–ˆβ–ˆ        | 31/149 [00:51<03:14,  1.65s/it]
 21%|β–ˆβ–ˆβ–       | 32/149 [00:52<03:13,  1.65s/it]
 22%|β–ˆβ–ˆβ–       | 33/149 [00:54<03:11,  1.65s/it]
 23%|β–ˆβ–ˆβ–Ž       | 34/149 [00:56<03:09,  1.65s/it]
 23%|β–ˆβ–ˆβ–Ž       | 35/149 [00:57<03:07,  1.65s/it]
 24%|β–ˆβ–ˆβ–       | 36/149 [00:59<03:05,  1.64s/it]
 25%|β–ˆβ–ˆβ–       | 37/149 [01:01<03:03,  1.64s/it]
 26%|β–ˆβ–ˆβ–Œ       | 38/149 [01:02<03:01,  1.64s/it]
 26%|β–ˆβ–ˆβ–Œ       | 39/149 [01:04<03:00,  1.64s/it]
 27%|β–ˆβ–ˆβ–‹       | 40/149 [01:05<02:58,  1.64s/it]
 28%|β–ˆβ–ˆβ–Š       | 41/149 [01:07<02:56,  1.64s/it]
 28%|β–ˆβ–ˆβ–Š       | 42/149 [01:09<02:54,  1.63s/it]
 29%|β–ˆβ–ˆβ–‰       | 43/149 [01:10<02:53,  1.64s/it]
 30%|β–ˆβ–ˆβ–‰       | 44/149 [01:12<02:52,  1.64s/it]
 30%|β–ˆβ–ˆβ–ˆ       | 45/149 [01:14<02:50,  1.64s/it]
 31%|β–ˆβ–ˆβ–ˆ       | 46/149 [01:15<02:48,  1.64s/it]
 32%|β–ˆβ–ˆβ–ˆβ–      | 47/149 [01:17<02:46,  1.64s/it]
 32%|β–ˆβ–ˆβ–ˆβ–      | 48/149 [01:19<02:45,  1.64s/it]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 49/149 [01:20<02:43,  1.64s/it]
 34%|β–ˆβ–ˆβ–ˆβ–Ž      | 50/149 [01:22<02:42,  1.64s/it]
 34%|β–ˆβ–ˆβ–ˆβ–      | 51/149 [01:23<02:40,  1.64s/it]
 35%|β–ˆβ–ˆβ–ˆβ–      | 52/149 [01:25<02:39,  1.64s/it]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 53/149 [01:27<02:37,  1.64s/it]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 54/149 [01:28<02:36,  1.65s/it]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 55/149 [01:30<02:34,  1.64s/it]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 56/149 [01:32<02:32,  1.64s/it]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 57/149 [01:33<02:31,  1.64s/it]
 39%|β–ˆβ–ˆβ–ˆβ–‰      | 58/149 [01:35<02:30,  1.65s/it]
 40%|β–ˆβ–ˆβ–ˆβ–‰      | 59/149 [01:37<02:28,  1.65s/it]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 60/149 [01:38<02:26,  1.65s/it]
 41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 61/149 [01:40<02:24,  1.64s/it]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 62/149 [01:42<02:22,  1.64s/it]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 63/149 [01:43<02:21,  1.65s/it]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 64/149 [01:45<02:19,  1.65s/it]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 65/149 [01:47<02:17,  1.64s/it]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 66/149 [01:48<02:16,  1.64s/it]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 67/149 [01:50<02:14,  1.64s/it]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 68/149 [01:51<02:13,  1.65s/it]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 69/149 [01:53<02:11,  1.65s/it]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 70/149 [01:55<02:10,  1.65s/it]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 71/149 [01:56<02:09,  1.66s/it]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 72/149 [01:58<02:07,  1.65s/it]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 73/149 [02:00<02:05,  1.65s/it]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 74/149 [02:01<02:03,  1.65s/it]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 75/149 [02:03<02:01,  1.65s/it]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 76/149 [02:05<02:00,  1.64s/it]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 77/149 [02:06<01:58,  1.64s/it]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 78/149 [02:08<01:56,  1.64s/it]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 79/149 [02:10<01:54,  1.64s/it]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 80/149 [02:11<01:53,  1.64s/it]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 81/149 [02:13<01:51,  1.64s/it]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 82/149 [02:14<01:49,  1.64s/it]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 83/149 [02:16<01:48,  1.64s/it]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 84/149 [02:18<01:46,  1.64s/it]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 85/149 [02:19<01:44,  1.64s/it]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 86/149 [02:21<01:43,  1.64s/it]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 87/149 [02:23<01:41,  1.64s/it]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 88/149 [02:24<01:39,  1.64s/it]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 89/149 [02:26<01:38,  1.64s/it]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 90/149 [02:28<01:36,  1.64s/it]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 91/149 [02:29<01:35,  1.64s/it]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 92/149 [02:31<01:33,  1.64s/it]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 93/149 [02:32<01:31,  1.64s/it]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 94/149 [02:34<01:30,  1.64s/it]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 95/149 [02:36<01:28,  1.64s/it]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 96/149 [02:37<01:26,  1.64s/it]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 97/149 [02:39<01:25,  1.64s/it]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 98/149 [02:41<01:23,  1.64s/it]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 99/149 [02:42<01:22,  1.64s/it]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 100/149 [02:44<01:20,  1.64s/it]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 101/149 [02:46<01:18,  1.64s/it]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 102/149 [02:47<01:17,  1.64s/it]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 103/149 [02:49<01:15,  1.65s/it]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 104/149 [02:51<01:14,  1.65s/it]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 105/149 [02:52<01:12,  1.65s/it]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 106/149 [02:54<01:10,  1.65s/it]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 107/149 [02:56<01:09,  1.65s/it]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 108/149 [02:57<01:07,  1.64s/it]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 109/149 [02:59<01:05,  1.64s/it]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 110/149 [03:00<01:04,  1.65s/it]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 111/149 [03:02<01:02,  1.65s/it]
 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 112/149 [03:04<01:00,  1.64s/it]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 113/149 [03:05<00:59,  1.64s/it]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 114/149 [03:07<00:57,  1.64s/it]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 115/149 [03:09<00:55,  1.64s/it]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 116/149 [03:10<00:54,  1.64s/it]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 117/149 [03:12<00:52,  1.64s/it]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 118/149 [03:14<00:50,  1.64s/it]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 119/149 [03:15<00:49,  1.64s/it]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 120/149 [03:17<00:47,  1.64s/it]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 121/149 [03:18<00:45,  1.64s/it]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 122/149 [03:20<00:44,  1.65s/it]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 123/149 [03:22<00:42,  1.64s/it]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 124/149 [03:23<00:41,  1.64s/it]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 125/149 [03:25<00:39,  1.65s/it]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 126/149 [03:27<00:37,  1.65s/it]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 127/149 [03:28<00:36,  1.65s/it]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 128/149 [03:30<00:34,  1.65s/it]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 129/149 [03:32<00:33,  1.65s/it]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 130/149 [03:33<00:31,  1.65s/it]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 131/149 [03:35<00:29,  1.65s/it]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 132/149 [03:37<00:27,  1.65s/it]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 133/149 [03:38<00:26,  1.64s/it]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 134/149 [03:40<00:24,  1.64s/it]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 135/149 [03:42<00:23,  1.64s/it]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 136/149 [03:43<00:21,  1.64s/it]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 137/149 [03:45<00:19,  1.64s/it]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 138/149 [03:46<00:18,  1.64s/it]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 139/149 [03:48<00:16,  1.64s/it]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 140/149 [03:50<00:14,  1.64s/it]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 141/149 [03:51<00:13,  1.64s/it]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 142/149 [03:53<00:11,  1.64s/it]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 143/149 [03:55<00:09,  1.64s/it]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 144/149 [03:56<00:08,  1.64s/it]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 145/149 [03:58<00:06,  1.65s/it]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 146/149 [04:00<00:04,  1.65s/it]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 147/149 [04:01<00:03,  1.64s/it]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 148/149 [04:03<00:01,  1.64s/it]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 149/149 [04:04<00:00,  1.64s/it]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 149/149 [04:04<00:00,  1.64s/it]

We can comparing the sampling trajectory depending on the underlying SDE

posterior trajectory with VEposterior trajectory with VP

Plug-and-play Posterior Sampling with arbitrary denoisers#

The deepinv.sampling.PosteriorDiffusion class can be used together with any (well-trained) denoisers for posterior sampling. For example, we can use the deepinv.models.DRUNet for posterior sampling. We can also change the underlying SDE, for example change the sigma_max value.

del trajectory  # clean memory
sigma_min = 0.001
sigma_max = 10.0
rng = torch.Generator(device)
dtype = torch.float32
timesteps = torch.linspace(1, 0.001, 250)
solver = EulerSolver(timesteps=timesteps, rng=rng)
denoiser = dinv.models.DRUNet(pretrained="download").to(device)

sde = VarianceExplodingDiffusion(
    sigma_max=sigma_max, sigma_min=sigma_min, alpha=0.75, device=device, dtype=dtype
)
x = dinv.utils.load_example(
    "butterfly.png",
    img_size=256,
    resize_mode="resize",
).to(device)

mask = torch.ones_like(x)
mask[..., 70:150, 120:180] = 0
physics = dinv.physics.Inpainting(
    mask=mask,
    img_size=x.shape[1:],
    device=device,
)

y = physics(x)
model = PosteriorDiffusion(
    data_fidelity=DPSDataFidelity(denoiser=denoiser, weight=0.3),
    denoiser=denoiser,
    sde=sde,
    solver=solver,
    dtype=dtype,
    device=device,
    verbose=True,
)

# To perform posterior sampling, we need to provide the measurements, the physics and the solver.
x_hat, trajectory = model(
    y=y,
    physics=physics,
    seed=12,
    get_trajectory=True,
)

# Here, we plot the original image, the measurement and the posterior sample
dinv.utils.plot(
    [x, y, x_hat.clip(0, 1)],
    titles=["Original", "Measurement", "Posterior sample DRUNet"],
    figsize=(figsize * 3, figsize),
)

# We can also save the trajectory of the posterior sample
dinv.utils.save_videos(
    trajectory[::gif_frequency].clip(0, 1),
    time_dim=0,
    titles=["Posterior trajectory DRUNet"],
    save_fn="posterior_sample_DRUNet.gif",
    figsize=(figsize, figsize),
)
  0%|          | 0/249 [00:00<?, ?it/s]
  0%|          | 1/249 [00:04<20:31,  4.97s/it]
  1%|          | 2/249 [00:09<20:14,  4.92s/it]
  1%|          | 3/249 [00:14<20:07,  4.91s/it]
  2%|▏         | 4/249 [00:19<19:58,  4.89s/it]
  2%|▏         | 5/249 [00:24<19:52,  4.89s/it]
  2%|▏         | 6/249 [00:29<19:46,  4.88s/it]
  3%|β–Ž         | 7/249 [00:34<19:38,  4.87s/it]
  3%|β–Ž         | 8/249 [00:39<19:33,  4.87s/it]
  4%|β–Ž         | 9/249 [00:43<19:27,  4.87s/it]
  4%|▍         | 10/249 [00:48<19:23,  4.87s/it]
  4%|▍         | 11/249 [00:53<19:21,  4.88s/it]
  5%|▍         | 12/249 [00:58<19:14,  4.87s/it]
  5%|β–Œ         | 13/249 [01:03<19:10,  4.87s/it]
  6%|β–Œ         | 14/249 [01:08<19:04,  4.87s/it]
  6%|β–Œ         | 15/249 [01:13<19:00,  4.87s/it]
  6%|β–‹         | 16/249 [01:18<18:54,  4.87s/it]
  7%|β–‹         | 17/249 [01:22<18:48,  4.86s/it]
  7%|β–‹         | 18/249 [01:27<18:43,  4.86s/it]
  8%|β–Š         | 19/249 [01:32<18:38,  4.86s/it]
  8%|β–Š         | 20/249 [01:37<18:33,  4.86s/it]
  8%|β–Š         | 21/249 [01:42<18:28,  4.86s/it]
  9%|β–‰         | 22/249 [01:47<18:27,  4.88s/it]
  9%|β–‰         | 23/249 [01:52<18:21,  4.87s/it]
 10%|β–‰         | 24/249 [01:56<18:16,  4.87s/it]
 10%|β–ˆ         | 25/249 [02:01<18:10,  4.87s/it]
 10%|β–ˆ         | 26/249 [02:06<18:04,  4.86s/it]
 11%|β–ˆ         | 27/249 [02:11<17:59,  4.86s/it]
 11%|β–ˆ         | 28/249 [02:16<17:55,  4.87s/it]
 12%|β–ˆβ–        | 29/249 [02:21<17:51,  4.87s/it]
 12%|β–ˆβ–        | 30/249 [02:26<17:46,  4.87s/it]
 12%|β–ˆβ–        | 31/249 [02:31<17:40,  4.87s/it]
 13%|β–ˆβ–Ž        | 32/249 [02:35<17:35,  4.86s/it]
 13%|β–ˆβ–Ž        | 33/249 [02:40<17:30,  4.86s/it]
 14%|β–ˆβ–Ž        | 34/249 [02:45<17:24,  4.86s/it]
 14%|β–ˆβ–        | 35/249 [02:50<17:21,  4.86s/it]
 14%|β–ˆβ–        | 36/249 [02:55<17:15,  4.86s/it]
 15%|β–ˆβ–        | 37/249 [03:00<17:12,  4.87s/it]
 15%|β–ˆβ–Œ        | 38/249 [03:05<17:06,  4.86s/it]
 16%|β–ˆβ–Œ        | 39/249 [03:09<17:00,  4.86s/it]
 16%|β–ˆβ–Œ        | 40/249 [03:14<16:56,  4.87s/it]
 16%|β–ˆβ–‹        | 41/249 [03:19<16:51,  4.86s/it]
 17%|β–ˆβ–‹        | 42/249 [03:24<16:51,  4.89s/it]
 17%|β–ˆβ–‹        | 43/249 [03:29<16:45,  4.88s/it]
 18%|β–ˆβ–Š        | 44/249 [03:34<16:39,  4.87s/it]
 18%|β–ˆβ–Š        | 45/249 [03:39<16:35,  4.88s/it]
 18%|β–ˆβ–Š        | 46/249 [03:44<16:29,  4.88s/it]
 19%|β–ˆβ–‰        | 47/249 [03:48<16:24,  4.88s/it]
 19%|β–ˆβ–‰        | 48/249 [03:53<16:18,  4.87s/it]
 20%|β–ˆβ–‰        | 49/249 [03:58<16:13,  4.87s/it]
 20%|β–ˆβ–ˆ        | 50/249 [04:03<16:08,  4.87s/it]
 20%|β–ˆβ–ˆ        | 51/249 [04:08<16:03,  4.87s/it]
 21%|β–ˆβ–ˆ        | 52/249 [04:13<16:01,  4.88s/it]
 21%|β–ˆβ–ˆβ–       | 53/249 [04:18<15:56,  4.88s/it]
 22%|β–ˆβ–ˆβ–       | 54/249 [04:23<15:49,  4.87s/it]
 22%|β–ˆβ–ˆβ–       | 55/249 [04:27<15:45,  4.87s/it]
 22%|β–ˆβ–ˆβ–       | 56/249 [04:32<15:39,  4.87s/it]
 23%|β–ˆβ–ˆβ–Ž       | 57/249 [04:37<15:34,  4.87s/it]
 23%|β–ˆβ–ˆβ–Ž       | 58/249 [04:42<15:33,  4.89s/it]
 24%|β–ˆβ–ˆβ–Ž       | 59/249 [04:47<15:29,  4.89s/it]
 24%|β–ˆβ–ˆβ–       | 60/249 [04:52<15:25,  4.90s/it]
 24%|β–ˆβ–ˆβ–       | 61/249 [04:57<15:19,  4.89s/it]
 25%|β–ˆβ–ˆβ–       | 62/249 [05:02<15:17,  4.91s/it]
 25%|β–ˆβ–ˆβ–Œ       | 63/249 [05:07<15:15,  4.92s/it]
 26%|β–ˆβ–ˆβ–Œ       | 64/249 [05:12<15:09,  4.92s/it]
 26%|β–ˆβ–ˆβ–Œ       | 65/249 [05:16<15:02,  4.91s/it]
 27%|β–ˆβ–ˆβ–‹       | 66/249 [05:21<14:57,  4.90s/it]
 27%|β–ˆβ–ˆβ–‹       | 67/249 [05:26<14:54,  4.91s/it]
 27%|β–ˆβ–ˆβ–‹       | 68/249 [05:31<14:47,  4.90s/it]
 28%|β–ˆβ–ˆβ–Š       | 69/249 [05:36<14:41,  4.90s/it]
 28%|β–ˆβ–ˆβ–Š       | 70/249 [05:41<14:37,  4.90s/it]
 29%|β–ˆβ–ˆβ–Š       | 71/249 [05:46<14:31,  4.90s/it]
 29%|β–ˆβ–ˆβ–‰       | 72/249 [05:51<14:27,  4.90s/it]
 29%|β–ˆβ–ˆβ–‰       | 73/249 [05:56<14:24,  4.91s/it]
 30%|β–ˆβ–ˆβ–‰       | 74/249 [06:01<14:17,  4.90s/it]
 30%|β–ˆβ–ˆβ–ˆ       | 75/249 [06:06<14:13,  4.90s/it]
 31%|β–ˆβ–ˆβ–ˆ       | 76/249 [06:10<14:08,  4.90s/it]
 31%|β–ˆβ–ˆβ–ˆ       | 77/249 [06:15<14:04,  4.91s/it]
 31%|β–ˆβ–ˆβ–ˆβ–      | 78/249 [06:20<13:58,  4.91s/it]
 32%|β–ˆβ–ˆβ–ˆβ–      | 79/249 [06:25<13:53,  4.90s/it]
 32%|β–ˆβ–ˆβ–ˆβ–      | 80/249 [06:30<13:47,  4.90s/it]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 81/249 [06:35<13:42,  4.89s/it]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 82/249 [06:40<13:36,  4.89s/it]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 83/249 [06:45<13:34,  4.91s/it]
 34%|β–ˆβ–ˆβ–ˆβ–Ž      | 84/249 [06:50<13:30,  4.91s/it]
 34%|β–ˆβ–ˆβ–ˆβ–      | 85/249 [06:55<13:24,  4.90s/it]
 35%|β–ˆβ–ˆβ–ˆβ–      | 86/249 [06:59<13:18,  4.90s/it]
 35%|β–ˆβ–ˆβ–ˆβ–      | 87/249 [07:04<13:13,  4.90s/it]
 35%|β–ˆβ–ˆβ–ˆβ–Œ      | 88/249 [07:09<13:07,  4.89s/it]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 89/249 [07:14<13:04,  4.90s/it]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 90/249 [07:19<12:59,  4.90s/it]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 91/249 [07:24<12:53,  4.90s/it]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 92/249 [07:29<12:49,  4.90s/it]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 93/249 [07:34<12:45,  4.91s/it]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 94/249 [07:39<12:41,  4.91s/it]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 95/249 [07:44<12:36,  4.91s/it]
 39%|β–ˆβ–ˆβ–ˆβ–Š      | 96/249 [07:48<12:30,  4.91s/it]
 39%|β–ˆβ–ˆβ–ˆβ–‰      | 97/249 [07:53<12:26,  4.91s/it]
 39%|β–ˆβ–ˆβ–ˆβ–‰      | 98/249 [07:58<12:20,  4.90s/it]
 40%|β–ˆβ–ˆβ–ˆβ–‰      | 99/249 [08:03<12:15,  4.90s/it]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 100/249 [08:08<12:11,  4.91s/it]
 41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 101/249 [08:13<12:08,  4.93s/it]
 41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 102/249 [08:18<12:02,  4.92s/it]
 41%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 103/249 [08:23<11:58,  4.92s/it]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 104/249 [08:28<11:52,  4.91s/it]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 105/249 [08:33<11:48,  4.92s/it]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 106/249 [08:38<11:44,  4.93s/it]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 107/249 [08:43<11:38,  4.92s/it]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 108/249 [08:47<11:31,  4.90s/it]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 109/249 [08:52<11:26,  4.90s/it]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 110/249 [08:57<11:22,  4.91s/it]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 111/249 [09:02<11:17,  4.91s/it]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 112/249 [09:07<11:12,  4.91s/it]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 113/249 [09:12<11:07,  4.91s/it]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 114/249 [09:17<11:03,  4.92s/it]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 115/249 [09:22<10:57,  4.91s/it]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 116/249 [09:27<10:55,  4.93s/it]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 117/249 [09:32<10:50,  4.93s/it]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 118/249 [09:37<10:44,  4.92s/it]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 119/249 [09:42<10:39,  4.92s/it]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 120/249 [09:46<10:34,  4.92s/it]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 121/249 [09:51<10:31,  4.93s/it]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 122/249 [09:56<10:24,  4.92s/it]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 123/249 [10:01<10:19,  4.92s/it]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 124/249 [10:06<10:14,  4.92s/it]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 125/249 [10:11<10:10,  4.92s/it]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 126/249 [10:16<10:05,  4.92s/it]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 127/249 [10:21<10:01,  4.93s/it]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 128/249 [10:26<09:57,  4.94s/it]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 129/249 [10:31<09:52,  4.94s/it]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 130/249 [10:36<09:45,  4.92s/it]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 131/249 [10:41<09:41,  4.93s/it]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 132/249 [10:46<09:35,  4.92s/it]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 133/249 [10:51<09:32,  4.93s/it]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 134/249 [10:55<09:25,  4.92s/it]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 135/249 [11:00<09:21,  4.93s/it]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 136/249 [11:05<09:16,  4.93s/it]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 137/249 [11:10<09:12,  4.93s/it]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 138/249 [11:15<09:06,  4.93s/it]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 139/249 [11:20<09:02,  4.93s/it]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 140/249 [11:25<08:56,  4.92s/it]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 141/249 [11:30<08:51,  4.92s/it]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 142/249 [11:35<08:46,  4.92s/it]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 143/249 [11:40<08:41,  4.92s/it]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 144/249 [11:45<08:35,  4.91s/it]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 145/249 [11:50<08:31,  4.91s/it]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 146/249 [11:54<08:26,  4.92s/it]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 147/249 [11:59<08:20,  4.91s/it]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 148/249 [12:04<08:15,  4.91s/it]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 149/249 [12:09<08:10,  4.90s/it]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 150/249 [12:14<08:07,  4.92s/it]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 151/249 [12:19<08:00,  4.90s/it]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 152/249 [12:24<07:55,  4.90s/it]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 153/249 [12:29<07:49,  4.89s/it]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 154/249 [12:34<07:45,  4.89s/it]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 155/249 [12:39<07:39,  4.89s/it]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 156/249 [12:43<07:34,  4.88s/it]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 157/249 [12:48<07:29,  4.89s/it]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 158/249 [12:53<07:25,  4.90s/it]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 159/249 [12:58<07:22,  4.91s/it]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 160/249 [13:03<07:17,  4.91s/it]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 161/249 [13:08<07:12,  4.91s/it]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 162/249 [13:13<07:06,  4.90s/it]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 163/249 [13:18<07:00,  4.89s/it]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 164/249 [13:23<06:57,  4.91s/it]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 165/249 [13:28<06:52,  4.91s/it]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 166/249 [13:33<06:47,  4.91s/it]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 167/249 [13:37<06:43,  4.92s/it]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 168/249 [13:42<06:37,  4.91s/it]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 169/249 [13:47<06:34,  4.93s/it]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 170/249 [13:52<06:27,  4.91s/it]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 171/249 [13:57<06:23,  4.92s/it]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 172/249 [14:02<06:19,  4.92s/it]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 173/249 [14:07<06:14,  4.93s/it]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 174/249 [14:12<06:10,  4.94s/it]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 175/249 [14:17<06:03,  4.92s/it]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 176/249 [14:22<05:57,  4.90s/it]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 177/249 [14:27<05:53,  4.91s/it]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 178/249 [14:32<05:49,  4.92s/it]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 179/249 [14:36<05:45,  4.93s/it]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 180/249 [14:41<05:40,  4.93s/it]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 181/249 [14:46<05:34,  4.92s/it]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 182/249 [14:51<05:28,  4.91s/it]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 183/249 [14:56<05:23,  4.91s/it]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 184/249 [15:01<05:19,  4.92s/it]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 185/249 [15:06<05:15,  4.94s/it]
 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 186/249 [15:11<05:11,  4.94s/it]
 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 187/249 [15:16<05:05,  4.92s/it]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 188/249 [15:21<05:00,  4.93s/it]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 189/249 [15:26<04:56,  4.93s/it]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 190/249 [15:31<04:50,  4.92s/it]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 191/249 [15:36<04:44,  4.91s/it]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 192/249 [15:40<04:39,  4.91s/it]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 193/249 [15:45<04:35,  4.93s/it]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 194/249 [15:50<04:31,  4.94s/it]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 195/249 [15:55<04:27,  4.95s/it]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 196/249 [16:00<04:22,  4.95s/it]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 197/249 [16:05<04:17,  4.96s/it]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 198/249 [16:10<04:12,  4.96s/it]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 199/249 [16:15<04:07,  4.96s/it]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 200/249 [16:20<04:03,  4.97s/it]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 201/249 [16:25<03:58,  4.96s/it]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 202/249 [16:30<03:53,  4.97s/it]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 203/249 [16:35<03:47,  4.95s/it]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 204/249 [16:40<03:42,  4.95s/it]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 205/249 [16:45<03:37,  4.94s/it]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 206/249 [16:50<03:32,  4.95s/it]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 207/249 [16:55<03:27,  4.95s/it]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 208/249 [17:00<03:22,  4.95s/it]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 209/249 [17:05<03:18,  4.95s/it]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 210/249 [17:10<03:13,  4.96s/it]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 211/249 [17:15<03:08,  4.96s/it]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 212/249 [17:20<03:04,  4.97s/it]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 213/249 [17:25<02:59,  4.98s/it]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 214/249 [17:30<02:53,  4.97s/it]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 215/249 [17:35<02:48,  4.96s/it]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 216/249 [17:40<02:43,  4.96s/it]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 217/249 [17:44<02:38,  4.96s/it]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 218/249 [17:49<02:33,  4.97s/it]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 219/249 [17:54<02:29,  4.98s/it]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 220/249 [17:59<02:24,  4.97s/it]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 221/249 [18:04<02:18,  4.95s/it]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 222/249 [18:09<02:13,  4.95s/it]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 223/249 [18:14<02:09,  4.96s/it]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 224/249 [18:19<02:04,  4.98s/it]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 225/249 [18:24<01:59,  4.97s/it]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 226/249 [18:29<01:54,  4.97s/it]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 227/249 [18:34<01:49,  4.97s/it]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 228/249 [18:39<01:44,  4.98s/it]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 229/249 [18:44<01:39,  4.98s/it]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 230/249 [18:49<01:34,  4.96s/it]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 231/249 [18:54<01:29,  4.95s/it]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 232/249 [18:59<01:23,  4.94s/it]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 233/249 [19:04<01:18,  4.94s/it]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 234/249 [19:09<01:13,  4.93s/it]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 235/249 [19:14<01:09,  4.93s/it]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 236/249 [19:19<01:04,  4.93s/it]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 237/249 [19:24<00:59,  4.93s/it]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 238/249 [19:28<00:54,  4.93s/it]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 239/249 [19:33<00:49,  4.92s/it]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 240/249 [19:38<00:44,  4.93s/it]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 241/249 [19:43<00:39,  4.93s/it]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 242/249 [19:48<00:34,  4.93s/it]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 243/249 [19:53<00:29,  4.92s/it]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 244/249 [19:58<00:24,  4.92s/it]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 245/249 [20:03<00:19,  4.92s/it]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 246/249 [20:08<00:14,  4.92s/it]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 247/249 [20:13<00:09,  4.92s/it]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 248/249 [20:18<00:04,  4.92s/it]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 249/249 [20:23<00:00,  4.91s/it]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 249/249 [20:23<00:00,  4.91s/it]

We obtain the following posterior trajectory

posterior trajectory DRUNet

Total running time of the script: (30 minutes 52.923 seconds)

Gallery generated by Sphinx-Gallery