深度学习图像去噪发展概述
#深度学习图像去噪发展概述
由于深度学习,特别是卷积神经网络(CNN)在图像识别等领域取得了较好的成果,近年来,基于深度学习的图像去噪方法也被提出并得到了发展。2008年,Viren Jain等提出用CNN处理自然图像的去噪问题[21],得到了与常规方法(如小波变换和马尔可夫随机场)相近或更优的结果。并说明了特定形式的CNN可以被视为图像去噪的马尔可夫模型推断的结果的一种近似,但是神经网络模型可以避免了马尔可夫模型在概率学习和推断过程中的计算困难,从而降低了计算的复杂度。在训练神经网络的过程中为了更加快速和准确的收敛,采取了逐层训练的方法。该方法网络结构如下图所示:
图2.1 Viren Jain等的图像去噪卷积神经网络模型(CN1和CN2区别于训练集的不同)
该网络由四个隐含层组成,每个隐含层含有24个特征通道,每一个特征通道都与8个随机选择的上一层的特征通道相连接。该网络的卷积核大小为5×5,网络的损失函数为带噪图像经过神经网络去噪后的恢复图像和真实图像的误差平方和,即:。除了对噪声已知的情况进行训练和去噪,作者还测试了噪声未知情况下的去噪情况,将在σ=[0,100]的范围内随机变化的不同水平的噪声加入真实图像,并进行训练,此时将隐含层设置为5层,相对于传统方法也取得了较好的效果。
2012年,Xie等利用栈式去噪自编码器(stacked denoising auto-encoder)进行图像去噪以及图像修复(image inpainting)[22],其网络结构为多层的全连接网络,如图2.2所示。
图2.2 栈式稀疏去噪自编码器(SSDA)
为了将稀疏编码的思想和深度神经网络结合,作者提出了栈式稀疏去噪自编码器(stacked sparse denoising auto-encoder, SSDA),其损失函数如下:
其中KL散度中的ρ^ 代表隐含层激活函数输出的平均值,如果我们设定较小的ρ,则可以通过优化损失函数,使得每一层中被激活的神经元尽可能少,以此达到稀疏约束的目的。训练过程为逐层训练,每训练完一层后,将训练用的数据(带噪图像)和标签(真实图像)都通过该层,将输出送至下一层作为数据和标签进行训练。
Burger等人提出了用多层感知机(Multi Layer Perceptron,MLP)的方法实现神经网络去噪[23],并说明如果训练集足够,MLP模型可以达到图像去噪的当前最优水平。MLP模型对噪声类型不敏感,对于不同类型的噪声,只要对带有该类噪声的图像进行处理,即可得到较好的结果。作者认为,MLP相对于CNN的优点在于,MLP可以近似所有函数,而CNN可以学习到的函数相对有限。为了使MLP网络达到最优水平,训练网络应足够大,分割图像得到的区块大小应足够大,以及训练集也应足够大。该方法的一个不足之处为它无法适应不同强度的噪声,若将不同水平的噪声图像作为输入进行训练则无法达到对特定噪声进行训练时的结果。
2016年,Mao等提出了深度的卷积编解码网络应用于图像去噪[24]。编码(Encoding)和解码(Decoding)结构对称,且每隔较少层就存在一条由编码卷积层到与其对称的解码层的跨层连接。该网络结构如图2.3所示。该网络共采用了对称的10层卷积层,其中前5层为编码层,后5层为解码层。在该CNN网络的编码层中,每隔2层就用一条跳线将编码层连接到对称的解码层,因此可以直接进行正向和反向传播。从该网络开始,图像去噪神经网络层数开始向更深层发展。以前的神经网络层数普遍较浅,原因在于:一方面,与图像分类等问题只需要提取关键特征的任务不同,图像的复原要求图像的细节在网络传播中不能丢失,而网络层数变深可能会导致图像细节的丢失;另一方面,层数较深容易在训练过程中导致梯度弥散,不容易收敛到最优解。由于该网络采用了卷积和解卷积层间的跳线连接,因此可以较好的解决上述的问题,因此网络相对较深。
图2.3 卷积编解码去噪网络结构(示跳线)
2017年,Zhang等提出用较深层的CNN网络,称为DnCNN[25],实现去噪,为了解决网络层数加深导致的梯度弥散效应,DnCNN并不对图像进行学习,而是以输出与噪声的l2范数为损失函数来训练网络。网络结构如图2.4所示。DnCNN网络可以视为一个残差学习的过程,这样可以较好的训练。在该网络中利用了BN层(Batch Normalization),实验表明BN层与残差学习共同使用可以提高模型的性能,DnCNN在不同噪声水平上训练,得到的结果要优于现在的最优结果,如BM3D等。
图2.4 DnCNN 网络结构