Learning Deep CNN Denoiser Prior for Image Restoration论文阅读
Learning Deep CNN Denoiser Prior for Image Restoration
-
-
- 1. 研究目标与产业意义
-
- 1.1 研究目标
-
1.2 实际意义
- 2. 创新方法:CNN去噪先验与HQS框架
-
- 2.1 核心框架:HQS变量分裂与去噪器先验嵌入
-
2.2 CNN去噪器架构设计
-
- 2.2.1 扩张卷积(Dilated Convolution)设计
- 2.2.2 加速训练技术
- 2.2.3 边界伪影抑制策略
-
2.3 与传统方法的对比优势
-
公式总结
- 3. 实验设计与结果分析
-
- 3.1 图像去噪实验
-
3.2 图像去模糊实验
-
3.3 单图像超分辨率实验
- 4. 未来方向与产业机会
-
- 4.1 学术挑战
-
4.2 产业机会
- 5. 批判性评价
-
- 5.1 不足
-
5.2 待验证问题
- 6. 实践启示与背景补充
-
- 6.1 核心创新点
-
6.2 必备背景知识
-
1. 研究目标与产业意义
1.1 研究目标
论文旨在解决图像恢复 (Image Restoration, IR)中的核心矛盾:
- 基于模型的优化方法 (如BM3D)灵活但计算成本高;
- 判别学习方法 (如CNN)高效但任务泛化性差。
作者提出一种融合框架 :利用变量分割技术(如HQS),将训练好的CNN去噪器作为模块化先验 嵌入优化框架,以解决多种逆问题(如去模糊、超分辨率)。
1.2 实际意义
- 产业应用 :提升图像恢复任务的效率与质量,适用于医疗影像(如MRI重建)、安防监控(低光照增强)、卫星图像处理等。
- 技术价值 :为轻量级实时图像处理系统提供新思路,推动边缘计算(如手机端图像增强)的发展。
2. 创新方法:CNN去噪先验与HQS框架
2.1 核心框架:HQS变量分裂与去噪器先验嵌入
通过半二次分裂(Half Quadratic Splitting, HQS) 将图像恢复问题分解为两个交替求解的子问题:
- 保真项子问题 (与退化模型相关);
- 正则化子问题 (等效为去噪任务)。
原始优化问题 (公式(2)):
\hat{x}=\arg\min_{x}\frac{1}{2}\left\|y-H x\right\|^{2}+\lambda\Phi(x) \quad (2)
引入辅助变量 z 后(公式(5)):
\mathcal{L}_{\mu}(x,z)=\frac{1}{2}\left\|y-H x\right\|^{2}+\lambda\Phi(z)+\frac{\mu}{2}\left\|z-x\right\|^{2} \quad (5)
迭代求解过程 (公式(6a)-(6b)):
\begin{cases} x_{k+1} = \arg\min_{x} \|y-H x\|^{2} + \mu \|x - z_k\|^{2} & \text{(6a)} \\ z_{k+1} = \arg\min_{z} \frac{\mu}{2} \|z - x_{k+1}\|^{2} + \lambda \Phi(z) & \text{(6b)} \end{cases}
关键创新(公式(9)) :
将子问题(6b)等价转化为高斯去噪任务 :
z_{k+1} = \text{Denoiser}(x_{k+1}, \sqrt{\lambda/\mu}) \quad (9)
此处 \sqrt{\lambda/\mu} 控制去噪强度(噪声标准差)。正则化项 \Phi(z) 被替换为预训练的CNN去噪器 ,无需显式定义先验模型。
代码实现 :
% 参数初始化(第26-32行)
totalIter = 30; % 迭代次数
modelSigma1 = 49; % 初始噪声水平 (σ_max)
modelSigma2 = 13; % 终止噪声水平 (σ_min)
modelSigmaS = logspace(log10(modelSigma1), log10(modelSigma2), totalIter); % 噪声水平衰减序列
% HQS迭代核心(第69-80行)
for itern = 1:totalIter
% 子问题(6a):保真项求解(FFT加速)
rho = lamda*255^2/(modelSigmaS(itern)^2); % 计算当前μ (ρ = μ)
z = real(ifft2((upperleft + rho*fft2(z))./(denominator + rho)));
% 子问题(6b):调用预训练CNN去噪器
[net] = loadmodel(modelSigmaS(itern), CNNdenoiser);
res = vl_simplenn(net, z, [], [], 'conserveMemory', true, 'mode', 'test');
z = z - res(end).x; % 残差学习:z_{k+1} = z - Denoiser(z)
end
matlab

2.2 CNN去噪器架构设计
论文图1所示网络包含三大模块:

2.2.1 扩张卷积(Dilated Convolution)设计
- 目的 :扩大感受野(33×33)而不增加网络深度或参数量
- 层结构 (7层扩张率序列):
dilation = [1, 2, 3, 4, 3, 2, 1] - 等效感受野计算 :
- 传统3×3卷积需16层达到33×33感受野
- 本文仅需7层(计算效率提升2倍以上)
代码中的模型加载(第73行) :
[net] = loadmodel(modelSigmaS(itern), CNNdenoiser); % 按噪声水平加载预训练模型
matlab
预训练模型存储在
modelgray.mat(灰度)和modelcolor.mat(彩色),包含25个噪声级别(σ=0,2,…,50)的CNN参数。
2.2.2 加速训练技术
- 批归一化(Batch Normalization) :加速收敛,稳定梯度
- 残差学习(Residual Learning) :
网络直接预测噪声残差 \textbf{v} = f(y;\Theta),输出为 \hat{x} = y - \textbf{v}
损失函数(公式(10)) :
\ell(\Theta)=\frac{1}{2N}\sum_{i=1}^{N}\|f(y_{i};\Theta) - (y_{i}-x_{i})\|_{F}^{2} \quad (10)
其中 (y_i, x_i) 为噪声-干净图像对。
2.2.3 边界伪影抑制策略
- 训练数据裁剪 :使用35×35小块(而非整图) , 减少边界伪影。
- 零填充(Zero Padding) :配合扩张卷积边界处理
% 代码中的输入预处理(第45行)
y = imfilter(im2double(x), k, 'circular', 'conv') + sigma*randn(size(x)); % 使用圆形卷积边界
matlab
2.3 与传统方法的对比优势
| 特性 | 传统优化方法 (BM3D) | 判别学习方法 (SRCNN) | 本文方法 |
|---|---|---|---|
| 任务泛化性 | 高(任意H矩阵) | 低(固定H) | 高 (任意H) |
| 计算效率 | 低(CPU迭代慢) | 高(GPU前向快) | 高 (GPU加速) |
| 先验知识依赖 | 显式定义(如非局部) | 隐式学习 | 隐式学习+模块化 |
| 多噪声级别支持 | 单一模型适应 | 需训练多模型 | 25个模型插值覆盖 |
核心突破 :
- 模块化先验 :CNN去噪器作为即插即用组件(Plug-and-Play Prior)
- 硬件加速友好 :CNN前向计算高度并行化(代码中GPU支持)
- 统一框架 :同一组去噪器解决去噪、去模糊、超分辨率等任务
代码中的多任务支持(第12行) :
taskTestCur = 'Deblur'; % 可替换为'SuperResolution'或'Denoise'
matlab
公式总结
| 公式 | 含义 | 论文编号 | 代码对应 |
|---|---|---|---|
| (5) | HQS分裂后的目标函数 | 理论基础 | 迭代循环框架 |
| (7) | 保真项子问题的闭式解(FFT加速) | 理论推导 | z = real(ifft2(...)) |
| (9) | 去噪子问题的等价表示 | 核心创新 | vl_simplenn(net, z, ...) |
| (10) | CNN去噪器的残差学习损失函数 | 训练策略 | 预训练模型生成 |
3. 实验设计与结果分析
3.1 图像去噪实验
- 数据集 :BSD68(灰度)、CBSD68(彩色)。
- 对比方法 :BM3D、WNNM、TNRD、CBM3D。
- 结果 (表1-2):
| 噪声级别 | BM3D | WNNM | TNRD | 本文 |
|---|---|---|---|---|
| \sigma=25(灰度) | 28.57 | 28.83 | 28.92 | 29.15 |
| \sigma=25(彩色) | 30.71 | - | - | 31.16 |
| PSNR提升0.2–0.45 dB ,且GPU推理速度显著优于TNRD(表3)。 |
3.2 图像去模糊实验
- 设置 :高斯模糊核(\sigma=1.6)与真实模糊核(Levin数据集)。
- 对比方法 :IDDBM3D、NCSR、EPLL。
- 结果 (表4):
| 测试图像 | IDDBM3D | NCSR | 本文 |
|---|---|---|---|
| Leaves | 26.95 | 27.50 | 29.78 |
| PSNR提升2.28 dB ,且视觉上保留更多细节(图3)。 |

注:本文方法(右下)边缘更锐利,无色彩伪影。
3.3 单图像超分辨率实验
- 设置 :双三次/Gaussian模糊核,缩放因子×2/×3。
- 结果 (表5):
| 数据集 | 模糊核 | SRCNN | VDSR | 本文 |
|---|---|---|---|---|
| Set5(×3) | Gaussian | 30.42 | 30.54 | 33.38 |
| PSNR提升2.84 dB ,且支持任意模糊核(无需重新训练)。 |
4. 未来方向与产业机会
4.1 学术挑战
- 模型轻量化 :减少去噪器数量(当前需25个模型)。
- 迭代加速 :减少HQS迭代次数(当前需30步)。
- 扩展任务 :盲去模糊、图像修复(Inpainting)。
4.2 产业机会
- 实时图像处理芯片 :结合CNN去噪器与优化框架的ASIC设计。
- 多模态融合 :结合物理模型(如光学退化)提升医学影像重建精度。
- 开源框架 :开发“Plug-and-Play”工具库(如PyTorch版本)。
5. 批判性评价
5.1 不足
- 存储开销 :25个去噪模型占用大量存储空间(>1GB)。
- 泛化性验证不足 :未在极端噪声(\sigma>50)或非高斯噪声下测试。
- 理论解释薄弱 :未分析CNN先验与传统先验(如TV)的数学关联。
5.2 待验证问题
- 实际场景鲁棒性 :手机拍摄的运动模糊/低光照图像。
- 计算效率 :CPU端实时性(当前依赖GPU)。
6. 实践启示与背景补充
6.1 核心创新点
-
即用技术 :
- 将预训练去噪器 作为正则化先验嵌入优化问题。
- 扩张卷积设计 :平衡感受野与计算效率。
-
启发 :
“任何高斯去噪器均可作为模块化组件解决逆问题。”(原文Section 2.2)
6.2 必备背景知识
- 优化算法 :ADMM、HQS(参考[Boyd et al. 2011])。
- CNN基础 :残差学习、批归一化([He et al. 2016])。
- 图像先验 :BM3D、TV正则化([Dabov et al. 2007])。
