Pre-Trained Denoisers for Inverse Problems
Definition: Plug-and-Play (PnP) Framework
Plug-and-Play (PnP) Framework
PnP replaces the proximal operator in iterative algorithms with a pre-trained denoiser :
where is the measurement.
DRUNet (Chapter 27) is ideal for PnP because its noise level map input allows controlling the denoising strength at each iteration.
Example: PnP for Image Deblurring
Use PnP with DRUNet to deblur an image.
Solution
Algorithm
for k in range(n_iter):
# Data fidelity (gradient step)
residual = A(x) - y
x = x - eta * A_adjoint(residual)
# Denoising step
sigma = sigma_max * (sigma_min/sigma_max) ** (k/n_iter)
noise_map = torch.full_like(x[:, :1], sigma)
x = drunet(torch.cat([x, noise_map], dim=1))