1168 字
6 分钟
FFDNet:可调噪声水平的快速去噪
2026-07-01
无标签

DnCNN 在 AWGN 去噪上取得了优异性能,但有两个实用局限:第一,推理时的噪声水平 σ\sigma 必须在训练时固定——若测试时噪声偏离训练分布,性能立即下降;第二,对于大噪声(σ>25\sigma>25),需要加深网络才能覆盖足够的感受野,计算量大。FFDNet(Zhang et al., 2018)通过两项改进解决了这些问题。

从 DnCNN 到 FFDNet#

DnCNN 的局限#

  • 噪声水平固定:训练时可以对不同 σ\sigma 采样,但推理时输入的是固定的噪声水平图,没有”可调”机制。若实际噪声与训练的 σ\sigma 分布不匹配,去噪效果退化。
  • 大噪声的低效:大噪声需要更大的感受野来区分信号与噪声。DnCNN 对于 σ>25\sigma>25 需要加深至 17–20 层,全分辨率特征图上的大卷积核导致计算量随深度线性增长。
  • 空间均匀假设:DnCNN 隐含假设全图噪声水平一致,无法处理真实场景中常见的空间变化噪声(如暗部噪声强于亮部)。

FFDNet 的两项改进#

改进一:可调噪声水平图输入#

与 DnCNN 在输入层拼接固定 σ\sigma 的全 1 图不同,FFDNet 将噪声水平图 σ^(i,j)\hat{\sigma}(i,j) 作为可控制的输入,每张图的每个像素可以有不同的 σ\sigma 值:

Input=[y; σ^]RH×W×(c+1)\text{Input} = [y;\ \hat{\sigma}] \in \mathbb{R}^{H \times W \times (c+1)}

在训练时,每个 mini-batch 的 σ\sigma[0,75][0, 75] 中均匀采样。在推理时,用户设置一个 σ\sigma 输入网络——若实际噪声水平未知,可以先用噪声估计器估算 σ\sigma 再输入。这使得单一 FFDNet 模型可以覆盖极其宽广的噪声范围,且推理时可以按需调参。

更进一步,若传入的空间变化噪声图 σ^(i,j)\hat{\sigma}(i,j) 在不同位置取不同值,FFDNet 可以处理空间非均匀噪声。这在真实场景中非常实用(如 CMOS 传感器的暗角噪声、低光照区域的放大噪声)。

改进二:下采样子图架构#

FFDNet 在输入端做一次 2×2\times 下采样,将输入图像分解为 4 个子图,在子图上运行核心网络,再上采样重组。流程如下:

  1. 输入图像 yRH×W×cy \in \mathbb{R}^{H \times W \times c} 与噪声水平图 σ^\hat{\sigma} 沿通道拼接。
  2. 将拼接后的 H×W×(c+1)H \times W \times (c+1) 张量通过下采样算子分解为 4 个 H2×W2×(c+1)\frac{H}{2} \times \frac{W}{2} \times (c+1) 的子图。
    • 下采样算子:按 2×22\times2 棋盘格模式采样,每个子图对应棋盘的一个相位。
  3. 4 个子图串联(concatenate)成一个 H2×W2×4(c+1)\frac{H}{2} \times \frac{W}{2} \times 4(c+1) 的张量。
    • 在彩色图上,这一步将 4×(3+1)=164 \times (3+1) = 16 个通道同时送入网络。
  4. 在这个降采样后的张量上运行 DnCNN 风格的非线性映射网络(Conv+BN+ReLU)。
    • 特征图尺寸减半,运算量降至约四分之一。
    • 同等层数下,子图上的有效感受野扩大一倍(相对输入而言)。
  5. 将输出张量通过逆下采样(上采样重组)恢复为 H×W×cH \times W \times c 的输出残差图。
  6. x^=y+F(y;σ^)\hat{x} = y + F(y; \hat{\sigma})(注意这里是加残差,与 DnCNN 的减残差等价)。

这种设计的直觉是:去噪需要大感受野来区分纹理和噪声,下采样后的子图在保持像素级信息的同时扩大了全局视野,且每个子图独立处理的噪声分布与全图一致——棋盘格的交错采样方式保证了信息不丢失。

网络配置#

FFDNet 的核心网络比 DnCNN 更浅:中间层通常为 d=12d = 12 层(DnCNN 17)。下采样子图使每层的有效感受野扩大了一倍 2×2\times,所以 12 层子图的实际感受野与 DnCNN 17 层全分辨率网络相当。

DnCNN vs FFDNet#

维度DnCNNFFDNet
噪声控制训练时多个σ采样,推理时固定输入可调噪声图,推理时可调
空间变化噪声不支持支持(逐像素 σ)
核心网络层数17–2012
运算量高(全分辨率处理)低(子图尺寸减半)
感受野(输入空间)中等(全分辨率堆叠)大(子图语义对应更大输入区域)
噪声范围σ[0,55]\sigma \in [0, 55]σ[0,75]\sigma \in [0, 75]
速度基准约 2× 加速

FFDNet 不是 DnCNN 的替代品,而是针对实际部署场景的优化——用可控的噪声水平和加速的子图架构,在保持去噪质量的同时提升了实用性和效率。两种方法在各自的标准设定下都有广泛的引用和后续工作。

FFDNet:可调噪声水平的快速去噪
https://biscuit0613.github.io/posts/cv/cv-dn-ffdnet/
作者
Biscuit
发布于
2026-07-01
许可协议
CC BY-NC-SA 4.0
DnCNN:残差学习的CNN去噪
传统去噪:NLM与BM3D