Introduction
FFDNet是Zhang Kai的一篇承前启后之作,从DnCNN到FFDNet再到CBDNet是一个网络的泛化过程,处理的对象从均匀的高斯噪声变成更加复杂的真实噪声。DnCNN利用Batch Normalization和residual learning可以有效地去除均匀高斯噪声,且对一定噪声水平范围的噪声都有抑制作用。然而真实的噪声并不是均匀的高斯噪声,其是信号依赖的,各颜色通道相关的,而且是不均匀的,可能随空间位置变化的。在这种情况下,FFDNet使用噪声估计图作为输入,权衡对均布噪声的抑制和细节的保持,从而应对更加复杂的真实场景。而CBDNet进一步发挥了这种优势,其将噪声水平估计过程也用一个子网络实现,从而使得整个网络可以实现盲去噪。
该网络的特点在于:
- 将噪声水平估计作为网络的输入,可以应对更加复杂的噪声,如不同噪声水平噪声和空间变化噪声,而且噪声水平估计可以作为权重权衡对噪声的抑制和细节的保持。
- 将输入图像下采样为多张子图像作为网络输入,输出的子图像再通过上采样得到最终的输出。该操作在保持结果精度的条件下,有效地减少了网络参数,增加感受野,使得网络更有效率。
- 使用正交矩阵初始化网络参数,从而使得网络训练更有效率。
Network
网络结构
网络参数
损失函数
L ( Θ ) = 1 2 N ∑ i = 1 N ∥ F ( y i , M i ; Θ ) − x i ∥ 2 \mathcal{L}(\Theta)=\frac{1}{2N}\sum^N_{i=1}\|\mathcal{F}(y_i,M_i;\Theta)-x_i\|^2 L(Θ)=2N1i=1∑N∥F(yi,Mi;Θ)−xi∥2
Experiment Results
FFDNet与BM3D和DnCNN有相似的噪声水平敏感度的表现。当真实噪声水平未知时,设置比较大的输入噪声水平能更有效地去除噪声,保持更好的视觉效果。
代码地址:github