wikillm

Paper · 2022-04-28 · cs.CV, eess.IV

Deep Generalized Unfolding Networks for Image Restoration

DGUNet unfolds Proximal Gradient Descent into a 7-stage CNN for image restoration. Each stage learns its gradient step, with two residual blocks standing in for an unknown degradation operator and its transpose, plus a U-Net-style proximal mapping. Author-reported: DGUNet+ beats compared methods on deraining, deblurring and denoising test sets; +0.73 dB PSNR over MPRNet on five deraining sets.

Deep unfoldingImage denoisingChannel attentionimage-restorationdeep-unfoldingderainingdeblurringdenoisingcompressive-sensing

arXivPDFCodeMarkdown16 min read

AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

Image restoration means taking a damaged picture (rainy, blurry, noisy, or rebuilt from a few measurements) and recovering the clean image. A classic approach writes this as an optimisation problem and solves it step by step, alternating between "match what was measured" and "look like a natural image". Plain neural networks restore images well but work as black boxes.

Deep unfolding keeps the steps of the classic procedure and turns each step into a learnable layer, so the whole chain trains end to end and still follows the procedure. This paper's network, DGUNet, adds two ideas. First, it learns the "match what was measured" step even when the exact way the picture was damaged is unknown. Second, it lets the intermediate features of one step pass into the next, so detail that is normally lost when a stage turns features back into an image is kept.

The authors test it on deraining, deblurring, denoising and compressive sensing and report higher scores than the methods they compare with on the deraining, deblurring and denoising test sets.

TL;DR

DGUNet is a 7-stage network built by unfolding Proximal Gradient Descent §3.1 §3.2. Each stage has a gradient module, which uses the known degradation matrix when it exists and two learned residual blocks otherwise eq. 6 eq. 7, and an informative proximal mapping module, an encoder-decoder with channel attention §3.2. Inter-stage feature fusion carries encoder and decoder features across stages through spatially varying scale and shift eq. 8. Author-reported: DGUNet and DGUNet+ (independent stages) beat the compared methods on the deraining, deblurring and denoising test sets, and DGUNet+ is best on most of them tab. 1 tab. 2 tab. 3. Compressive sensing results are mixed tab. 4. The official code differs from the paper in several details, so read the Paper vs code section before implementing.

Problem

Image restoration is modelled as y = A x + n, where A is the degradation matrix and n is noise, and is ill-posed eq. 1 §1. Model-based methods use handcrafted priors that limit their representation, and deep plug-and-play methods are slow at inference §1. Deep unfolding networks (DUN) train end to end and infer quickly, but usually need a known degradation process or handcrafted degradation assumptions. Their stage-to-stage interface is an image, so features are distorted at every stage §1 §2.

The paper states that A is exactly known in compressive sensing §4.5. It states that A is unknown in some degradation problems §3.2 without listing which ones. The official deraining code uses only the learned branch (see Paper vs code).

Method

Proximal Gradient Descent (PGD) splits each iteration into a gradient step and a proximal step eq. 4. The gradient step is v = x - rho A^T (A x - y) and the proximal step is x = prox(v) eq. 5a eq. 5b §3.1. ISTA is the special case with an l1 regulariser, whose proximal map is soft-thresholding §3.1.

DGUNet unfolds K PGD iterations into K stages. The default is K = 7 §3.2. Stages 2 to 6 share parameters, and stages 1 and 7 have their own. The plus version, DGUNet+, makes all stages independent §3.2.

  1. Flexible gradient descent module (FGDM), one per stage §3.2 fig. 2. a. If A is known, use A and A^T directly, with a trainable step size rho^k per stage eq. 6 §3.2. b. If A is unknown, replace A and A^T with two independent residual blocks F_A^k and F_{A^T}^k, and use F_{A^T}^k(F_A^k(x) - y) as the gradient eq. 7 §3.2.
  2. Informative proximal mapping module (IPMM), one per stage §3.2 fig. 2. a. A channel attention block extracts shallow features §3.2. b. Residual blocks without batch normalisation extract features at three scales, down with 2x2 max-pooling and up with bilinear upsampling followed by a convolution §3.2. c. A global pathway adds the input to the output §3.2. d. A supervised attention module (SAM, from MPRNet) produces the stage output and clean features §3.2. e. The features are injected into the next stage through a subspace projection (from NBNet) §3.2.
  3. Inter-stage feature fusion (ISFF), at each encoder scale §3.2 fig. 3. Previous-stage encoder and decoder features are embedded and summed, then produce a spatial scale and shift for the current encoder features eq. 8.
  4. Loss: an l2 error summed over the outputs of all stages, with no other terms §3.3 eq. 10.

Key equations:

\mathbf{v}^k = \hat{\mathbf{x}}^{k-1} - \rho^k \mathbf{A}^\top(\mathbf{A}\hat{\mathbf{x}}^{k-1} - \mathbf{y}) eq. 6

\mathbf{v}^k = \hat{\mathbf{x}}^{k-1} - \rho^k \mathcal{F}^k_{\mathbf{A}^\top}\big(\mathcal{F}^k_{\mathbf{A}}(\hat{\mathbf{x}}^{k-1}) - \mathbf{y}\big) eq. 7

\begin{aligned} \mathbf{H}^{k-1}_n &= \mathrm{Conv}(\mathbf{F}^{k-1}_{enc,n}) + \mathrm{Conv}(\mathbf{F}^{k-1}_{dec,n}) \\ \bm{\alpha}^k_n, \bm{\beta}^k_n &= \mathrm{Conv}_\alpha(\mathbf{H}^{k-1}_n), \mathrm{Conv}_\beta(\mathbf{H}^{k-1}_n) \\ \mathbf{F}^k_{enc,n} &= \hat{\mathbf{F}}^k_{enc,n} \odot \bm{\alpha}^k_n + \bm{\beta}^k_n \end{aligned} eq. 8

\hat{\mathbf{x}}^k, \mathbf{F}^k = \mathtt{prox}_{\bm{\theta}^k}(\mathbf{v}^k, \mathbf{F}^{k-1}) eq. 9

\mathcal{L}(\bm{\Omega}) = \sum_{k=1}^{K} \left\| \mathbf{x} - \hat{\mathbf{x}}^k \right\|_2^2 eq. 10

The algorithm, as printed, is:

Pseudocode
# DGUNet forward pass  [alg. 1]
# Input:  degraded image y (B, 3, H, W)
# Output: estimates of stages 1..K, each (B, 3, H, W)

def dgunet(y):
    # Start from the input with no inter-stage features  [alg. 1]
    estimate = y
    inter_stage = None
    estimates = []
    for k in range(1, K + 1):
        # Gradient step with step size rho_k  [§3.2] [eq. 6] [eq. 7]
        # Use the known A when it exists, else the learned pair
        v = gradient_step_k(estimate, y)     # (B, 3, H, W)
        # Proximal mapping; also returns features for stage k + 1  [eq. 9]
        estimate, inter_stage = prox_k(v, inter_stage)
        estimates.append(estimate)
    return estimates
Pseudocode
# One proximal mapping (IPMM) with inter-stage fusion  [§3.2] [eq. 8]
# Input:  v (B, 3, H, W); features from the previous stage
# Output: estimate (B, 3, H, W); features for the next stage

def prox_k(v, inter_stage):
    # Shallow features with channel attention  [§3.2]
    shallow = channel_attention(v)
    # Encoder at three scales, modulated by the previous stage  [eq. 8]
    encoder_feats, bottleneck = encoder(shallow, inter_stage)
    # Decoder with skip connections  [§3.2]
    decoder_feats = decoder(bottleneck, encoder_feats)
    # Supervised attention gives the estimate and clean features  [§3.2]
    clean_feats, estimate = sam(decoder_feats[-1], v)
    return estimate, (encoder_feats, decoder_feats, clean_feats)
Pseudocode
# Inter-stage fusion at one encoder scale  [eq. 8]
# Input:  previous encoder and decoder features; current encoder features
# Output: modulated current encoder features

def fuse(enc_prev, dec_prev, enc_now):
    # Embed both previous-stage maps and add them  [eq. 8]
    fused = embed_enc(enc_prev) + embed_dec(dec_prev)
    # Spatial scale and shift, not per-channel vectors  [eq. 8]
    alpha = conv_alpha(fused)
    beta = conv_beta(fused)
    return enc_now * alpha + beta

The paper does not specify a learning-rate decay, and it does not state architectural widths; see Hyperparameters.

Hyperparameters

Values that the paper does not state are marked "not stated". Code values are from commit bae845c and apply to the Deraining folder unless noted.

NameValueWhereNotes
Stages K7§3.2 tab. 5Ablated at 9, 7, 5, 3. Code: 1 + 5 shared + 1 DGUNet.py
Parameter sharingStages 2-6 share; DGUNet+ independent§3.2Code default shares via one module called 5 times DGUNet.py DGUNet.py; plus uses separate stages DGUNet_plus.py
Step size rho^kTrainable, one per stage§3.2Initial value not stated. Code: scalar initialised to 0.5, shared by stages 2-6 DGUNet.py DGUNet.py
OptimiserAdam§4.1Code: betas (0.9, 0.999), eps 1e-8 train.py
Initial learning rate2e-4 (denoising, deraining, deblurring); 1e-4 (CS)§4.1Code: deraining 2e-4 training.yml; denoising 1e-4 training.yml; deblurring 1e-4 training.yml; CS 2e-4 training.yml
Warm-upStated as "warming up strategy", length not stated§4.1Code: 3 epochs train.py
Learning-rate decayNot stated§4.1Code: cosine to 1e-6 after warm-up train.py; denoising adds 40 to T_max train.py
Batch size16 (deraining, deblurring, denoising); 128 (CS)§4.1Code: CS uses 16 training.yml
Training length4e5 iterations (deraining, deblurring, denoising); 200 epochs (CS)§4.1Code is epoch-based: deraining 250 training.yml; deblurring 3000 training.yml; denoising 80 training.yml; CS 250 training.yml
Training patch256x256 (deraining, deblurring, denoising); 32x32 (CS)§4.1Code: denoising 128 training.yml; CS 128 training.yml
Random seedNot stated§4.1Code: 1234 train.py
Hardware2 x NVIDIA Tesla V100, about three days§4.1
Feature widthsNot stated§3.2Code: n_feat 40, plus 20 per encoder level, 3 scales DGUNet.py DGUNet.py
Residual block inner widthNot stated§3.2Code: 64 DGUNet.py DGUNet.py
Channel attention reductionNot stated§3.2Code: 4 DGUNet.py
Subspace dimensionNot stated§3.2Code: 16 DGUNet.py
Downsampling2x2 max-pooling, stride 2§3.2Code: 4x4 convolution, stride 2 DGUNet.py DGUNet.py
UpsamplingBilinear, then convolution§3.2Code: transposed convolution, 2x2, stride 2 DGUNet.py
MetricsPSNR and SSIM§4.1
Deraining training data11,200 + 1,800 + 700 + 12 pairs (Rain14000, Rain1800, Rain800, Rain12)§4.2
Deblurring training data2,103 GoPro pairs§4.3Test: GoPro 1,111 and HIDE 2,025 samples §4.3
Denoising training dataSIDD, 320 pairs§4.4Test: SIDD and DND §4.4
CS data and ratiosBSD400 train; Set11 and BSD68 test; ratios 1, 4, 10, 25, 50 %§4.5Sampling matrix learned jointly §4.5 DGUNet.py

Results

Author-reported. Setup: each task trained on the dataset named in §4.2-§4.5 with the training schedule in Hyperparameters, and evaluated with PSNR and SSIM §4.1. The compared methods are listed in the text of each subsection. The best and second-best marking of the source tables is not reproduced here; values are copied unchanged.

Image deraining tab. 1. Cells are PSNR / SSIM. Compared with §4.2.

MethodTest100Rain100HRain100LTest2800Test1200Average
DerainNet22.77 / 0.81014.92 / 0.59227.03 / 0.88424.31 / 0.86123.38 / 0.83522.48 / 0.796
SEMI22.35 / 0.78816.56 / 0.48625.03 / 0.84224.43 / 0.78226.05 / 0.82222.88 / 0.744
DIDMDN22.56 / 0.81817.35 / 0.52425.23 / 0.74128.13 / 0.86729.65 / 0.90124.58 / 0.770
UMRL24.41 / 0.82926.01 / 0.83229.18 / 0.92329.97 / 0.90530.55 / 0.91028.02 / 0.880
RESCAN25.00 / 0.83526.36 / 0.78629.80 / 0.88131.29 / 0.90430.51 / 0.88228.59 / 0.857
PreNet24.81 / 0.85126.77 / 0.85832.44 / 0.95031.75 / 0.91631.36 / 0.91129.42 / 0.897
MSPFN27.50 / 0.87628.66 / 0.86032.40 / 0.93332.82 / 0.93032.39 / 0.91630.75 / 0.903
MPRNet30.27 / 0.89730.41 / 0.89036.40 / 0.96533.64 / 0.93832.91 / 0.91632.73 / 0.921
DGUNet30.32 / 0.89930.66 / 0.89137.42 / 0.96933.68 / 0.93833.23 / 0.92033.06 / 0.923
DGUNet+30.86 / 0.90731.06 / 0.89738.25 / 0.97434.01 / 0.94233.08 / 0.91633.46 / 0.927

Image deblurring tab. 2. Cells are PSNR / SSIM. "-" as in the source. Compared with §4.3.

MethodGoProHIDE
Xu et al.21.00 / 0.741-
Hyun et al.23.64 / 0.824-
Whyte et al.24.60 / 0.846-
Gong et al.26.40 / 0.863-
DeblurGAN28.70 / 0.85824.51 / 0.871
Nah et al.29.08 / 0.91425.73 / 0.874
Zhang et al.29.19 / 0.931-
DeblurGAN-v229.55 / 0.93426.61 / 0.875
SRN30.26 / 0.93428.36 / 0.915
Shen et al.-28.89 / 0.930
Gao et al.30.90 / 0.93529.11 / 0.913
DBGAN31.10 / 0.94228.94 / 0.915
MT-RNN31.15 / 0.94529.15 / 0.918
DMPHN31.20 / 0.94029.09 / 0.924
Suin et al.31.85 / 0.94829.98 / 0.930
MPRNet32.66 / 0.95930.96 / 0.939
DGUNet32.71 / 0.96030.96 / 0.940
DGUNet+33.17 / 0.96331.40 / 0.944

Image denoising tab. 3. Cells are PSNR / SSIM. Compared with §4.4.

MethodSIDDDND
DnCNN23.66 / 0.58332.43 / 0.790
MLP24.71 / 0.64134.23 / 0.833
BM3D25.65 / 0.68534.51 / 0.851
CBDNet30.78 / 0.80138.06 / 0.942
RIDNet38.71 / 0.95139.26 / 0.953
AINDNet38.95 / 0.95239.37 / 0.951
VDN39.28 / 0.95639.38 / 0.952
SADNet39.46 / 0.95739.59 / 0.952
DANet+39.47 / 0.95739.58 / 0.955
MIRNet39.72 / 0.95939.88 / 0.956
CycleISP39.52 / 0.95739.56 / 0.956
DeamNet39.43 / 0.95639.70 / 0.953
MPRNet39.71 / 0.95839.80 / 0.954
DGUNet39.88 / 0.95940.04 / 0.956
DGUNet+39.91 / 0.96040.12 / 0.957

Compressive sensing tab. 4. Cells are PSNR / SSIM. Compared with §4.5.

DatasetRatioISTANet+CSNetAdapReconOPINENet+AMPNetDGUNetDGUNet+
Set111 %17.42 / 0.402919.87 / 0.497719.63 / 0.484820.15 / 0.534020.04 / 0.513222.09 / 0.609622.15 / 0.6114
Set114 %21.32 / 0.603723.93 / 0.733823.87 / 0.727925.69 / 0.792024.64 / 0.752726.84 / 0.824926.83 / 0.8230
Set1110 %26.64 / 0.808727.59 / 0.857527.39 / 0.852129.81 / 0.888428.84 / 0.876531.07 / 0.912330.93 / 0.9088
Set1125 %32.59 / 0.925431.70 / 0.927431.75 / 0.925734.86 / 0.950934.42 / 0.951336.11 / 0.961136.18 / 0.9616
Set1150 %38.11 / 0.970737.19 / 0.970035.87 / 0.962540.17 / 0.979740.12 / 0.981841.22 / 0.983641.24 / 0.9837
BSD681 %19.14 / 0.415821.91 / 0.495821.50 / 0.482522.11 / 0.514021.97 / 0.508622.65 / 0.539622.70 / 0.5406
BSD684 %22.17 / 0.548624.63 / 0.656424.30 / 0.649125.00 / 0.682525.40 / 0.698525.55 / 0.700825.45 / 0.6987
BSD6810 %25.32 / 0.702227.02 / 0.786426.72 / 0.782127.82 / 0.804527.41 / 0.803628.26 / 0.819328.14 / 0.8165
BSD6825 %29.36 / 0.852530.22 / 0.891830.10 / 0.890131.51 / 0.906131.56 / 0.912131.90 / 0.915531.98 / 0.9158
BSD6850 %34.04 / 0.942434.82 / 0.959033.60 / 0.947936.35 / 0.966036.64 / 0.970737.01 / 0.971437.04 / 0.9718

Figures (described, not reproduced): fig. 4 shows deraining results on the test images, where the authors report that DGUNet and DGUNet+ remove faint rain lines better than MSPFN and MPRNet §4.2. fig. 5 shows deblurring results on two blurred test samples with per-image PSNR labels, comparing the blurred input, ground truth, Gao et al., DBGAN, MT-RNN, MPRNet, DGUNet and DGUNet+ §4.3. fig. 6 shows real denoising on DND and SIDD samples, with DGUNet and DGUNet+ at the end of the row §4.4. fig. 7 shows compressive sensing at a 10 % ratio on Set11, with the per-image PSNR labels 26.13 dB for DGUNet and 26.41 dB for DGUNet+ §4.5.

Headline comparisons stated in the text: DGUNet+ is 1.85 dB above MPRNet on Rain100L, 0.65 dB on Rain100H and 0.73 dB on the deraining average §4.2; 0.51 dB and 0.44 dB above MPRNet on GoPro and HIDE §4.3; 0.32 dB and 0.20 dB above MPRNet on DND and SIDD §4.4; about 2 dB above OPINENet+ on Set11 at 1 % §4.5. The authors note that DGUNet sometimes beats DGUNet+ in compressive sensing because the training set is small §4.5.

Ablation on Rain100H, PSNR, author-reported, all changes made on DGUNet+ §4.6.

StagesScalesPSNRSource
9331.27tab. 5
7331.06tab. 5
7230.87tab. 5
7130.68tab. 5
5330.43tab. 5
3329.67tab. 5
VariantPSNRSource
DGUNet+31.06tab. 6
w/o FGDM (plain U-Net cascade)30.51tab. 6 §4.6
w/o SP (addition instead of spatially adaptive fusion)30.92tab. 6 §4.6
w/o ISFF30.09tab. 6 §4.6

Paper vs code

Repository: the code link in the frontmatter, at commit bae845c (2022-05-13). The paper links it in the abstract and it is written by the authors, so it is the official code. The repository has no LICENSE file, so no code is quoted; citations are by path and line only. I read the deraining model, training script and loss in full, and the deraining test script in part. For denoising, deblurring and compressive sensing I checked only the training configuration and loss.

  • Loss. Paper: l2 summed over stages §3.3 eq. 10. Deraining: Charbonnier loss summed over the 7 stage outputs, plus 0.05 times an edge loss train.py losses.py losses.py. Deblurring: same train.py. Denoising: Charbonnier only, output clamped to [0, 1] train.py. Compressive sensing: mean squared error summed over stages by default train.py train.py. Only compressive sensing matches the paper's stated loss.
  • Downsampling and upsampling. Paper: 2x2 max-pooling; bilinear upsampling plus convolution §3.2. Code: strided 4x4 convolution DGUNet.py DGUNet.py; transposed 2x2 convolution DGUNet.py. The bilinear helper classes are defined but not used DGUNet.py.
  • Normalisation in the proximal mapping. Paper: residual blocks without batch normalisation §3.2. Code: encoder blocks are conv, LeakyReLU, conv with a 1x1 identity path and instance normalisation on half the channels (HIN); the decoder has no HIN DGUNet.py DGUNet.py DGUNet.py. The ResBlock without normalisation appears only in the gradient module DGUNet.py DGUNet.py.
  • Inter-stage fusion. Paper: two 1x1 embeddings, summed, then alpha and beta applied as F = F_hat * alpha + beta §3.2 eq. 8. Code: 3x3 embeddings, LeakyReLU(0.1) on the sum, and output = out * sigmoid(phi(s)) + gamma(s) + out, so alpha is a sigmoid and the block's own output is added back DGUNet.py DGUNet.py. These are different functions.
  • SAM. Paper: the SAM from MPRNet §3.2. Code: two convolutions with residual sums; this file has no sigmoid attention step DGUNet.py.
  • Subspace projection. Paper: from NBNet, into the next stage §3.2. Code: a 16-dimensional subspace from a learned convolution, L1-normalised, then a 16x16 matrix inverse; applied at the start of each stage to the previous stage's SAM features DGUNet.py DGUNet.py DGUNet.py.
  • Step size. Paper: rho^k trainable per stage §3.2. Code: one scalar per gradient module, initialised to 0.5, and shared by stages 2-6 DGUNet.py DGUNet.py.
  • Stage sharing. Matches: shared stages 2-6 and independent stage 1 and 7 in the default model DGUNet.py; independent stages in DGUNet+ DGUNet_plus.py.
  • Output order. Paper: the algorithm returns [x^1, ..., x^K] alg. 1. Code returns the list reversed, final stage first DGUNet.py; validation reads index 0 train.py.
  • Compressive sensing operator. Paper: A exactly known, sampling matrix learned §4.5. Code: a learned matrix with 1024 columns, consistent with 32x32 blocks (inferred from the shape), and the exact gradient via the matrix's transpose DGUNet.py DGUNet.py. Consistent with eq. 6. The training patch size differs (see Hyperparameters).
  • Test-time augmentation. Paper: not stated. Code: plain forward pass and clamp; the 8-way self-ensemble is defined but commented out test.py test.py.
  • Training schedule. Paper: 4e5 iterations, 3 days on two V100s §4.1. Code runs in epochs with other totals (see Hyperparameters).

Pitfalls

  • Algorithm 1 has its branches reversed. The text assigns eq. 6 to a known A and eq. 7 to an unknown A §3.2. The printed algorithm uses eq. 6 when A is unknown alg. 1. Follow the text.
  • Index inconsistency in eq. 8. The text says the fused result of stage k is H^k_n §3.2, but the equation defines H^{k-1}_n from stage k-1 features. Implement the equation: the fusion uses the previous stage's features.
  • The loss differs by task. Implementing the paper's l2 loss for deraining will not reproduce the code's training. The deraining code uses Charbonnier with eps 1e-3 (computed as sqrt(d^2 + 1e-6)) losses.py plus 0.05 times the edge term.
  • Model selection uses a reported test set. The deraining validation folder is Rain100L training.yml, which is also one of the test sets in tab. 1. The checkpoint is chosen by PSNR on that folder train.py. The paper does not say which checkpoint it reports. Treat the Rain100L numbers as optimistic unless re-checked on a held-out set.
  • "Twelve test sets" does not match. The introduction and conclusion say twelve §1 §5. Counting the named sets gives 11: five deraining, two deblurring, two denoising and two compressive sensing §4.2-§4.5.
  • Learning rate and schedule are not fully specified. Warm-up length, decay and initial step-size values are not stated §4.1 §3.2. Code schedules differ between tasks, so copying one task's settings to another will not match any reported result.
  • Feature widths are missing. The paper gives no channel counts, residual block width, attention reduction or subspace dimension. The code uses 40 base channels with +20 per encoder level, a 64-wide residual block, reduction 4 and a 16-dimensional subspace DGUNet.py DGUNet.py DGUNet.py. The num_cab argument is accepted but not used in the forward pass DGUNet.py DGUNet.py.
  • Step-size sharing. The notation rho^k and the parameter set Omega suggest one step size per stage, but the code shares one scalar across stages 2-6 DGUNet.py DGUNet.py. With shared weights, sharing is faithful to the architecture, but the notation is ambiguous.
  • Numerically sensitive step. The subspace projection normalises by an L1 norm with a 1e-6 offset and then inverts a 16x16 matrix with torch.inverse DGUNet.py. Near-singular cases are not handled explicitly in the code.
  • Hidden cost. Each of the 7 stages contains a full encoder-decoder across three scales plus two residual blocks for the gradient step, so the network is heavy. The paper reports complexity only in a figure, with no numbers in the text fig. 1. Budget memory and time from the code, not from the paper.
  • Supplementary material is referenced but not in the source. The LaTeX mentions supplementary results in commented-out text §4 and does not include them.
  • Baseline numbers may not share one protocol. The paper does not say whether the baseline rows were rerun under the authors' setup or copied from the cited papers §4.2 §4.3. Compare with them only as reported.

Lineage

  • Builds on: Proximal Gradient Descent and ISTA, as the algorithmic basis §3.1. The deep unfolding networks reviewed in §2 (deep plug-and-play and ADMM/HQS unfolding) are the closest prior work the paper discusses. The source gives no arXiv ids for them, so no link is given.
  • Uses from other work: the supervised attention module from MPRNet §3.2, subspace projection from NBNet §3.2, and spatially-adaptive normalisation §3.2. The source gives no arXiv ids for these.
  • Compared against: deraining: DerainNet, SEMI, DIDMDN, UMRL, RESCAN, PreNet, MSPFN, MPRNet §4.2. Deblurring: DBGAN, MT-RNN, DMPHN, Suin et al., MPRNet and others in tab. 2 §4.3. Denoising: SADNet, DANet+, CycleISP, DeamNet, MPRNet §4.4. Compressive sensing: ISTANet+, CSNet, AdapRecon, OPINENet+, AMPNet §4.5.
  • Superseded by: not stated in the source.

Source and license

Adapted from “Deep Generalized Unfolding Networks for Image Restoration” by Chong Mou, Qian Wang, Jian Zhang (arXiv:2204.13348), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/MC-E/Deep-Generalized-Unfolding-Networks-for-Image-Restoration at commit bae845c2612d (none (no LICENSE file in repository)). Any quoted code is shown under that license.