<a id="pretrained-models"></a>

# Pretrained Models

## Pretrained reconstructors

Some methods do not require any training and can be quickly deployed to your problem.

#### SEE ALSO
See the example [Use a pretrained model](https://deepinv.org/auto_examples/basics/demo_pretrained_model.html.md#sphx-glr-auto-examples-basics-demo-pretrained-model-py) for how to get started with these models on various problems.

These models can be set-up in one line and perform inference in another line:

```pycon
>>> import deepinv as dinv
>>> x = dinv.utils.load_example("butterfly.png")
>>> physics = dinv.physics.Downsampling(filter="bicubic", noise_model=dinv.physics.GaussianNoise(0.01))
>>> y = physics(x)
>>> model = dinv.models.RAM(pretrained=True)
>>> x_hat = model(y, physics) # Model inference
>>> dinv.metric.PSNR()(x_hat, x) > 29.75
tensor([True])
```

#### Pretrained reconstructors

| **Name**                                                                                                                                                           | **Family**                                                                                    | **Modality/Physics**                                                                           | **Speed**   |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|-------------|
| [`RAM`](https://deepinv.org/api/stubs/deepinv.models.RAM.html.md#deepinv.models.RAM)                                                                                            | Feedforward                                                                                   | General; physics must be linear                                                                | Fast        |
| [`DPIR`](https://deepinv.org/api/stubs/deepinv.optim.DPIR.html.md#deepinv.optim.DPIR)                                                                                           | [Plug-and-play](https://deepinv.org/user_guide/reconstruction/iterative.html.md#iterative) w/ pretrained denoiser | General                                                                                        | Medium      |
| [`DEAL`](https://deepinv.org/api/stubs/deepinv.models.DEAL.html.md#deepinv.models.DEAL)                                                                                          | Iterative                                                                                     | General; physics must be linear                                                                | Fast        |
| [`DDRM`](https://deepinv.org/api/stubs/deepinv.sampling.DDRM.html.md#deepinv.sampling.DDRM)                                                                                        | [Diffusion](https://deepinv.org/user_guide/reconstruction/sampling.html.md#diffusion) w/ pretrained denoiser     | General; physics must be decomposable                                                          | Slow        |
| [`DiffPIR`](https://deepinv.org/api/stubs/deepinv.sampling.DiffPIR.html.md#deepinv.sampling.DiffPIR)                                                                                  | [Diffusion](https://deepinv.org/user_guide/reconstruction/sampling.html.md#diffusion) w/ pretrained denoiser     | General                                                                                        | Slow        |
| [`DPS`](https://deepinv.org/api/stubs/deepinv.sampling.DPS.html.md#deepinv.sampling.DPS)                                                                                          | [Diffusion](https://deepinv.org/user_guide/reconstruction/sampling.html.md#diffusion) w/ pretrained denoiser     | General                                                                                        | Slow        |
| [`SRResNet`](https://deepinv.org/api/stubs/deepinv.models.SRResNet.html.md#deepinv.models.SRResNet)                                                                                  | Feedforward                                                                                   | [`Super-resolution`](https://deepinv.org/api/stubs/deepinv.physics.Downsampling.html.md#deepinv.physics.Downsampling) | Fast        |
| [Pretrained denoisers](#pretrained-weights)                                                                                                | Feedforward                                                                                   | Denoising                                                                                      | Fast        |
| [`DIRECTModel`](https://deepinv.org/api/stubs/deepinv.models.DIRECTModel.html.md#deepinv.models.DIRECTModel) (inc. pretrained Joint IC-Net, recurrent VarNet, XPDNet, KIKI-Net, vSHARP) | Feedforward                                                                                   | [`MultiCoilMRI`](https://deepinv.org/api/stubs/deepinv.physics.MultiCoilMRI.html.md#deepinv.physics.MultiCoilMRI)     | Fast        |

#### TIP
If you want to fine-tune these models on your own measurements (without or with ground truth) or physics, check out [Inference and fine-tune a foundation model](https://deepinv.org/auto_examples/models/demo_foundation_model.html.md#sphx-glr-auto-examples-models-demo-foundation-model-py).

#### SEE ALSO
See below for a full list of denoisers that can be plugged into iterative/sampling algorithms.

<a id="pretrained-weights"></a>

## Description of weights

For each model ([`Denoiser`](https://deepinv.org/api/stubs/deepinv.models.Denoiser.html.md#deepinv.models.Denoiser) or [`Reconstructor`](https://deepinv.org/api/stubs/deepinv.models.Reconstructor.html.md#deepinv.models.Reconstructor)) that has pretrained weights, we briefly summarize the origin of the weights,
associated reference and relevant details. All pretrained weights are hosted on
[HuggingFace](https://huggingface.co/deepinv).

Click on the model name to learn more about the type of model and use `pretrained=True` to use the pretrained weights.

#### Summary of pretrained weights

| Model                                                                                                                                  | Type                     | Weight                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|----------------------------------------------------------------------------------------------------------------------------------------|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [`deepinv.models.DnCNN`](https://deepinv.org/api/stubs/deepinv.models.DnCNN.html.md#deepinv.models.DnCNN)                                             | Denoiser                 | Default weights from [Learning Maximally Monotone Operators](https://github.com/matthieutrs/LMMO_lightning)<br/>trained on noise level 2.0/255:<br/>[DnCNN grayscale weights](https://huggingface.co/deepinv/dncnn/resolve/main/dncnn_sigma2_gray.pth?download=true), [DnCNN color weights](https://huggingface.co/deepinv/dncnn/resolve/main/dncnn_sigma2_color.pth?download=true).                                                            |
|                                                                                                                                        |                          | Alternative weights trained on noise level 2.0/255 with Lipschitz constraint to ensure approximate firm nonexpansiveness:<br/>[Non-expansive DnCNN grayscale weights](https://huggingface.co/deepinv/dncnn/resolve/main/dncnn_sigma2_lipschitz_gray.pth?download=true), [Non-expansive DnCNN color weights](https://huggingface.co/deepinv/dncnn/resolve/main/dncnn_sigma2_lipschitz_color.pth?download=true).                                  |
| [`deepinv.models.FFDNet`](https://deepinv.org/api/stubs/deepinv.models.FFDNet.html.md#deepinv.models.FFDNet)                                           | Denoiser                 | Weights from the original FFDNet paper, trained on noise levels in [0, 75]/255.<br/>[FFDNet grayscale weights](https://huggingface.co/deepinv/FFDNet/resolve/main/ffdnet_gray.pth?download=true), and<br/>[FFDNet color weights](https://huggingface.co/deepinv/FFDNet/resolve/main/ffdnet_color.pth?download=true).                                                                                                                            |
| [`deepinv.models.DRUNet`](https://deepinv.org/api/stubs/deepinv.models.DRUNet.html.md#deepinv.models.DRUNet)                                           | Denoiser                 | Default weights trained with deepinv [(logs)](https://wandb.ai/matthieu-terris/drunet?workspace=user-matthieu-terris), trained on noise levels in [0, 20]/255<br/>and on the same dataset as DPIR:<br/>[DRUNet grayscale weights](https://huggingface.co/deepinv/drunet/resolve/main/drunet_deepinv_gray.pth?download=true), [DRUNet color weights](https://huggingface.co/deepinv/drunet/resolve/main/drunet_deepinv_color.pth?download=true). |
|                                                                                                                                        |                          | Alternative weights from [DPIR](https://github.com/cszn/DPIR),<br/>trained on noise levels in [0, 50]/255. [DRUNet original grayscale weights](https://huggingface.co/deepinv/drunet/resolve/main/drunet_gray.pth?download=true), [DRUNET original color weights](https://huggingface.co/deepinv/drunet/resolve/main/drunet_color.pth?download=true).                                                                                           |
| [`deepinv.models.GSDRUNet`](https://deepinv.org/api/stubs/deepinv.models.GSDRUNet.html.md#deepinv.models.GSDRUNet)                                       | Denoiser                 | Weights from [Gradient-Step PnP](https://github.com/samuro95/GSPnP), trained on noise levels in [0, 50]/255:<br/>[GSDRUNet color weights](https://huggingface.co/deepinv/gradientstep/blob/main/GSDRUNet.ckpt) and [GSDRUNet grayscale weights](https://huggingface.co/deepinv/gradientstep/blob/main/GSDRUNet_grayscale_torch.ckpt).                                                                                                           |
| [`deepinv.models.SCUNet`](https://deepinv.org/api/stubs/deepinv.models.SCUNet.html.md#deepinv.models.SCUNet)                                           | Denoiser                 | Weights from [SCUNet](https://github.com/cszn/SCUNet),<br/>trained on images degraded with synthetic realistic noise and camera artefacts. [SCUNet color weights](https://huggingface.co/deepinv/scunet/resolve/main/scunet_color_real_psnr.pth?download=true).                                                                                                                                                                                 |
| [`deepinv.models.SwinIR`](https://deepinv.org/api/stubs/deepinv.models.SwinIR.html.md#deepinv.models.SwinIR)                                           | Denoiser                 | Weights from [SwinIR](https://github.com/JingyunLiang/SwinIR), trained on various noise levels levels in {15, 25, 50}/255, in color and grayscale.<br/>The weights are automatically downloaded from the authors’ [project page](https://github.com/JingyunLiang/SwinIR/releases).                                                                                                                                                              |
| [`deepinv.models.DiffUNet`](https://deepinv.org/api/stubs/deepinv.models.DiffUNet.html.md#deepinv.models.DiffUNet)                                       | Denoiser                 | Default weights from [Ho et al.](https://arxiv.org/abs/2108.02938) trained on FFHQ (128 hidden channels per layer):<br/>[DiffUNet weights](https://huggingface.co/deepinv/diffunet/resolve/main/diffusion_ffhq_10m.pt?download=true).                                                                                                                                                                                                           |
|                                                                                                                                        |                          | Alternative weights from [Dhariwal and Nichol](https://arxiv.org/abs/2105.05233) trained on ImageNet128 (256 hidden channels per layer):<br/>[DiffUNet OpenAI weights](https://huggingface.co/deepinv/diffunet/resolve/main/diffusion_openai.pt?download=true).                                                                                                                                                                                 |
| [`deepinv.models.EPLLDenoiser`](https://deepinv.org/api/stubs/deepinv.models.EPLLDenoiser.html.md#deepinv.models.EPLLDenoiser)                               | Denoiser                 | Weights estimated with deepinv on 50 mio patches from the training/validation images from BSDS500 for grayscale and color images.<br/>Code for generating the weights for the example [Expected Patch Log Likelihood (EPLL) for Denoising and Inpainting](https://deepinv.org/auto_examples/optimization/demo_epll.html.md#sphx-glr-auto-examples-optimization-demo-epll-py) is contained within the demo.                                                           |
| [`deepinv.models.Restormer`](https://deepinv.org/api/stubs/deepinv.models.Restormer.html.md#deepinv.models.Restormer)                                     | Denoiser                 | Weights from [Restormer: Efficient Transformer for High-Resolution Image Restoration](https://arxiv.org/abs/2111.09881):<br/>[Restormer weights](https://github.com/swz30/Restormer/tree/main),<br/>also available on the [deepinverse Restormer HuggingFaceHub](https://huggingface.co/deepinv/Restormer/tree/main).                                                                                                                           |
| [`deepinv.models.PromptIR`](https://deepinv.org/api/stubs/deepinv.models.PromptIR.html.md#deepinv.models.PromptIR)                                       | Reconstructor & Denoiser | Weights from [PromptIR: Prompting for All-in-One Blind Image Restoration](https://arxiv.org/abs/2306.13090):<br/>[PromptIR weights](https://github.com/va1shn9v/PromptIR),<br/>also available on the [deepinverse Promptir HuggingFaceHub](https://huggingface.co/deepinv/promptir/tree/main).                                                                                                                                                  |
| [`deepinv.models.MPRNet`](https://deepinv.org/api/stubs/deepinv.models.MPRNet.html.md#deepinv.models.MPRNet)                                           | Reconstructor & Denoiser | Weights from [Multi-Stage Progressive Image Restoration](https://arxiv.org/abs/2102.02408):<br/>[MPRNet weights](https://github.com/swz30/MPRNet),<br/>also available on the [deepinverse MPRNet HuggingFaceHub](https://huggingface.co/deepinv/MPRNet/tree/main).                                                                                                                                                                              |
| [`deepinv.models.RAM`](https://deepinv.org/api/stubs/deepinv.models.RAM.html.md#deepinv.models.RAM)                                                 | Reconstructor & Denoiser | Weights from [Terris et al.](https://github.com/matthieutrs/ram) <sup>[1](#footcite-terris2025reconstruct)</sup>. Pretrained weights from [RAM HuggingFaceHub](https://huggingface.co/mterris/ram).                                                                                                                                                                                                                                             |
| [`deepinv.models.KernelIdentificationNetwork`](https://deepinv.org/api/stubs/deepinv.models.KernelIdentificationNetwork.html.md#deepinv.models.KernelIdentificationNetwork) | Kernel identification    | Weights from [Carbajal et al.](https://github.com/GuillermoCarbajal/J-MKPD) trained on the task of identifying blur kernels from space-varying blurred images.<br/>Pretrained weights from [deepinverse HuggingFaceHub](https://huggingface.co/deepinv/kernel_identification).                                                                                                                                                                  |
| [`deepinv.models.DEAL`](https://deepinv.org/api/stubs/deepinv.models.DEAL.html.md#deepinv.models.DEAL)                                               | Reconstructor            | Weights from [Pourya et al.](https://arxiv.org/abs/2502.04079) trained on grayscale and color denoising.<br/>Pretrained weights from [DEAL github repository](https://github.com/mehrsapo/DEAL/tree/main).                                                                                                                                                                                                                                      |
