FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising-非常经典!
引言
地址:https://ieeexplore.ieee.org/abstract/document/8365806
本文假设噪声是加性高斯白噪声(AWGN),并给出了噪声水平。
基于模型的方法,如BM3D和WNNM在处理各种噪声水平的去噪问题时是灵活的,但是它们有几个缺点。例如,它们的优化算法通常很耗时,并且不能直接用于去除空间变化的噪声。此外,基于模型的方法通常采用手工制作的图像先验(例如稀疏性和非局部自相似性),这些先验可能不足以表征复杂的图像结构。
CNN在图像去噪方面的成功归功于其巨大的建模能力和网络训练和设计的巨大进步。然而,现有的判别去噪方法灵活性有限,并且学习的模型通常是针对特定的噪声水平定制的。它们旨在学习一个映射函数 x = F ( y ; Θ σ ) x=\mathcal{F}(y;\Theta_{\sigma}) x=F(y;Θσ),训练后的模型 Θ σ \Theta_{\sigma} Θσ很难直接应用于其他噪声水平的图像。DnCNN-B,它不能很好地推广到真实的噪声图像,并且仅当噪声水平在预设范围内(例如[0,55])时才起作用。此外,现有的基于判别学习的方法都缺乏处理空间变化噪声的灵活性。
FFDNet公式为 x = F ( y , M ; Θ ) x=\mathcal{F}(y,M;\Theta) x=F(y,M;Θ),其中 M M M是噪声水平映射,在DnCNN模型中 x = F ( y ; Θ σ ) x=\mathcal{F}(y;\Theta_{\sigma}) x=F(y;Θσ),参数 Θ σ \Theta_{\sigma} Θσ随噪声水平 σ σ σ的变化而变化,而在FFDNet模型中,噪声水平映射被建模为输入,模型参数 Θ \Theta Θ对噪声水平不变。
发现当设置较大的噪声水平来平滑细节时,可能会产生严重的视觉质量下降。我们强调这个问题,并采用卷积滤波器的正交初始化方法来缓解这个问题。同时,提出的FFDNet对下采样的子图像进行处理,大大加快了训练和测试速度,也扩大了感受野。
相关工作
MAP Inference Guided Discriminative Learning
MRF、NLR-MRF等,一般来说,上述方法只以判别的方式学习先验参数,而推理参数是阶段不变的。CSF、TNRD、GCRF,然而,学习的先验和推理过程受限于MAP模型的形式,这可能不足以建模复杂的图像先验。例如,CSF的推理不是很灵活,因为它严格地源自专家领域(FoE)框架下的HQS优化。然而,FoE的容量不足以完全表征图像先验,这反过来使得CSF的效果较差。
Plain Discriminative Learning
MLP、CNN(DnCNN)、RBDN、MemNet等,然而,现有的判别学习方法必须学习多个模型来处理具有不同噪声水平的图像,并且不能处理空间变化的噪声。
FFDNet
目标:快速、灵活、鲁棒性(降噪器在控制降噪和细节保护之间的权衡时,不应引入视觉伪影)。我们采用可调噪声水平映射 M \mathbf{M} M作为输入,以使去噪模型对噪声水平具有灵活性。引入可逆下采样算子,将 W × H × C W×H×C W×H×C大小的输入图像整形为4个 W 2 × H 2 × 4 C \frac{W}{2}×\frac{H}{2}×4C 2W×2H×4C大小的下采样子图像。这里C为通道数,即灰度图像C = 1,彩色图像C = 3。为了使噪声水平映射能够通过不引入视觉伪影来鲁棒地控制降噪和细节保留之间的折衷,我们对卷积滤波器采用正交初始化方法。
网络结构
第一层是可逆下采样算子,它将噪声图像
y
(
W
×
H
)
\mathbf{y}(W\times H)
y(W×H)重新整形为4个下采样子图像。我们进一步将可调噪声水平映射
M
\mathbf{M}
M与下采样的子图像连接起来,形成大小为
W
2
×
H
2
×
(
4
C
+
1
)
\frac{W}{2}×\frac{H}{2}×(4C+1)
2W×2H×(4C+1)的张量
y
~
\tilde{\mathbf{y}}
y~作为CNN的输入。对于噪声水平为
σ
σ
σ的空间不变AWGN,
M
\mathbf{M}
M是所有元素均为
σ
σ
σ的均匀映射。对于空间变化的噪声,很自然地假设邻域中的噪声水平平滑地变化,并且下采样
M
\mathbf{M}
M的使用是合理的。
第一个卷积层采用“Conv(3×3)+ReLU”,中间层采用“Conv+BN+ReLU”,最后一个卷积层采用“Conv”。零填充用于在每次卷积后保持特征映射的大小不变。在最后一个卷积层之后,应用上采样运算,以产生大小为W×H×C的估计干净图像 x ^ \hat{x} x^。由于FFDNet对下采样子图像进行运算,因此没有必要使用扩展(空洞)卷积来进一步增加感受野。
考虑到复杂度和性能的平衡,我们将卷积层数设置为灰度图像15层,彩色图像12层。对于特征映射的通道,我们为灰度图像设置了64个,为彩色图像设置了96个。我们对灰度和彩色图像使用不同设置的原因有两个。首先,由于在R、G、B通道之间有很高的相关性,使用较少数量的卷积层鼓励模型利用通道间相关性去噪。其次,彩色图像有更多的通道作为输入,因此需要更多的特征(即,更多通道的特征映射)。
噪声水平映射
大多数基于模型的去噪方法旨在解决以下问题: x ^ = arg min x 1 2 σ 2 ∥ y − x ∥ 2 + λ Φ ( x ) ( 1 ) \hat{\mathbf{x}}=\arg \min _{\mathbf{x}} \frac{1}{2 \sigma^{2}}\|\mathbf{y}-\mathbf{x}\|^{2}+\lambda \Phi(\mathbf{x})\quad(1) x^=argxmin2σ21∥y−x∥2+λΦ(x)(1)
λ λ λ决定了降噪和细节保护之间的折衷。太小的时候,会残留很多噪声;相反,细节会随着噪声的抑制而变得平滑。
通过一些优化算法,方程(1)的解实际上定义了隐函数( λ λ λ可以被吸收到 σ σ σ中): x ^ = F ( y , σ ; Θ ) \hat{\mathbf{x}}=\mathcal{F}(\mathbf{y}, \sigma; \Theta) x^=F(y,σ;Θ),基于模型的方法通过简单地在 x ^ = F ( y , σ ; Θ ) \hat{\mathbf{x}}=\mathcal{F}(\mathbf{y}, \sigma; \Theta) x^=F(y,σ;Θ)指定 σ σ σ,可以灵活地处理具有各种噪声水平的图像。
我们通过将噪声水平 σ σ σ拉伸成噪声水平映射 M M M来解决维数失配问题: x ^ = F ( y , M ; Θ ) \hat{\mathbf{x}}=\mathcal{F}(\mathbf{y},\mathbf{M};\Theta) x^=F(y,M;Θ),在 M M M中,所有元素都是 σ σ σ.
值得强调的是,对于更一般的噪声模型,如多元(3D)高斯噪声模型 N ( 0 , Σ ) \mathcal{N}(0,\Sigma) N(0,Σ)(在RGB颜色空间中具有零均值和协方差矩阵 Σ \Sigma Σ), M M M可以扩展到具有多个通道的退化映射(degradation maps)。因此,单个CNN模型有望继承处理具有不同参数的噪声模型的灵活性,甚至通过注意到 M M M可以是非均匀的来处理空间变化的噪声。
子图像去噪
具有扩张卷积的FFDNet往往会在锐边周围产生伪影。
下采样因子被设置为2,因为它可以在不降低建模能力的情况下极大地提高速度。所提出的深度为15和3×3卷积的网络将具有62×62的大感受野。相比之下,一个普通的15层CNN只有31×31的感受野大小。感受野的进一步增加实际上对改善去噪性能没有什么好处。实验证明,通过对子图像执行去噪,FFDNet在保持去噪性能的同时显著提高了效率。
检查噪声水平映射的作用(预印版上有正交正则化的定义)
有必要进一步研究 M M M是否能起到 λ λ λ的作用。当输入噪声水平远高于GT噪声水平时(可能会产生视觉伪影),这表明 M M M无法控制降噪和细节保留之间的权衡。避免这种情况的一个可能的解决方案是正则化卷积滤波器。正交正则化在消除卷积滤波器之间的相关性、促进梯度传播和提高学习模型的紧凑性方面被证明是有效的。根据我们的实验,发现卷积滤波器的正交初始化在抑制视觉伪影方面工作良好。
本节旨在强调保证 M M M在控制降噪和细节保护之间的平衡中的作用的必要性,而不是提出一种方法来避免由噪声水平不匹配引起的可能的视觉伪影。
残差学习
当网络深度适中(例如小于20)时,通过使用高级CNN训练和设计技术(如ReLU、批量归一化和Adam)来训练没有残差学习策略的普通网络是可行的。为简单起见,我们不使用残差学习进行网络设计。
Un-Clipping vs. Clipping of Noisy Images for Training
在AWGN去噪文献中,存在两种广泛使用的设置,即合成噪声图像的非削波和削波(clipping),来评估去噪方法的性能。这两种设置的主要区别在于添加噪声后,噪声图像是否被剪切到0-255的范围内(或者更准确地说,量化为8位格式)。
因为大多数去噪方法假设噪声是理想的AWGN,而对噪声输入的削波会使噪声特性偏离AWGN。此外,在用于解决一般图像恢复问题的变量分裂算法中,存在一个子问题,从贝叶斯观点来看,该子问题对应于高斯去噪问题。这进一步扩大了非削波设置的使用范围。因此,除非另有说明,本文中的FFDNet指的是在没有削波或量化的图像上训练的模型。当噪声水平较高时,由于削波效应,噪声将不再是零均值的。
对于干净的图像
x
x
x,我们使用matlab函数imnoise(x,'gaussian',0,(sigma/255)^2)
生成噪声水平为
σ
σ
σ的量化噪声
y
y
y.
实验
数据集生成和网络训练
输入输出对的训练数据集: { ( y i , M i ; x i ) } i = 1 N \left\{\left(\boldsymbol{y}_{i}, \boldsymbol{M}_{i} ; \boldsymbol{x}_{i}\right)\right\}_{i=1}^{N} {(yi,Mi;xi)}i=1N,数据集来自400 BSD images, 400 images selected from the validation set of ImageNet, and the 4744 images from the Waterloo Exploration Database.
在每个epoch,我们从这些图像中随机裁剪出N=128×8000个patches进行训练。patch的大小应该大于FFDNet的感受野:
损失函数为(采用Adam算法):
L
(
Θ
)
=
1
2
N
∑
i
=
1
N
∥
F
(
y
i
,
M
i
;
Θ
)
−
x
i
∥
2
\mathcal{L}(\Theta)=\frac{1}{2 N} \sum_{i=1}^{N}\left\|\mathcal{F}\left(\boldsymbol{y}_{i}, \boldsymbol{M}_{i} ; \boldsymbol{\Theta}\right)-\boldsymbol{x}_{i}\right\|^{2}
L(Θ)=2N1i=1∑N∥F(yi,Mi;Θ)−xi∥2
学习率从 1 0 − 3 10^{-3} 10−3开始,当训练误差停止减小时,学习率降低到 1 0 − 4 10^{-4} 10−4,当训练误差在5个连续的epochs内保持不变时,我们将每个批量归一化的参数合并到相邻的卷积滤波器中。然后,在另外50个epochs采用 1 0 − 6 10^{-6} 10−6的较小学习速率来微调FFDNet模型。小批量(mini-batch)大小设置为128,并且在训练期间还采用了基于旋转和翻转的数据增强。单个模特的训练大概两天就可以完成。
测试集:BSD68、Set12、RNI6.
为了评估FFDNet-Clip,我们使用量化的“Clip300”数据集,该数据集包括来自BSD300数据集的100幅测试集图像和来自PASCALVOC 2012数据集的200幅图像。
对于彩色图像去噪,我们使用了四个数据集,即CBSD68、Kodak24、McMaster和RNI15。
AWGN去除实验
比较:BM3D、WNNM、MLP、TNRD、DnCNN、RED30和MemNet.
表2和表3分别显示了BSD68和Set12数据集的PSNR结果。FFDNet比DnCNN具有更大的感受野,有利于去除强噪声,而DnCNN具有更好的建模能力,有利于对噪声水平较低的图像去噪。不同方法的视觉比较如图3所示。
表4显示了在Clip300数据集上与DCGRF和RBDN的PSNR比较。对于彩色图像去噪,我们将FFDNet与CBM3D和CDnCNN进行了比较。表5显示了不同方法在CBSD68、Kodak24和McMaster数据集上的性能,图4给出了视觉比较。
空间变化AWGN去除实验
由于噪声水平映射在空间上是平滑的,使用下采样的噪声水平图通常对最终去噪性能影响很小。图5给出了一个例子来显示FFDNet在去除空间变化AWGN方面的有效性。
噪声水平灵敏度实验
图6示出了BM3D、DnCNN和FFDNet的噪声水平灵敏度曲线。图7示出了BM3D/CBM3D和FFDNet之间通过设置不同的输入噪声水平来对噪声图像进行去噪的视觉比较。当真实噪声水平未知时,设置较大的输入噪声水平比设置较低的输入噪声水平更好。
真实噪声图像实验
我们采用交互式策略来处理真实的噪声图像。首先,我们凭经验发现,空间不变噪声的假设通常适用于大多数真实的噪声图像。然后,我们使用一组典型的输入噪声水平来产生多个输出,并选择一个在降噪和细节保护之间具有最佳折衷的输出。其次,大多数真实世界图像中的空间变化噪声是依赖于信号的。在这种情况下,我们首先采样几个不同颜色的典型区域。对于每个典型区域,我们以5为间隔应用不同的噪声水平,并通过观察去噪结果来选择最佳的噪声水平。然后从典型区域的噪声水平内插其它区域的噪声水平,以构成近似的非均匀噪声水平映射。
图8比较了Noise Clinic、BM3D、DnCNN、DnCNN-B和FFDNet对RNI6图像的灰度图像去噪结果。
图9显示了Noise Clinic、CBM3D、CDnCNN-B和FFDNet对来自RNI15的5种彩色噪声图像的去噪结果。虽然非局部自相似先验有助于去除随机噪声,但它阻碍了结构噪声的去除。相比之下,CNN隐含学习的先验能够去除随机噪声和结构噪声。
图10进一步示出了来自RNI15的其他9幅图像上的FFDNet的更多视觉结果。
图11示出了一个更具挑战性的例子,以证明FFDNet对于去除具有空间变化噪声的图像的优势。
根据以上对真实噪声图像的实验,我们可以看到,用未量化的图像数据训练的FFDNet模型在8位量化的真实噪声图像上表现良好。
FFDNet代码测试
代码:https://github.com/cszn/FFDNet