CBDNet:Toward Convolutional Blind Denoising of Real Photographs

Toward Convolutional Blind Denoising of Real Photographs

Shi Guo , Zifei Yan  , Kai Zhang , Wangmeng Zuo , Lei Zhang

Harbin Institute of Technology, Harbin, 150001, China
Department of Computing, The Hong Kong Polytechnic University, Hong Kong

目前深度卷积神经网络去噪方法

  1. 大多数存在的盲去噪的方法都包括两步:噪声估计和非盲目去噪。
  2. 深度卷积神经网络的效果依赖于训练数据,但真实噪声图像和干净图像太少,而合成的噪声图像与真实噪声图像相差太大。
  3. 真实噪声的特征不能充分地被设计的噪声模型所刻画。
  4. 非盲目去噪器(BM3D、FFDNet)对低估噪声等级敏感,而对高估噪声等级表现良好。即在噪声估计网络对噪声图像的噪声估计的噪声等级低于实际噪声等级时,去噪效果不好,但当噪声估计网络对噪声图像的噪声估计的噪声的呢估计高于实际噪声等级时去噪效果良好。

论文的方法是如何借鉴和改进前人的方法

  1. 针对第一点,同样分为两个子网络:噪声估计子网络和非盲目去噪子网络
  2. 针对第二点和第三点,论文选择同时用合成噪声图像和真实噪声图像交替训练网络 。
  3. 针对第三点,论文提出了一个更接近真实噪声的模型,既考虑了信号相关的噪声,又考虑了摄像机的处理流水线中的噪声。
  4. 针对第四点,论文充分利用BM3D对高估计噪声等级表现良好的特性,选择用非对称的方法来学习,即的那个噪声估计网络高估噪声时,给与一个较小的惩罚,而的那个网络低估噪声等级时,给予较大的惩罚。

论文主要贡献

  1. 图像噪声模型在深度卷积神经网络对真实噪声图像去噪中起到关键的作用。论文提出了一个更接近真实噪声的模型,同时考虑了信号相关的噪声和在摄像机的处理流水线中的噪声。
  2. 论文提出了一个CBDNet,由噪声估计子网络和非盲目去噪子网络两部分组成。同时使用非对称学习方法。
  3. 同时采用合成噪声图像和真实噪声图像训练CBDNet。
  4. 在三个数据集上的实验结果表面论文提出的CBDNet相比于前人的方法有突出的效果。

论文的主要方法

噪声模型

信号依赖的噪声:干净图像x,更真实地噪声模型n(x)\sim N(0,\delta (y))\delta ^2(x)=x\cdot \delta ^2_s+\delta ^2_c

n(x)=n_s(x)+n_c,其中n_s是信号依赖的噪声,n_c是静态噪声分量,n_c是高斯白噪声,方差为\delta _c^2,每个像素i的n_s噪声都与图像的密度相关。

摄像机图像处理流水线噪声:

y=M^{-1}(M(f(L+n(x)))),其中y是合成的噪声图像,f是相机响应函数,将幅照度L转换为干净图像x,M是将sRGB图像转变为Bayer图像的函数,M^{-1}是去马赛克函数。这样就得到了一个合成的噪声图像。

为了扩展到压缩图像,在上式的基础上在加一个JPEG压缩函数,得到压缩图像。

y=JPEG(M^{-1}(M(f(L+n(x)))))

\delta _s,\delta _c分别从[0,0.16],[0,0.06]均匀采样得到。f是从201个相机响应函数中均匀采样。压缩质量因子是在[60,100]中均匀采样得到。

网络结构

CBDNet:Toward Convolutional Blind Denoising of Real Photographs_第1张图片

网络主要有两部分组成噪声估计网络CNN_E和去噪网络CNN_D

CNN_E由五个全连接层组成,没有池化层也没有BatchNormailization,每个卷积层的通道数是32,filter大小是3\times3,。诶个卷积层后面的激活函数是Relu。

CNN_D是一个U-Net结构,也是filter是3\times3,激活函数是Relu,但在最后一个卷积层的后面没有激活函数。

非对称学习

非对称学习的思想就是加大对低估网络噪声等级的惩罚,其损失函数定义为:

L_{asymm}=\sum_i|\alpha -I_{\hat{\sigma }(y_i)-\sigma (y_i)<0}|\cdot (\hat{\sigma }(y_i)-\sigma (y_i))^2

其中\hat{\sigma }(y_i)是噪声估计网络估计的噪声等级,\sigma (y_i)是真实的噪声等级,if \, e<0,I_e=1,\alpha设置为0<\alpha <0.5,这就使得在网络低估噪声等级时,即\hat{\sigma }(y_i)<\sigma (y_i),I=1,|\alpha -I|> 0.5,当网络甘谷噪声等级时,即\hat{\sigma }(y_i)>\sigma (y_i),I=0,|\alpha -I|=\alpha < 0.5

此外论文引入了一个全变差正则化,来约束\hat{\sigma }(y_i)的光滑程度:

L_{TV}=\begin{Vmatrix} \bigtriangledown _h\hat{\sigma }(y) \end{Vmatrix}_2^2+\begin{Vmatrix} \bigtriangledown _v\hat{\sigma }(y) \end{Vmatrix}_2^2

\bigtriangledown _h \bigtriangledown _v分别表示垂直方向和水平方向的梯度。

重构损失:L_{rec}=\begin{Vmatrix} \hat{x}-x \end{Vmatrix}_2^2,即网络输出的去噪图像和真实无噪声图像的差距。

总的目标函数:L =L_{rec}+\lambda _{asymm}L_{asymm}+\lambda _{TV}L_{TV},其中\lambda _{asymm},\lambda _{TV}分别是对应的权值。

训练过程中使用合成图像又使用真实图像

CBDNet在训练过程中以一个Batch为单位交替使用合成图像和真实图像。对合成图像损失函数是全部的损失函数,但对真实图像,因为无法知道其真实的噪声等级,所以不考虑非对称损失。

实验

测试数据集

  1. NC12:12个噪声图像,没有干净图像
  2. DND:50对噪声图像和干净图像
  3. Nam:11中场景,每个场景500张JPEG压缩图像,而每个场景的干净图像是这500个JPEG压缩图像的均值

实现细节

  1. 目标函数参数设置:\alpha =0.3,\lambda _1=0.5,\lambda _2=0.05
  2. 优化器:ADAM
  3. batchsize:32,图像大小:128\times 128
  4. 40epochs,前20个epochs学习率为0.001,后20epochs学习率为0.0005

消融研究

非对称损失中\alpha的取值对网络性能的影响,分别取\alpha =0.3,0.4,0.5,对比结果,可以发现\alpha取较小值效果较好。

CBDNet:Toward Convolutional Blind Denoising of Real Photographs_第2张图片

论文对比了只用真实图像、只用合成图像训练和交替使用真实图像和合成图像的CBDNet的性能,如下图

CBDNet:Toward Convolutional Blind Denoising of Real Photographs_第3张图片

发现只使用合成图像训练会使去噪的结果过于光滑,只使用合成图像训练会限制网络的去噪能力,因为合成的噪声与真实噪声还是相差较多。交替使用真实图像和合成图像训练的网络去噪效果良好。

结果对比

在NC12数据集上,FFDNET、CDnCNNB、BM3D、NC只能去除图像上的一部分噪声,WNNM效果比前面的几个好,但仍人不能去除全部噪声,NI可以去除噪声,但却过于光滑,而CBDNet既能去除全部噪声,又不会过于光滑,可以保持原来图像的纹理和结构。

在DND数据集上的结果:

CBDNet:Toward Convolutional Blind Denoising of Real Photographs_第4张图片

在Nam数据集上的结果:

CBDNet:Toward Convolutional Blind Denoising of Real Photographs_第5张图片

你可能感兴趣的:(图像去噪)