LearnIR:基于后验采样的图像恢复新范式,融合生成先验与观测引导 1. 项目概述当图像恢复遇见后验采样最近在整理ICLR 2026的论文列表一篇名为“LearnIR: Learning to Restore Images via Posterior Sampling”的工作引起了我的注意。这个标题本身就很有意思它把“学习”和“后验采样”这两个在图像生成领域很火的概念直接搬到了图像恢复这个传统任务上。简单来说LearnIR的目标不是生成全新的图像而是从一张受损的、有瑕疵的输入图像比如带阴影的人脸、有雾的场景中恢复出清晰、干净的版本。它解决的核心痛点在于传统的图像恢复方法无论是基于模型优化的还是早期基于深度学习的往往在去除噪声、阴影、雾气的同时容易丢失细节、产生模糊或者引入不自然的伪影。而LearnIR的思路是把恢复过程看作一个“从受损观测中采样出最可能的干净图像”的贝叶斯推断问题。这听起来有点抽象我打个比方。假设你有一张被雨滴模糊的旧照片观测你知道它原本应该是一张清晰的人脸潜在的真实图像。但“清晰的人脸”有无数种可能有的皮肤光滑有的有皱纹有的表情严肃有的在微笑。一个理想的恢复算法不应该只给你一张“平均脸”而应该给你一张既符合模糊观测比如五官的大致位置又符合我们对“清晰人脸”先验认知比如皮肤纹理自然、表情合理的图像。LearnIR做的就是这个它利用一个在大规模干净图像上预训练好的生成模型比如扩散模型或GAN作为“先验”来告诉我们什么样的图像是合理的、自然的然后它通过一个精心设计的后验采样过程从这个先验分布中找出那些与我们的受损观测最匹配的样本。最终这个被采样出来的图像就是恢复的结果。这个方法的应用场景非常直接尤其是在人脸图像处理和户外视觉中。比如在手机摄影或安防监控中人脸可能因为侧光、帽檐遮挡而产生难看的阴影LearnIR可以尝试去除这些阴影还原均匀光照下的人脸。再比如在自动驾驶或无人机航拍中雾霾会严重降低图像的对比度和能见度LearnIR的目标就是提升图像的“去雾能见度测量”指标让远处的物体和细节重新显现。它的影响在于提供了一种将前沿生成式AI的“创造能力”与经典图像恢复的“修复能力”相结合的新范式有望在保持高保真度的前提下实现更鲁棒、更自然的恢复效果。2. 核心思路拆解为什么是后验采样要理解LearnIR我们得先抛开代码看看它背后的数学直觉。图像恢复问题通常被表述为一个逆问题我们观测到一张退化图像 y它是由原始干净图像 x 经过一个退化过程 H比如添加阴影、雾气、噪声后得到的即 y H(x) n其中 n 是噪声。我们的目标是从 y 中估计出 x。这是一个病态问题因为对于同一个 y可能有无数个 x 都能通过 H 映射到它附近。2.1 从最大后验估计到后验采样传统方法比如基于深度学习的方法通常会训练一个神经网络 f_θ试图直接学习从 y 到 x 的映射即 x̂ f_θ(y)。这可以看作是在用神经网络近似求解最大后验估计x̂ argmax_x log p(x|y)。根据贝叶斯定理p(x|y) ∝ p(y|x) * p(x)。其中 p(y|x) 是似然项由退化模型 H 决定p(x) 是先验项代表我们对干净图像的认知。这里的关键在于 p(x)。早期方法可能使用简单的先验如图像梯度稀疏性。而LearnIR的核心创新在于它使用一个强大的、在大规模数据上预训练好的生成模型例如扩散模型来隐式或显式地表示这个先验分布 p(x)。这个生成模型已经学会了“自然图像应该长什么样”。但是LearnIR没有止步于寻找那个概率最大的 x即MAP估计。因为对于复杂的退化如非均匀阴影、浓雾MAP解可能只是一个平庸的、过度平滑的结果。相反LearnIR转向了后验采样它试图从完整的后验分布 p(x|y) 中抽取样本。这样恢复出的图像不仅符合观测 y而且是从先验 p(x) 中“生长”出来的因此会自然地继承先验模型所捕获的丰富纹理和结构细节避免了过度平滑。2.2 LearnIR的算法骨架那么如何从一个我们甚至写不出具体表达式的复杂后验分布 p(x|y) 中采样呢LearnIR借鉴并改进了扩散模型中的后验采样技术。一个典型的流程可以概括为以下几个关键步骤构建退化感知的生成过程假设我们有一个预训练好的去噪扩散概率模型。在纯生成任务中它从一个随机噪声开始逐步去噪生成图像。在LearnIR中我们需要将这个生成过程“引导”向我们的观测 y。这通常通过在每一步的去噪过程中加入一个基于 y 的梯度项来实现这个梯度项来自于对数似然 log p(y|x_t) 对当前噪声图像 x_t 的梯度。这个项的作用是在每一步都轻微地调整生成方向使其产生的图像经过退化 H 后能尽可能接近观测 y。设计似然项似然项 p(y|x) 定义了“什么样的 x 能产生 y”。对于去阴影H 可能是一个与光照相关的乘法性或卷积性操作对于去雾H 可能遵循大气散射模型。LearnIR需要为每种退化任务定义一个可微分的似然函数。例如对于加性高斯噪声退化似然项可以表示为负的均方误差。这个似然项是连接生成先验和具体观测的桥梁。执行条件采样有了引导项采样过程就从无条件生成变成了以 y 为条件的生成。算法从噪声开始在每一步去噪时不仅考虑扩散模型本身预测的干净方向还加上似然梯度带来的“拉力”将样本拉向与观测一致的区域。经过数十步或数百步迭代最终采样得到一个既符合先验 p(x)看起来自然又符合似然 p(y|x)与观测 y 一致的图像 x̂。注意这里的“采样”并不意味着每次运行都会得到截然不同的结果。由于观测 y 提供了很强的约束对于大多数图像恢复任务后验分布 p(x|y) 通常是尖锐的即只有一个主要模式。因此多次采样得到的结果会非常相似都围绕着那个最可能的干净图像。这种方法的稳定性对于实际应用至关重要。2.3 与“即插即用”先验的区别你可能听说过“即插即用先验”方法它也是将深度学习先验如去噪器嵌入到迭代优化框架中。LearnIR与它的主要区别在于范式。PnP是在优化一个确定的目标函数如数据保真项正则项每次迭代调用一个去噪器作为近端算子。而LearnIR是在执行一个随机采样过程。这个区别带来的好处是采样过程有时能更好地探索解空间避免陷入平庸的局部最优解并且在理论上能产生服从真实后验分布的样本其多样性如果存在的话可以反映恢复问题本身的不确定性。3. 关键技术细节与实现解析理解了宏观思路我们深入到实现层面。要让LearnIR真正work起来有几个技术细节必须处理好这也是论文和代码中需要精雕细琢的地方。3.1 先验模型的选择与适配LearnIR需要一个强大的生成模型作为先验。目前的主流选择是潜扩散模型。为什么是它强大的生成能力LDMs在生成高保真、多样化图像方面表现出色其潜空间先验能捕捉丰富的语义和纹理信息。可导的采样过程扩散模型的采样去噪过程是完全可微分的这使得我们可以轻松地计算并注入来自似然项的梯度。成熟的引导技术Classifier-Guidance或Classifier-Free Guidance技术已经为在生成过程中加入条件信号提供了成熟的框架可以很自然地迁移到以观测 y 为条件的场景。在实现时我们直接使用在大型数据集如LAION上预训练好的开源LDM例如Stable Diffusion的编码器/解码器和UNet。关键步骤是冻结这个预训练模型的所有参数。我们绝不微调它因为我们的目标是利用它已经学到的通用图像先验。整个LearnIR算法的“学习”部分其实主要体现在对采样过程的引导策略上而不是改变先验模型本身。3.2 退化似然函数的设计这是将LearnIR应用于具体任务去阴影、去雾的核心。我们需要为每种退化定义一个可微的log p(y|x)。对于人脸去阴影 阴影通常被建模为光照变化。一个简化模型是y (x ⊙ t) n其中 ⊙ 是逐元素乘法t 是未知的阴影图值在0到1之间n 是噪声。似然设计如果我们能估计或假设一个简单的阴影模型可以构建似然。但更实用的方法是采用半盲或盲的方式。LearnIR可能采用一种基于物理的简化形式例如假设阴影导致局部亮度降低和颜色失真。那么似然项可以鼓励恢复的图像 x 在局部区域与 y 相比具有一致的色彩和纹理同时允许整体亮度变化。具体实现上可能会使用感知损失或基于预训练网络的特征匹配损失作为似然项的替代或补充因为精确的物理模型 H 往往未知。实操心得在人脸去阴影任务中直接使用像素级MSE作为似然项效果通常不好因为它会强迫恢复结果在阴影区域也与带阴影的输入一致这违背了去阴影的目标。更好的做法是使用在阴影区域给予较小权重的MSE或者结合人脸解析图分割出皮肤、头发、背景等区域对不同区域采用不同的保真度约束。对于图像去雾 大气散射模型是经典描述y x ⊙ t A(1 - t)其中 A 是全球大气光t 是透射率图。似然设计我们可以利用这个模型。假设我们能从一个粗糙的深度图或通过简单方法如暗通道先验初步估计出透射率 t‘ 和大气光 A’那么可以构建一个数据保真项L_fidelity || y - (x ⊙ t‘ A’(1 - t‘)) ||^2。这个项的负值就可以作为 log p(y|x) 的一部分。同时为了稳定优化通常还会加入对 t 的正则项如平滑性约束。注意事项这里的 t‘ 和 A’ 是初始估计不一定准确。在LearnIR的迭代采样过程中甚至可以设计一个简单的子网络或规则随着 x 的更新而同步优化 t形成一个交替优化过程。但这会增加复杂性。一个更稳定的做法是使用一个固定的、基于经典方法得到的粗略估计作为引导。3.3 引导采样与梯度缩放这是算法的心脏部分。我们以DDIM采样器为例说明如何将似然引导融入其中。无条件DDIM的更新规则是x_{t-1} sqrt(alpha_{t-1}) * f_θ(x_t, t) sqrt(1 - alpha_{t-1} - sigma_t^2) * ε_θ(x_t, t) sigma_t * z其中f_θ是预测的干净数据ε_θ是预测的噪声。在LearnIR中我们需要一个条件版的更新。一种常见方法是使用梯度引导x_{t-1} [无条件更新项] s * ∇_{x_t} log p(y | f_θ(x_t, t))这里s是一个引导尺度它是整个方法中最关键的超参数之一。梯度计算∇_{x_t} log p(y | f_θ(x_t, t))。注意梯度是对x_t求的但似然函数是关于“预测的干净图像”f_θ(x_t, t)计算的。这意味着我们需要通过扩散模型的UNet进行一次前向传播得到f_θ计算似然损失然后反向传播梯度回到x_t。这带来了额外的计算开销。引导尺度 s这个参数控制着观测 y 对生成过程的“拉力”强度。s太小引导力不足恢复结果可能忽略观测看起来像一张无关的自然图像。s太大引导力过强恢复结果会过度拟合观测 y导致无法有效去除退化例如阴影、雾依然存在甚至引入噪声和伪影。调参技巧s 通常需要根据任务和退化强度进行仔细调整。一个经验法则是可以从一个较小的值如0.1开始观察恢复结果。如果退化去除不足缓慢增大 s如果图像开始失真或出现伪影则减小 s。论文中可能会采用退火策略即在采样早期t较大时图像噪声多使用较小的 s让先验主导在采样后期t较小时图像接近干净使用较大的 s让观测数据主导。3.4 实现流程与伪代码结合以上几点我们可以勾勒出LearnIR对一个输入退化图像 y 进行恢复的端到端流程预处理将观测图像 y 归一化并编码到LDM的潜空间如果使用LDM的话得到潜编码 z_y。对于去雾任务可能并行计算初始透射率图 t‘ 和大气光 A’。初始化从标准正态分布中采样一个随机噪声 z_T作为采样序列的起点。迭代采样对于从 T 到 1 的每一个时间步 t a.预测将当前噪声潜编码 z_t 和时间步 t 输入冻结的LDM UNet得到对干净潜编码的预测f_θ(z_t, t)和噪声预测ε_θ(z_t, t)。 b.计算似然梯度将预测的干净潜编码f_θ(z_t, t)解码到像素空间得到图像x_pred。根据任务去阴影/去雾计算似然损失L -log p(y | x_pred)。通过自动微分计算该损失对z_t的梯度g_t。 c.引导更新按照梯度引导的DDIM更新规则计算下一步的潜编码z_{t-1} DDIM_Update(z_t, t, ε_θ) s_t * g_t其中s_t是当前时间步的引导尺度可能随时间退火。后处理当迭代进行到 t0 时得到最终的潜编码 z_0。将其通过LDM的解码器得到恢复的像素级图像 x̂。进行必要的后处理如反归一化、裁剪。# 伪代码示意核心采样循环 def learnir_sampler(ldm_model, y_obs, total_steps50, guidance_scale_scheduler): # y_obs: 观测到的退化图像 # ldm_model: 冻结的预训练潜扩散模型包含编码器、解码器、UNet # 1. 将观测图像编码到潜空间可选也可直接在像素空间操作 # z_y ldm_model.encode(y_obs) # 为简化假设我们在像素空间操作x_t 即像素图像 # 2. 初始化从噪声开始 x_t torch.randn_like(y_obs) for step, t in enumerate(timesteps): # 从最大噪声到最小噪声 # a. 模型预测 with torch.no_grad(): predicted_clean ldm_model.predict_clean(x_t, t) # f_θ(x_t, t) # b. 计算似然梯度需要梯度 # 解码如果在潜空间则需要 # x_pred ldm_model.decode(predicted_clean) x_pred predicted_clean # 假设像素空间 # 计算损失这里以去雾的简化MSE似然为例 # 假设我们有一个估计的透射率 t_est 和大气光 A t_est, A estimate_transmission_and_airlight(y_obs) # 预处理得到 y_reconstructed x_pred * t_est A * (1 - t_est) loss F.mse_loss(y_reconstructed, y_obs) # 计算梯度 grad torch.autograd.grad(loss, x_t, retain_graphTrue)[0] # c. 引导更新 # 首先计算无条件的DDIM更新 unconditional_update ddim_update(x_t, t, ldm_model) # 获取当前步的引导尺度 s guidance_scale_scheduler(step, total_steps) # 应用引导 x_t_minus_1 unconditional_update s * grad x_t x_t_minus_1 # 3. 最终结果 restored_image x_t # 当t0时 return restored_image4. 实战应用人脸去阴影与图像去雾理论说再多不如看看实际效果。我们分别针对人脸去阴影和图像去雾两个场景拆解LearnIR的具体应用方式和需要注意的坑。4.1 场景一人脸去阴影实战人脸去阴影的难点在于阴影往往是非均匀的、颜色复杂的并且与面部五官结构纠缠在一起。简单的亮度调整会失败暴力去噪会丢失皮肤纹理。数据准备与预处理观测图像 y输入带阴影的人脸图像。需要对齐和裁剪为人脸区域分辨率建议调整到与LDM先验模型兼容的尺寸如512x512。先验模型选择一个在丰富人脸数据上微调过的Stable Diffusion模型作为先验效果会比通用模型更好因为它对人脸结构和纹理的先验更强。似然设计关键如前所述像素级MSE不合适。可以采用感知损失使用VGG或FaceNet网络计算 y 和 x_pred 在特征空间的距离。这允许亮度变化但保持内容和纹理一致。阴影感知掩码用一个简单的阴影检测算法基于颜色或亮度阈值为图像生成一个粗略的阴影掩码 M阴影区域为1非阴影区域为0。似然项可以设计为L || (1 - M) ⊙ (y - x_pred) ||^2 λ * || M ⊙ (y - x_pred) ||^2其中λ 是一个小于1的权重如0.1意味着我们对阴影区域的像素保真度要求更低给模型更多“修复”空间。身份保持损失对于人脸确保恢复前后身份不变很重要。可以加入基于ArcFace等面部识别网络的特征一致性损失。采样参数调优引导尺度 s从0.3开始尝试。对于浓重阴影可能需要提高到0.5-0.8以提供足够强的“纠正力”。观察阴影区域是否被有效提亮同时非阴影区域是否保持自然。采样步数通常50-100步足以获得高质量结果。更多步数提升有限但计算成本线性增加。CFG Scale如果使用的LDM本身支持Classifier-Free Guidance其内部的无条件/有条件引导尺度也需要调整。通常将其设置为一个中等值如7.5然后主要调节我们外部的似然引导尺度 s。踩坑实录过度平滑如果结果人脸看起来像塑料缺乏皮肤毛孔和毛发细节说明先验模型的引导力太弱或者似然项的约束太强λ太小导致模型倾向于输出一个“安全”的平均脸。解决尝试降低似然引导尺度 s或降低感知损失的权重让生成先验发挥更大作用。阴影残留或伪影阴影没有完全去除或在阴影边界出现光晕。解决首先检查阴影掩码 M 是否准确不准确的掩码会误导模型。其次可以尝试增加引导尺度 s或者使用更精确的退化模型如果已知光照方向可尝试建模更精确的阴影形成似然。身份改变恢复后的人脸看起来像另一个人。这是人脸编辑任务中不希望出现的。解决必须引入身份保持损失。在计算似然梯度时将此损失的梯度也加进去权重需要仔细平衡以确保在去除阴影的同时锁定身份特征。4.2 场景二图像去雾实战去雾的目标是恢复场景的对比度和远处细节。LearnIR在此任务上的优势在于其生成先验能“幻想”出被浓雾掩盖的合理纹理而不是简单地做全局对比度拉伸。数据准备与预处理观测图像 y输入有雾图像。透射率与大气光估计这是最关键的一步。虽然LearnIR可以在采样中优化这些参数但一个好的初始值能极大加速收敛、提升稳定性。推荐使用暗通道先验快速获取粗糙的 t_est 和 A_est。OpenCV等库有简单实现。A_est 通常取暗通道图中最亮的前0.1%像素的平均值。先验模型使用在自然场景数据集如COCO, ADE20K上预训练的LDM因为去雾涉及通用场景。似然函数与实现 使用基于大气散射模型的似然L_fidelity || y - (x_pred ⊙ t_est A_est ⊙ (1 - t_est)) ||^2。 为了促进透射图的平滑和边缘对齐可以加入一个总变分正则项L_tv ||∇t_est||。总损失为L L_fidelity β * L_tv。 在LearnIR的每一步我们用当前的 x_pred 可以重新估算一次透射率例如通过t 1 - (暗通道(x_pred) / A_est)的变体形成一个x_pred和t交替优化的内循环但这会显著增加计算量。更简单稳定的做法是使用预处理得到的固定 t_est 和 A_est。采样与“去雾能见度测量”引导尺度去雾通常需要较强的数据引导因为雾的物理模型相对明确。s 可以从0.5开始尝试对于浓雾可能需要0.8以上。能见度评估去雾效果的一个直观衡量是“去雾能见度测量”。这并非一个标准指标但我们可以从几个方面定性评估边缘锐度恢复图像中物体边缘是否比原图更清晰。细节再现远处原本模糊的物体如窗户、树叶纹理是否显现出来。颜色自然度去雾后颜色是否鲜艳自然有无色偏尤其是避免常见的蓝色调伪影。无光环效应在景深突变处如建筑物与天空交界是否出现明显的光环。实操心得大气光估计不准A_est 估计偏色会导致整个恢复图像颜色失真。如果估计的A是蓝色去雾后整张图可能偏黄。解决可以尝试多种大气光估计算法如四分法、最亮像素法取平均或者在采样后期当x_pred较清晰时用x_pred重新估计A进行迭代修正。透射图过于粗糙DCP估计的t图块状效应明显导致去雾结果有斑块。解决对初始t_est进行引导滤波或双边滤波在平滑的同时保持边缘。也可以将t的优化正式纳入LearnIR框架在采样过程中用一个轻量级网络或可微滤波器对t进行细化其梯度通过似然项反向传播。计算成本LearnIR的迭代采样加上每一步的梯度计算比单次前向传播的CNN去雾网络慢得多可能慢100倍以上。优化使用更大的引导步长减少采样步数在较低分辨率潜空间进行操作或采用更高效的采样器如DPM-Solver可以加速。但对于实时应用目前仍不现实更适合对质量要求极高的离线处理。5. 常见问题、局限性与未来方向尽管LearnIR思路新颖效果也令人印象深刻但在实际研究和应用中你肯定会遇到一些共性的问题和挑战。5.1 典型问题排查指南问题现象可能原因排查与解决思路恢复结果模糊缺乏细节1. 引导尺度s过大。2. 先验模型能力不足或与任务域不匹配。3. 采样步数太少。1. 逐步减小s观察细节是否恢复。2. 尝试更换或微调先验模型如在人脸数据上微调SD用于去阴影。3. 增加采样步数如从50步增至100步。结果出现不相关纹理或物体“幻觉”过度1. 引导尺度s过小。2. 似然项太弱无法将生成约束到观测数据。3. 退化太严重观测信息不足。1. 逐步增大s加强数据约束。2. 检查并加强似然项如使用更精确的物理模型增加损失权重。3. 对于信息丢失严重的区域后验采样本身不确定性高可考虑引入空间变体的引导尺度在信息缺失区域降低s。采样过程不稳定结果差异大1. 梯度g_t数值不稳定或爆炸。2. 引导尺度s设置不当。3. 随机种子影响。1. 对梯度进行裁剪clipping或归一化normalization。2. 采用梯度缩放如Adam优化器中的自适应学习率思想或退火策略。3. 后验采样本身具有随机性对于确定性要求高的场景可以固定随机种子并考虑使用DDIM等确定性采样器。计算速度极慢1. 采样步数多。2. 每一步都需要梯度计算和反向传播。3. 模型庞大。1. 尝试使用加速采样器如DPM-Solver, UniPC将步数减至20-30步。2. 探索梯度近似方法避免完整的反向传播。3. 使用更小的先验模型如小型LDM或知识蒸馏技术。针对特定退化效果不佳1. 似然函数未能准确建模退化过程。2. 先验模型缺乏相关领域的知识。1. 深入分析退化物理过程设计更精确的似然项如非均匀运动模糊核、复杂噪声模型。2. 在特定领域数据上对先验模型进行轻量微调LoRA注入领域知识。5.2 LearnIR的局限性认识到方法的边界同样重要计算成本高昂这是后验采样类方法的通病无法用于实时或移动端应用。对先验模型的依赖恢复质量上限受限于所使用的生成先验。如果先验模型在某个概念上存在偏见或缺陷例如对某些罕见物体生成效果差恢复结果也会受影响。似然模型的设计门槛对于未知或复杂的退化过程设计一个准确的、可微的似然函数具有挑战性。不准确的似然模型会导致引导方向错误。超参数敏感引导尺度s、损失权重等超参数需要针对不同任务甚至不同图像进行调整自动化程度有待提高。不确定性量化虽然后验采样理论上能反映不确定性但如何从少数样本中有效提取并呈现这种不确定性例如指出图像中哪些区域的恢复结果置信度低仍是一个开放问题。5.3 可能的改进与扩展方向基于这些局限社区和后续研究可能的发展方向包括加速采样研究专门针对条件采样的快速算法减少迭代步数或设计一次前向传播就能近似后验采样的网络结构。学习似然引导不手动设计似然函数而是用一个神经网络来学习从观测 y 和中间状态 x_t 到修正梯度的映射从而适应更广泛的未知退化。任务特定先验微调使用LoRA、Adapter等参数高效微调技术让通用先验模型快速适应特定恢复任务如水下图像、老照片修复提升先验的相关性。与判别式模型结合将LearnIR作为一个“精修”模块放在一个快速判别式网络如U-Net的后面。先用快网络做粗恢复再用LearnIR进行细节增强和美化平衡速度与质量。探索更优的后验采样算法除了基于扩散模型引导的方法是否可以借鉴MCMC、变分推断中的最新进展设计更稳定、更高效的后验采样器在我自己尝试复现和实验的过程中最大的体会是LearnIR这类方法将图像恢复从“确定性映射”的范式推向了“概率性推断”的范式。它不再追求一个唯一的“正确”答案而是承认在信息缺失的情况下存在一组“合理”的答案。这种思路对于许多真实世界的恢复问题如老照片修复、严重遮挡还原可能更为本质。虽然目前它在效率上还不尽如人意但其在恢复结果的视觉保真度和自然度上展现的潜力无疑为图像恢复领域打开了一扇新的大门。对于研究者而言关键是如何降低其计算成本并提升其鲁棒性对于实践者则可以将其作为处理高价值、对质量有极致要求的图像的终极武器。