Image Restoration via Diffusion Models with Dynamic Resolution¶
会议: ICML 2026
arXiv: 2605.14267
代码: https://github.com/StarNextDay/SubDAPS (有)
领域: 扩散模型 / 图像复原 / 加速推理
关键词: 动态分辨率扩散, DAPS, 共轭梯度, predictor-corrector, ISR
一句话总结¶
SubDAPS / SubDAPS++ 把 DPS、DAPS 这类 pixel-space 扩散复原方法搬进"动态分辨率扩散模型"框架——早期在 \(64^2 / 128^2\) 子空间采样、后期才回到 \(256^2\) 全分辨率,并用共轭梯度替掉 Langevin、用阈值切换 stochastic / deterministic 采样、再附一个无需额外网络评估的 corrector 步,在 4 类线性 + 2 类非线性复原任务上多数指标超越 pixel 与 latent 扩散方法且推理更快。
研究背景与动机¶
领域现状:扩散模型在图像复原上很强,pixel-space 方法(DPS、DDRM、DDNM、DiffPIR、DAPS、AdaPS)直接在 \(256^2 \times 3\) 上反复采样,反演质量高但慢;latent-space 方法(PSLD、ReSample、LatentDAPS、SILO)在 VAE 隐空间采样,理论上更便宜,但每步都要 VAE encoder/decoder,整体反而经常比 pixel 方法还慢。
现有痛点:(a) pixel 全程在高维上算,早期阶段绝大多数计算量花在"画全局结构"上,存在大量冗余;(b) latent 节省的是隐空间维度,却付出了反复编/解码的代价,且 VAE 本身限制可重建质量。
核心矛盾:你既想"早期省钱"又想"晚期画细节",pixel/latent 各取一端都不优;需要一种 dimensionality-on-demand 的扩散过程。
本文目标:(a) 把动态分辨率扩散(Subspace Diffusion / UDPM / DVDP / DiMR / Fresco)从纯生成迁移到通用 image restoration;(b) 让 DPS / DAPS 这样的 pixel-space algorithm 在动态分辨率框架下还能用 measurement consistency;(c) 进一步优化噪声注入、measurement update、轨迹修正三处子模块,把质量和速度同时再推一档。
切入角度:作者抓住 Jing et al. (2022) 关于"早期 timestep 主要是低频,可以在低分辨率子空间做"的洞察,注意到这正是 ISR 这种"先恢复全局结构再补高频"任务的天然适配。
核心 idea:先 finetune pretrained pixel DM 为多分辨率三档(\(64^2 / 128^2 / 256^2\))共享权重;把 DPS / DAPS 改造为 SubDPS / SubDAPS 做基线;再针对 SubDAPS 提出三项改进(CG 解 measurement、deterministic 切换、predictor-corrector)合成 SubDAPS++。
方法详解¶
整体框架¶
推理沿时间 \(0 = t_0 < t_1 < \dots < t_N = T\) 反向走,每个时刻关联一个维度 \(d_i\),满足 \(d = d_0 \geq d_1 \geq \dots \geq d_N\)(论文用 \(256^2 \to 128^2 \to 64^2\) 三档)。每步做三件事:(1) 用 \(\bm{x}_\theta(\bm{x}_{t_i}, t_i)\) 得到无条件预测 \(\hat{\bm{x}}_0\);(2) 用 measurement 把 \(\hat{\bm{x}}_0\) 修正成与观测一致的 \(\tilde{\bm{x}}_0\);(3) 若该步要从 \(d_i\) 上采到 \(d_{i-1}\),把状态投回上层并注入噪声以匹配 diffusion prior;否则按收敛准则决定继续注入随机噪声还是改用 deterministic 更新。SubDAPS++ 在主循环结束后再加一个 predictor-corrector pass 不调网络地修正整条轨迹。
关键设计¶
-
SubDPS / SubDAPS:把 measurement consistency 搬进动态分辨率:
- 功能:让经典 DPS / DAPS 在子空间里仍能用观测做修正,并自然处理分辨率切换。
- 核心思路:对 DPS,在 \(d_{i-1} = d_i\) 时把 likelihood 梯度改写为 \(\nabla_{\bm{x}_{t_i}} \log p_{t_i}(\bm{y} | \bm{x}_{t_i}) \approx -\zeta_{t_i} \nabla_{\bm{x}_{t_i}} \|\bm{y} - \mathcal{A}(\bm{U}_i \bm{x}_\theta(\bm{x}_{t_i}, t_i))\|^2\)(用上采矩阵 \(\bm{U}_i\) 把子空间预测投回原图域算 measurement)。在维度切换处 \(d_{i-1} \neq d_i\),受 DAPS"早期随机噪声可纠正累积误差"启发,作者干脆放弃专门修正,直接 \(\bm{x}_{t_{i-1}} = \alpha_{t_{i-1}} \dot{\bm{U}}_i \bm{x}_\theta(\bm{x}_{t_i}, t_i) + \sigma_{t_{i-1}} \bm{\epsilon}_i\)。对 DAPS,先解优化问题 \(\hat{\bm{x}}_0^{t_i} = \arg\min_{\bar{\bm{x}}_0} \big( r_{t_i} \|\bar{\bm{x}}_0 - \tilde{\bm{x}}_0^{t_i}\|^2 + \|\bm{y} - \mathcal{A}(\bm{U}_i \bar{\bm{x}}_0)\|^2 \big)\),再用类似的 stochastic 采样到下一步。
- 设计动机:DPS 的梯度 trick 和 DAPS 的解耦轨迹都是为 pixel-space 设计的,作者只在 measurement operator 前加个 \(\bm{U}_i\) 上采器,就让它们在子空间和切换点都自洽——这是一个非常工程化但优雅的"算子改造"。
-
SubDAPS++ 的 deterministic 切换 + CG measurement:
- 功能:把 SubDAPS 在低 timestep 的伪迹和迭代成本同时砍掉。
- 核心思路:(a) Deterministic 切换。定义 \(h = \min\{i: d_{i-1} \neq d_i\}\)(最后一次维度变化的 index);当 \(i < h\)(已稳定到全分辨率)且 \(\|\bm{x}_\theta(\bm{x}_{t_i}, t_i) - \hat{\bm{x}}_0^{t_i}\|^2 \leq \tau\) 时,用 \(\bm{x}_{t_{i-1}} = \alpha_{t_{i-1}} \hat{\bm{x}}_0^{t_i} + \frac{\sigma_{t_{i-1}}}{\sigma_{t_i}}(\bm{x}_{t_i} - \alpha_{t_i} \hat{\bm{x}}_0^{t_i})\) 走 deterministic 更新,否则继续注入噪声。(b) 共轭梯度替 Langevin。SubDAPS 的 measurement update 解 Eq. (16)用 Langevin,慢且只适合可微算子;SubDAPS++ 改成 Fletcher-Reeves CG:每步用一阶 Taylor 展开线性化 \(\mathcal{A}(\bm{U}_i(\bar{\bm{x}}_0^{(j)} + \alpha \bm{d}_j))\) 得到闭式 line search \(\alpha_j = (\bm{g}_j^\top \bm{d}_j) / (r_{t_i} \bm{d}_j^\top \bm{d}_j + \bm{\omega}_j^\top \bm{\omega}_j)\),搜索方向用 \(\bm{d}_{j+1} = \bm{g}_{j+1} + \frac{\bm{g}_{j+1}^\top \bm{g}_{j+1}}{\bm{g}_j^\top \bm{g}_j} \bm{d}_j\) 更新。
- 设计动机:低 timestep 处随机噪声会破坏 diffusion prior 形成 artifact,作者用"维度已稳定 + 预测已收敛"两个条件刻画"该切换确定性更新"的时机;CG 的好处是闭式 line search 既适用线性也适用非线性 measurement,比 Langevin 既快又少超参。
-
不增加网络评估的 predictor-corrector 轨迹修正:
- 功能:在主循环结束后再过一遍轨迹,把 stochastic 主循环引入的偏差修掉。
- 核心思路:借鉴 UniPC 的二阶 corrector 形式:\(\bm{x}_{t_{i-1}}^c = \frac{\sigma_{t_{i-1}}}{\sigma_{t_i}} \dot{\bm{U}}_i \bm{x}_{t_i}^c - \left(\sigma_{t_{i-1}} \frac{\alpha_{t_i}}{\sigma_{t_i}} - \alpha_{t_{i-1}}\right) \hat{\bm{x}}_0^{t_{i-1}} - \sigma_{t_{i-1}} \mathcal{I}_i \frac{\hat{\bm{x}}_0^{t_{i-1}} - \dot{\bm{U}}_i \hat{\bm{x}}_0^{t_i}}{\lambda_{t_{i-1}} - \lambda_{t_i}}\),其中 \(\lambda_t = \log(\alpha_t/\sigma_t)\) 是 half log-SNR。这一步完全复用主循环里缓存的 \(\hat{\bm{x}}_0^{t_i}\),不调用神经网络。
- 设计动机:主循环中为防发散加了噪声,但噪声会拉宽轨迹偏差;UniPC 风格的 corrector 用解析公式把状态拉回更"标准"的扩散轨迹,几乎免费就能涨点。
损失函数 / 训练策略¶
- 训练:在 Dhariwal-Nichol 预训练 pixel DM 基础上 finetune,目标里 \(\bm{x}_0\)、\(\tilde{\bm{U}}^\top \bm{x}_0\)、\(\hat{\bm{U}}^\top \bm{x}_0\) 三档分辨率联合 denoise,让单个网络可处理 \(256/128/64\) 三种分辨率;只 finetune 一次,所有下游任务共享。
- 推理:唯一与 SubDAPS 不同的是把 multi-step ODE solver 估 \(\tilde{\bm{x}}_0\) 退化为单次网络评估 \(\tilde{\bm{x}}_0 = \bm{x}_\theta(\bm{x}_{t_i}, t_i)\);measurement consistency 用 \(J\) 步 CG;切换阈值 \(\tau\)、上采索引 \(h\)、噪声水平 \(\sigma\)、迭代数 \(N\) 都是超参。
实验关键数据¶
主实验¶
| 任务 (256² FFHQ) | 类型 | DiffPIR | MGPS | DAPS | AdaPS | LatentDAPS | SubDAPS++ |
|---|---|---|---|---|---|---|---|
| Inpainting 70% rand, PSNR ↑ | pixel/latent/dynamic | 32.16 | 31.41 | 30.68 | 32.34 | 31.17 | 32.21 |
| Inpainting 70% rand, LPIPS ↓ | 0.052 | 0.050 | 0.073 | 0.057 | 0.090 | 0.056 | |
| SR ×4, PSNR ↑ | 27.64 | 27.58 | 28.88 | 27.34 | 28.56 | 29.34 | |
| SR ×4, LPIPS ↓ | 0.116 | 0.110 | 0.162 | 0.090 | 0.174 | 0.157 | |
| Gaussian Deblur (FFHQ), PSNR ↑ | 28.07 | 27.78 | 28.91 | 27.02 | 28.50 | — (≈ DAPS) | |
| Motion Deblur (FFHQ), PSNR ↑ | 26.95 | 26.82 | 28.27 | 27.06 | 27.58 | 28.28 |
| 任务 (256² ImageNet) | 类型 | DPS | DAPS | LatentDAPS | SubDAPS++ |
|---|---|---|---|---|---|
| Inpainting 70%, PSNR ↑ | 25.33 | 27.63 | 27.33 | 28.61 | |
| Inpainting 70%, FID ↓ | 141.99 | 56.73 | 85.24 | 49.15 | |
| SR ×4, PSNR ↑ | 21.68 | 25.54 | 25.43 | 25.79 | |
| SR ×4, LPIPS ↓ | 0.432 | 0.354 | 0.377 | 0.358 |
消融实验¶
| 配置 | 说明 |
|---|---|
| SubDPS | 朴素移植 DPS 到动态分辨率,性能与 DPS 同档(最弱),主要价值是验证框架可用 |
| SubDAPS | 直接得到与 DAPS 相当或略好的结果,且因子空间提速 |
| SubDAPS + CG 替 Langevin | measurement 更新更快、对非线性算子兼容 |
| SubDAPS + deterministic 切换 | 减少低 timestep 伪迹,PSNR 涨、LPIPS 降 |
| SubDAPS + corrector | 不调网络的二阶修正,几乎免费再涨一档 |
| 全堆 = SubDAPS++ | 在 6 类任务里多数指标第一或第二 |
关键发现¶
- 动态分辨率比 latent 路线更适合复原任务:避免了 VAE 编/解码反复带来的 overhead,且没有 VAE 重建瓶颈,所以 SubDAPS++ 比 LatentDAPS 在几乎所有数据集上同时更快更准。
- "前期低分辨率画结构、后期全分辨率补细节"对 ISR / inpainting 这种本来就需要全局到局部的任务很顺手;motion deblur 这种全局退化场景受益尤其明显。
- 把"切换 stochastic→deterministic"用预测收敛性 + 维度稳定性两个条件控制,是一个比"按 timestep 切"更鲁棒的策略——它把"剩多少噪声该走 SDE 还是 ODE"交给当前轨迹自己判断。
- CG + 一阶 Taylor 闭式 line search 让 measurement 更新对任意可微 \(\mathcal{A}\) 都能跑(不只线性),扩展性比 DDRM/DDNM 那条专为线性算子设计的路线更强。
亮点与洞察¶
- "把动态分辨率扩散从生成借给复原"这个跨界迁移是这篇最具洞察力的一笔——同一个思路不同任务下意义完全不同,复原刚好契合"先粗后细"的天然结构。
- 三件 patch(CG、切换、corrector)各自来自不同邻居(数值优化 / 采样器、deterministic ODE 切换、UniPC predictor-corrector),但作者把它们组合在一起且互不冲突,是工程组合的典范。
- 共享一个 finetuned 多分辨率 DM 来服务所有任务和所有分辨率,使部署时无需为每个分辨率训新模型,对工业落地友好。
- 对 measurement 用 CG + 一阶 Taylor 闭式步长这个细节挺漂亮——既保留共轭梯度的快收敛,又让代码实现对任何可微算子都通用,迁移性好。
局限与展望¶
- 动态分辨率只到三档;面对更高分辨率(\(1024^2\) 以上)是否需要更多层 + 更复杂上采矩阵,论文没探讨。
- 切换阈值 \(\tau\) 是固定超参,作者承认对一些任务需要单独调;自适应 \(\tau\) 应该是下一个方向。
- Corrector 是事后批量做的,没有在生成途中纠错;如果出现严重 hallucination 后期已经没法挽回。
- 与最新 LDM 复原(如基于 SD 的方法)的对比偏少;尤其在自然图像 super-resolution 上,SD-based 在感知指标上常有优势。
相关工作与启发¶
- vs DPS / DAPS:本文几乎是"用动态分辨率重写 DPS/DAPS"——保留它们的 measurement 修正思路,但把每一步搬到合适维度,加速且不掉点。
- vs PSLD / ReSample / LatentDAPS:latent 路线靠 VAE 降维,付出 encoder/decoder 反复调用的代价;动态分辨率不需要 VAE,所以速度和质量更平衡。
- vs Subspace DM / UDPM / DiMR / Fresco:那些是动态分辨率的"生成版",本文是首次系统化做"复原版",并解决了 measurement consistency 在维度切换处的协调难题。
- vs UniPC:UniPC 的 corrector 给确定性 ODE 用;本文把它移植到 stochastic 主循环结束后,作为"事后免费纠错",是一种聪明的范式跨界。
- 启发:动态分辨率思想也可以反过来用——比如视频生成中按时间段切空间分辨率、3D 重建中按 LoD 切体素分辨率,本质都是"先粗后细"的归纳偏置。
评分¶
- 新颖性: ⭐⭐⭐⭐ 把动态分辨率 DM 首次用于一般 image restoration,并把 DPS/DAPS 一起改造。
- 实验充分度: ⭐⭐⭐⭐⭐ 4 线性 + 2 非线性任务 × FFHQ/ImageNet 双数据集 × 三类 baseline(pixel/latent/dynamic)全套对比。
- 写作质量: ⭐⭐⭐⭐ 算法伪代码、公式推导、合理切换条件都讲得清楚;图示稍少。
- 价值: ⭐⭐⭐⭐ 推理同时快又准,且不靠 VAE,对实际部署是真正的提速方案。