本文提出了一个针对真实图像的盲卷积去噪网络,增强了深度去噪模型的鲁棒性和实用性。
摘要
-
作者提出了一个 CBD-Net,由噪声估计子网络和去噪子网络两部分组成。
-
作者设计了一个更加真实的噪声模型,同时考虑了信号依赖的噪声和相机内部处理的噪声。
-
基于真实噪声模型合成的图片和真实的噪声图片被联合在一起对网络进行训练。
噪声模型
-
除了高斯噪声,真实的图片噪声更加复杂,并且是信号依赖的。
-
给定一个干净图片 x,一个更加真实的噪声模型 n ( x ) ~ N ( 0 , σ ( y ) ) n(x) ~ N(0, \sigma(y)) n(x)~N(0,σ(y)) 可以表示为:
-
其中, n ( x ) = n s ( x ) + n c n(x) = n_s (x) + n_c n(x)=ns?(x)+nc? 包含一个信号依赖的组成 n s n_s ns? 和一个静态的噪声组成 n c n_c nc?。 n c n_c nc? 是一个方差为 σ c 2 \sigma_c ^2 σc2? 的高斯噪声, n s n_s ns? 则和图像的像素值有关,比如 x ( i ) ? σ s 2 x(i) * \sigma_s^2 x(i)?σs2?。
-
另外,我们再把相机内部处理过程考虑进去的话,就会产生以下这个信号依赖和通道依赖的噪声模型。
-
y y y 表示合成图片, f f f 代表相机反应函数(CRF), M M M 代表将 sRGB 图片转化为 Bayer 图片的函数, M ? 1 M^{-1} M?1代表去马赛克函数。
-
此外,为了扩展到对压缩图片的处理,我们把 JPEG 压缩也考虑进合成图片的生成过程。
- 针对原始图片、无压缩图片和压缩图片,我们分别用以上三种模型来生成训练图片。
网络结构
-
噪声等级子网络由五层的卷积组成,卷积核大小为 3*3,通道数为 32,激活函数采用 Relu,没有采用池化和批归一化,输出的噪声等级图和原噪声图片大小相同。
-
去噪子网络将噪声等级图和原噪声图片一起作为输入,采用了 U-Net 的网络结构,卷积核大小为 3*3,激活函数采用 Relu,学习噪声图片的残差。
非对称学习
作者用传统的去噪方法 BM3D/FFDNet 做了一个实验。当给定的噪声等级和真实噪声等级一样时,去噪效果毋庸置疑是最好的。当给定的噪声等级低于真实噪声等级一样时,去噪结果仍然有可见的噪声;但当给定的噪声等级高于真实噪声等级一样时,仍然可以取得非常满意的结果。
- 为了利用这种非对称特性进行盲去噪,我们在噪声估计中提出了不对称损失以避免在噪声水平上出现低估误差。
- 给定像素 i i i 处估计的噪声等级 σ ^ ( y i ) \hat \sigma(y_i) σ^(yi?)和真实值 σ ( y i ) \sigma(y_i) σ(yi?)。当 σ ^ ( y i ) < σ ( y i ) \hat \sigma(y_i) < \sigma(y_i) σ^(yi?)<σ(yi?),我们应该强加更多惩罚。 因此,噪声等级估计子网络的不对称损失定义如下:
-
通过设定 0 < α < 0.5 0 < \alpha < 0.5 0<α<0.5,,我们可以强加更多惩罚给低估误差。
-
另外,我们引入一个总体方差正则化项来限制 σ ^ ( y i ) \hat \sigma(y_i) σ^(yi?) 的平滑性:
-
对于去噪子网络的输出 x ^ \hat x x^,我们定义重构误差为:
-
网络的总损失即为以上三部分的求和:
训练过程
-
基于真实噪声模型合成的图片和真实的噪声图片被联合在一起对网络进行训练,来增强网络处理真实图像的泛化能力。
-
针对一个批次的合成图片, L r e c , L a s y m m , L T V L_{rec} , L_{asymm},L_{TV} Lrec?,Lasymm?,LTV? 三个损失都被计算来训练网络。
-
针对一个批次的真实,由于噪声等级不可知,因此只有, L r e c 和 L T V L_{rec} 和 L_{TV} Lrec?和LTV? 两个损失被计算来训练网络。
验证和结果
- 不同 α \alpha α 值的去噪结果对比如下图所示,可以看到,较小的 α = 0.3 \alpha = 0.3 α=0.3 会对去除未知噪声并且保留图片的结构有所帮助。
-
另外,作者又对只用合成图片、只用真实图片和联合真实图片和合成图片三种情况进行了对比,进一步验证了联合训练的有效性。
-
最后,一些实验结果如下所示:
获取更多精彩,请关注「seniusen」!