1Peking University · 2Technical University of Munich
liangshuyi@stu.pku.edu.cn yuning.cui@in.tum.de {yangyixin93,hylz,shiboxin}@pku.edu.cn
* Equal contribution † Corresponding author
Image restoration aims to recover high-quality images from degraded observations, yet existing methods struggle with diverse degradation types. We propose SLAIR, an all-in-one image restoration framework integrating latent space separation and deterministic transport. We introduce a latent-space separation approach that ensures stable, distinct representations of degraded and clean images, facilitating effective flow matching. By learning continuous transport flow in latent space via an ordinary differential equation (ODE), our method enables deterministic restoration without relying on degradation labels or stochastic sampling. A high-frequency refinement module is introduced into the latent decoder to handle detail distortion during decoding. Experiments demonstrate that SLAIR outperforms existing approaches in both perceptual quality and computational efficiency.
Overview of SLAIR: (I) Degradation-Aware Latent Separation, (II) Conditional Flow Matching Transport, (III) High-Frequency Refinement Decoder.
A fundamental challenge in all-in-one restoration is that the latent codes of degraded and clean images are highly entangled in a vanilla VAE, making it difficult to define a clear transport direction. We address this by fine-tuning the encoder with two auxiliary losses: a binary separation loss that maximally separates the distributions of clean and degraded latents, and a degradation-type classification loss over ten degradation categories. This structured latent space ensures that the flow model always transports in a well-defined and consistent direction, without requiring explicit degradation-type labels at inference time.
Given paired degraded and clean images, SLAIR encodes them into the structured VAE latent space and learns a conditional vector field that deterministically transports $z_{\mathrm{deg}}$ to $z_{\mathrm{gt}}$. As described in Section 3.3 of the SLAIR paper, the path is trained with bridge-noised intermediate states, velocity regression, and cosine alignment, then restored by solving an ODE from $t=0$ to $t=1$.
Latent-space restoration may lose high-frequency structures during decoding due to the low-pass nature of VAE decoders. To recover fine-grained texture, edges, and perceptual detail, we augment the VAE decoder with a High-Frequency Refinement Module (HRM). The HRM injects multi-scale encoder features via lightweight fusion blocks at each decoder resolution, and applies a discrete wavelet transform (DWT) loss on the decoded output to directly supervise high-frequency subbands (LH, HL, HH). This prevents the decoder from reintroducing degradation artifacts (rain streaks, haze, moiré) while recovering sharp structures. The decoder remains frozen after Stage 1; only the fusion blocks and HRM parameters are trained.
SLAIR is evaluated under two settings. Setting (i) is a comprehensive 8-task benchmark covering diverse degradations. Setting (ii) is the standard 5-task all-in-one benchmark. Best values are bold; second-best are underlined.
Table 1 · Setting (i) — Rain1400 · Outdoor-Rain · Raindrop · UHDSnow · SOTS
| Setting (i) — Part A (PSNR↑ / SSIM↑ / LPIPS↓ / FID↓) | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | Rain1400 | Outdoor-Rain | Raindrop | UHDSnow | SOTS | |||||||||||||||
| PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | |
| AirNet[1] | 24.32 | .764 | .207 | 85.49 | 16.39 | .600 | .457 | 200.99 | 21.91 | .832 | .191 | 119.98 | 22.14 | .780 | .232 | 106.28 | 26.57 | .925 | .056 | 19.97 |
| PromptIR[2] | 25.40 | .798 | .176 | 73.90 | 17.22 | .614 | .445 | 190.44 | 22.79 | .836 | .174 | 119.66 | 23.12 | .847 | .177 | 82.21 | 28.90 | .974 | .016 | 4.26 |
| DA-CLIP[3] | 25.89 | .816 | .158 | 63.91 | 15.15 | .544 | .483 | 191.80 | 29.74 | .896 | .052 | 34.25 | 31.43 | .944 | .042 | 18.76 | 30.94 | .965 | .016 | 4.67 |
| DiffUIR[4] | 30.19 | .903 | .072 | 25.52 | 14.74 | .603 | .431 | 132.02 | 23.50 | .844 | .170 | 113.43 | 29.41 | .943 | .056 | 27.59 | 31.11 | .976 | .011 | 9.53 |
| AdaIR[5] | 24.52 | .760 | .205 | 83.96 | 16.96 | .611 | .445 | 191.35 | 23.00 | .840 | .174 | 121.01 | 22.47 | .792 | .222 | 99.96 | 27.56 | .939 | .041 | 11.36 |
| DCPT[6] | 25.25 | .792 | .184 | 79.31 | 13.51 | .554 | .501 | 199.03 | 18.28 | .788 | .199 | 118.58 | 22.95 | .837 | .189 | 89.27 | 29.58 | .973 | .016 | 4.44 |
| MoCE-IR[7] | 24.70 | .773 | .203 | 87.27 | 16.66 | .610 | .449 | 191.79 | 22.40 | .829 | .178 | 117.44 | 22.56 | .812 | .217 | 101.85 | 30.08 | .975 | .014 | 4.22 |
| VLU-Net[8] | 24.55 | .765 | .201 | 84.64 | 17.02 | .612 | .446 | 190.74 | 22.88 | .837 | .179 | 115.29 | 22.38 | .784 | .229 | 103.67 | 27.68 | .941 | .043 | 12.44 |
| SLAIR (Ours) | 29.36 | .893 | .080 | 29.64 | 22.50 | .815 | .187 | 55.75 | 28.74 | .904 | .082 | 45.66 | 28.62 | .925 | .068 | 30.54 | 26.02 | .938 | .034 | 8.89 |
Table 1 cont. · Setting (i) — BSD68 · LoL · UHDM · HDR-Eye · Average
| Setting (i) — Part B (PSNR↑ / SSIM↑ / LPIPS↓ / FID↓) | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | BSD68 | LoL | UHDM | HDR-Eye | Average | |||||||||||||||
| PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | |
| AirNet[1] | 26.17 | .636 | .429 | 74.70 | 24.01 | .720 | .278 | 97.91 | 18.22 | .698 | .234 | 54.89 | 16.04 | .753 | .175 | 62.10 | 21.75 | .745 | .251 | 91.37 |
| PromptIR[2] | 22.32 | .445 | .564 | 83.77 | 25.23 | .771 | .228 | 97.15 | 18.57 | .703 | .223 | 53.04 | 16.18 | .740 | .172 | 55.49 | 22.19 | .748 | .242 | 84.44 |
| DA-CLIP[3] | 27.98 | .777 | .190 | 60.57 | 26.57 | .804 | .210 | 124.59 | 18.61 | .727 | .222 | 54.06 | 16.65 | .785 | .162 | 58.48 | 24.77 | .806 | .171 | 67.90 |
| DiffUIR[4] | 20.41 | .558 | .473 | 86.91 | 19.35 | .809 | .180 | 89.85 | 18.57 | .737 | .208 | 48.62 | 17.41 | .815 | .149 | 54.28 | 22.74 | .799 | .194 | 65.31 |
| AdaIR[5] | 23.04 | .478 | .546 | 83.58 | 22.14 | .734 | .256 | 102.82 | 18.76 | .719 | .222 | 52.09 | 17.34 | .784 | .165 | 56.88 | 21.75 | .740 | .253 | 89.22 |
| DCPT[6] | 22.38 | .457 | .566 | 82.82 | 26.02 | .789 | .212 | 100.60 | 17.81 | .715 | .230 | 54.91 | 13.96 | .799 | .186 | 64.68 | 21.08 | .745 | .254 | 88.18 |
| MoCE-IR[7] | 25.31 | .587 | .456 | 76.79 | 27.50 | .836 | .169 | 96.04 | 18.54 | .708 | .226 | 53.47 | 16.25 | .758 | .172 | 56.03 | 22.67 | .765 | .232 | 87.21 |
| VLU-Net[8] | 23.45 | .495 | .516 | 81.66 | 21.09 | .820 | .175 | 97.94 | 18.71 | .719 | .222 | 52.48 | 16.44 | .750 | .171 | 55.43 | 21.58 | .747 | .242 | 88.25 |
| SLAIR (Ours) | 28.36 | .858 | .178 | 48.78 | 26.83 | .833 | .139 | 69.76 | 21.59 | .847 | .114 | 26.45 | 23.29 | .870 | .148 | 54.36 | 26.15 | .876 | .114 | 41.09 |
Table 2 · Setting (ii) — BSD68 · GoPro · LoL · Rain100L · SOTS · Average
| Setting (ii) (PSNR↑ / SSIM↑ / LPIPS↓ / FID↓) | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | BSD68 | GoPro | LoL | Rain100L | SOTS | Average | ||||||||||||||||||
| PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | PSNR↑ | SSIM↑ | LPIPS↓ | FID↓ | |
| AirNet[1] | 26.17 | .636 | .429 | 74.70 | 22.85 | .766 | .275 | 60.57 | 24.01 | .720 | .278 | 97.91 | 28.76 | .881 | .147 | 41.40 | 26.57 | .925 | .056 | 19.97 | 25.67 | .786 | .237 | 58.91 |
| PromptIR[2] | 22.32 | .445 | .564 | 83.77 | 22.65 | .763 | .276 | 59.29 | 25.23 | .771 | .228 | 97.15 | 32.16 | .902 | .105 | 26.64 | 28.90 | .974 | .016 | 4.26 | 26.25 | .771 | .238 | 54.22 |
| DiffUIR[4] | 20.41 | .558 | .473 | 86.91 | 27.62 | .844 | .201 | 40.99 | 19.35 | .809 | .180 | 89.85 | 28.26 | .898 | .165 | 79.52 | 31.11 | .976 | .011 | 9.53 | 25.35 | .817 | .206 | 61.36 |
| AdaIR[5] | 23.04 | .478 | .546 | 83.58 | 28.98 | .878 | .161 | 28.23 | 22.14 | .734 | .256 | 102.82 | 28.85 | .858 | .177 | 70.13 | 27.56 | .939 | .041 | 11.36 | 26.11 | .777 | .236 | 59.22 |
| DCPT[6] | 22.38 | .457 | .566 | 82.82 | 22.20 | .799 | .242 | 45.09 | 26.02 | .789 | .212 | 100.60 | 30.61 | .899 | .119 | 42.12 | 29.58 | .973 | .016 | 4.44 | 26.16 | .783 | .231 | 55.01 |
| MoCE-IR[7] | 25.31 | .587 | .456 | 76.79 | 30.46 | .907 | .125 | 22.36 | 27.50 | .836 | .169 | 96.04 | 29.26 | .863 | .160 | 61.48 | 30.08 | .975 | .014 | 4.22 | 28.52 | .834 | .185 | 52.18 |
| VLU-Net[8] | 23.45 | .495 | .516 | 81.66 | 28.25 | .860 | .184 | 34.67 | 21.09 | .820 | .175 | 97.94 | 31.70 | .897 | .115 | 34.55 | 27.68 | .941 | .043 | 12.44 | 26.43 | .803 | .207 | 52.25 |
| SLAIR (Ours) | 29.21 | .846 | .139 | 39.99 | 25.91 | .796 | .153 | 32.87 | 29.13 | .883 | .083 | 45.75 | 31.01 | .943 | .060 | 28.89 | 26.67 | .942 | .033 | 7.76 | 28.39 | .882 | .094 | 31.05 |