APP下载

基于改进U-Net神经网络的图像去噪算法

2022-04-06姜旭赵荣彩刘勇杰宋雯琦

科学技术与工程 2022年9期
关键词:网络结构高斯卷积

姜旭,赵荣彩*,刘勇杰,宋雯琦

(1.河南省超级计算中心,郑州 450053;2.郑州大学信息工程学院,郑州 450001)

图像去噪作为计算机视觉领域的经典问题,其任务目标是尽可能去除或消除外界噪声的同时保留原图像的清晰细节。本质则是减少数字图像中噪声的过程,对原始清晰的图像进行恢复和重建。生活中由于图像在采集、传输等过程中,因为环境、采集设备、人为等等因素的影响[1],图像难免会被噪声不同程度地污损,因此图像去噪任务显得非常重要。此外,图像去噪任务对于医疗、军工、光子等领域[2]也有非常重要的研究价值,处理后的图像质量好坏将直接影响后续任务的开展情况。

目前图像去噪的方法大致分为两类:基于传统算法以及基于深度学习的算法。基于传统算法的有双边滤波、高斯滤波、中值滤波、大小波变换等方法。上述方法都是在去噪的基础上尽可能地使得图像特征平滑以保留更多的边缘细节,所处理过的图像经常会模糊,原图的边缘细节纹理保留得也不是很清晰,效果较差。传统方法中最具有代表性的方法是块匹配三维协同滤波(block matching and 3D filtering,BM3D)。该方法是一种统计学习的方法[3],该算法把图像分成一定大小的块,然后把具有相似特性的块进行匹配形成一个3D阵列,将3D变换域中的收缩算子用于该3D阵列[4],通过逆变换得到去噪后的图像。虽然传统的方法在图像去噪任务上取得了不错的效果,但传统方法的弊端也暴露了出来:针对特定场景下的去噪测试,需要逐一手动设置参数、优化改进方法等。随着深度学习的发展,利用神经网络可以克服这些传统方法所带来的弊端。

基于深度学习的方法大都属于外部先验法。其中成功且经典的有:2017年,Zhang等[5]提出的卷积神经网络(denoising convolutional neural networks-DnCNN),DnCNN利用了残差学习以及批量归一化(batch normalization,BN)实现了网络去噪,解决了深层网络梯度爆炸弥散问题。2018年,Zhang等[6]提出了一种更加快速且灵活的去噪卷积神经网络(a fast and flexible solution for CNN based image-denoising,FFDNet)。FFDNet可以处理更为复杂的噪声,网络可以进行盲去噪。2014年,Goodfellow等[7]提出了生成对抗网络(generative adversarial networks,GAN),越来越多的研究者利用GAN网络来实现图像去噪。2018年,Chen等[8]等通过使用GAN生成噪声图像与干净的图像混成数据集,训练神经网络实现去噪任务。

虽然上述的传统去噪方法与深度学习的去噪算法都可以实现去噪任务,还原出较为清晰的原始图像。但得到的图像在视觉上看起来过于平滑,纹理特征显示的不明显,因此,现设计一种基于深度学习下的去噪算法。在U-Net网络结构的基础上进行改进,同时使用VGG16网络对处理过后的图像进行边缘特征提取,以达到更好的视觉效果。实验表明,使用所提出的算法图像效果在视觉上优于前面提出的几种算法,更加清晰,图像的纹理细节更加丰富和真实,提高重建后图像的整体质量。

1 算法原理

1.1 图像去噪框架及噪声模型

基于深度学习下的全卷积神经网络(full convolution neural network,FCN)[9]去噪模型其泛用性与去噪效果好坏依赖于训练数据图像与真实被污损的噪声图像之间相似程度。使用泊松高斯噪声来模拟实际噪声形成的过程(Poissonian-Gaussian noise)。对于高斯、泊松噪声来讲,其属于加性噪声[10]。

按照噪声组成来说,假定:f(x,y)表示给定的原始图像,g(x,y)表示图像集合,n(x,y)表示噪声项,则加性噪声可表示为

f(x,y)=g(x,y)+n(x,y)

(1)

从式(1)中可以看出,这种噪声是直接加在原始图像上面的。如高斯噪声、椒盐噪声[11]等。如果已知n(x,y)的形成过程,式(1)做减法即可获得原始图像信号,但这种方法往往是不现实的。

由于大多噪声在数学理想化中都可认为是近似满足高斯分布,因此高斯噪声模型是一种比较常用的噪声模型。假定随机变量z满足高斯噪声分布,则其概率密度函数为

(2)

式(2)中:z为图像的灰度值;μ为随机变量z的均值或期望值;σ为z的标准差。而对于泊松噪声来讲,如果z为0,1,2,…随机变量,则泊松噪声的概率密度函数为

(3)

z的均值和方差为

μ=σ2=λ

(4)

目前大多数基于噪声模型建模后的图像去噪算法公式为

(5)

1.2 去噪模块

1.2.1 原始的U-Net网络结构

所提出的改进算法是在原始的U-Net网络结构上进行改进的。图1即为原始的U-Net网络结构:采用2D U-Net的架构,左侧为编码过程(下采样)右侧为解码过程(上采样),初始输入为256×256的RGB图像,在编码过程中,使用大小为3×3的卷积核,2×2的maxpool对原图像进行降维编码处理。具体来说是在进行Conv卷积后,使用ReLU作为激活函数接池化(maxpooling)的操作。在解码过程(上采样阶段),使用大小为3×3的反卷积核,其中upscale代表上采样操作。解码过程中,网络接收到原图像通过Deconv反卷积操作后将Feature Map的尺寸大小翻倍,同时与左侧的Feature Map进行合并,最终在网络结构的最后一层解码出处理过后的图像,大小仍为256×256。选用的U型网络与通用的U-Net网络总体架构是一致的,在编码与解码过程中略有不同。

图1 原始的U-Net网络结构

1.2.2 U-Net++跳跃连接结构

改进使用的是U-Net++跳跃连接结构,U-Net++拓扑结构如图2所示。

图2 U-Net++拓扑结构

由图2可知,直观上来看U-Net++是将原始的U-Net网络每一层的任意两个节点之间都进行连接,同时不同深度的网络节点之间也进行了连接。如果单从一层网络结构来看,其与文献[5]中提出的DenseNet网络结构十分相似,因此,称这种结构为U-Net++密集连接结构。实际上,U-Net++网络结构还可以往上继续拓展,图2中只给出了3层这样的结构图。

使用U-Net++而并非传统的U-Net网络是因为相较于U-Net网络,U-Net++有两个优点:一是使用U-Net++网络结构可以避免在面向不同图像处理任务时网络深度的选择,即面向不同任务图像特征提取感受野的选择,加入深监督机制即可实现。同时使得剪枝操作(简化结构,缩减参数)成为可能。二是使用U-Net++跳跃连接应用到原U-Net网络中可以减少编码器与解码器特征映射之间的语义差距,在面向图像去噪任务时,优化任务可以更好地被处理。

1.2.3 使用U-Net++结构

改进后的U-Net网络结构如图3所示,在原网络的基础上使用更多的跳跃连接,使用密集连接的结构目的是让新网络在图像特征信息编码提取与解码恢复的过程中,任务更容易被处理。

图3 跳跃连接结构

图3中,第一层、第二层、第三层在原始U-Net网络中进行卷积和池化操作,使用大小为3×3的卷积核,2×2的池化,卷积步长Stride1。其中Output 1、Output 2、Output 3、Output 4与密集连接的下采样第一层、第二层、第三层之间做上扩展,去卷积化操作。

从图3可以看出,U-Net++相较于U-Net结构最大的区别就是在任意两层生成的Output特征图像之间采用了跳跃连接结构。

1.3 边缘信息提取模块

由于目前现有的算法在单一去噪任务时,处理后的图像边缘纹理细节保留的不是很好,因此加入了以VGG16为网络架构的边缘信息提取模块。加入VGG16边缘信息提取模块主要是对去噪网络处理后的图像再进行特征提取学习,目的则是恢复出更清晰的图像,同时,边缘模块还可以反传去噪后的图像经过多层提取网络的损失参数,用来反向优化去噪网络的性能。边缘模块具体网络参数配置如表1所示。

如表1所示,以VGG16为网络架构的多特征融合网络卷积核大小均为3×3,经过2层进行一次池化(maxpooling)操作,同去噪网络一样,包括卷积(conv)操作,使用ReLU作为激活函数接池化操作。

表1 边缘提取模块网络参数

文献[13-14]中,分别使用了CNN与FMN进行了边缘特征提取,受此影响,边缘提取网络在使用卷积进行特征提取后,对特征图进行多次池化,池化后,输入图像尺寸大小减半。随后对这些特征图进行特征学习、上采样,然后串接成最终的特征向量,恢复出处理后的图像。对于图像去噪任务,全局特征通常是与整体轮廓相关的信息,而局部特征则是图像的细节纹理,要想对噪声进行很好的去除,这两部分信息都是必需的。

2 数据集及评价指标

2.1 数据集

2.1.1 训练集

数据训练集使用的ImageNet是数据集中的Val40K,即Imanet-val 40K。其中ImageNet数据集是计算机视觉领域一个较大的公共数据集,其被广泛用于视觉领域的比赛应用中,在针对普通图片做去噪任务时,选取的是Val40K中的数据集,选取44 283张图片作为训练集,BSD300数据集是超分辨率任务常用的数据集,其中包括200张训练集图片与100张测试集图片。

2.1.2 测试集

用于测试本文算法效果的测试集分别选取的是Set5、Set12、Kodak、CBSD68数据集。使用多类型的图像数据进行测试可以更好地模拟真实场景下的去噪效果。

2.2 评价指标

图像质量的好坏可以用测得的图像峰值信噪比(peak signal to noise ratio,PSNR)与结构相似性(structural similarity,SSIM)进行判定,目前在图像去噪任务中均使用这两种客观评估方法。PSNR和SSIM的数值越大就代表图像质量越好,越清晰。反之数值小则代表图像模糊,视觉效果差[15]。

PSNR为图像处理领域最常用的评价指标,在均方误差基础上求得,可表示为

(6)

式(6)中:MAXI为图像像素的最大值;MSE为M×N大小的图像与处理后图像之间的均方误差。

SSIM是通过比较图像结构信息改变来判断图像的失真程度。其定义为

(7)

式(7)中:μikμik′、σikσik′分别为图像k与kr以第i个像素为中心的窗口中平均值与标准差;NR为图片数量;a1、a2为常数,分别为(0.01L)2、(0.03L)2;L为图像的动态范围[16]。

3 实验与结果

3.1 实验环境

实验平台为国家超级计算郑州中心超算系统,实验在NVIDIA Tesla P100 16GB机器上运行。CUDA9.1,CUDANN7.0的硬件环境以及以TensorFlow相关的库为框架搭建,以Python为编写语言的软件环境。

3.2 参数设置

输入图片为256×256大小的RGB图像,一共44 283张,实验的批尺寸(batch-size)设置为1 107,整个训练流程迭代轮数(epoch)设置为100,学习率(learning-rate)设置为0.001。损失函数设置为L2损失函数,训练流程中每迭代10轮进行一次模型保存操作。实验优化过程选择Adam优化器,整个实验训练时长共约40 h。

为了探究不同程度噪声对实验结果的影响,使用的加性噪声Poissonian-Gaussian noise模型中,噪声水平σ分别设置为25、30、35、45、50。

3.3 实验结果分析

3.3.1 不同方法下去噪效果

去噪方法与目前常见的经典去噪方法(或模型)在不同噪声水平下对测试数据集的PSNR和SSIM数值对比如表2所示。同时对使用的去噪方法与文献[17]中所用方法进行了对比,图4和图5分别对应的是在高斯噪声σ为25、泊松噪声λ为30的影响下,本文算法测得BSD300测试集上的PSNR数值。表3为两种方法对比情况。

表2 不同噪声水平下各算法去噪结果比较

图4 高斯噪声σ=25下的PSNR数值与L2曲线

图5 泊松噪声λ=30下的PSNR数值与L2曲线

表3 本文算法与文献[17]中算法去噪结果比较

3.3.2 实验量化结果分析

表2为在不同噪声水平下各算法去噪结果比较,从表2中可以看到不同方法下对测试集进行测评的结果。最后一栏为使用本文算法所测得的PSNR和SSIM数值,由表2可以看到,传统去噪方法下的BM3D算法在测试集中所测得的PSNR和SSIM数值均小于深度学习下的几种算法。可见,在去噪任务上使用深度学习下的方法更加具有优势。表2中,除了在Set12数据集下,其他数据集所测得的PSNR和SSIM数值呈现逐渐增加的趋势,尤其在CBSD68数据集下效果极为明显。使用本文算法所测试的PSNR和SSIM数值均高于传统方法下的BM3D算法、深度学习下的DnCNN和经典的FFDNet算法。对文献[17]中所用方法与本文算法进行了对比,结果如表3所示,在加性高斯白噪声σ=25情况下,使用本文算法进行去噪,在Kodak、BSD300、Set14这3个测试数据集下进行测试,得到的去噪效果优于文献[17]算法。在泊松噪声下,明显是劣于文献[17]中的。由于加性高斯白噪声可以很好地模拟真实噪声,对测试集下图片使用白高斯噪声加噪,然后使用不同去噪方法进行对比实验,结果如图6所示,可以看到本文算法的去噪后图片效果是优于其他几种去噪方法的。

图6 在噪声水平σ=25下不同方法在测试集上的去噪效果对比图

3.3.3 算法效率分析

除了对不同方法下的去噪效果进行了对比,还对不同方法下所测得的时间进行了评估。具体结果如表4所示。

表4 不同算法下各平均耗时对比结果比较

测试使用的是512×512像素大小的图像,均来自验证集。测试时,在相同配置的不同机器上进行运行。由表4可见,传统的CBM3D算法运行时间最长,单幅图片去噪为6.5 s,DnCNN和FFDNet运行时长分别为0.8 s和0.3 s。本文算法最大运行时长为1 s,最小为0.8 s。

在运行效率上,本文算法和DnCNN基本上相一致,由于FFDNet[18]旨在快速去噪,所以运行时间上较短。总体来说,本文算法和经典算法DnCNN和FFDNet均可在1 s内完成单张图片去噪任务,且本文算法在图片质量上更加清晰,算法效率较高。

4 结论

提出一种改进U-Net神经网络的图像去噪算法,使用了U-Net++中的跳跃连接结构,密集连接的U型去噪网络可以减少编码器与解码器特征映射之间的语义差距,以便还原出更清晰的图像,同时还加入了基于VGG16设计的边缘提取模块,处理去噪后的图像的同时反向优化U型去噪网络,从而更好地还原出图像的纹理细节问题。根据实验结果中数值的显示,使用本文算法在Set5、Set12、Kodak、CBSD68数据集上评价指标PSNR和SSIM数值均优于目前具有代表性的几种算法,而且在图像上纹理细节恢复的更加明显,图像质量有所提升。

虽然本文算法测得的效果优于现有的算法,但是在一些图像上(如Set12数据集)效果不够明显,后续会针对通用场景下进行研究,在图像去噪任务上进行探索。

猜你喜欢

网络结构高斯卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
数学王子高斯
天才数学家——高斯
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
基于时效网络的空间信息网络结构脆弱性分析方法研究
基于互信息的贝叶斯网络结构学习
复杂网络结构比对算法研究进展
从自卑到自信 瑞恩·高斯林