APP下载

基于深度卷积神经网络的图像去雾算法

2019-08-14李晓戈薛倩茹

计算机应用与软件 2019年8期
关键词:卷积神经网络颜色

李晓戈 薛倩茹

(西安邮电大学计算机学院 陕西 西安 710121)

0 引 言

近年来,天气成为了影响图片质量的重要因素,太阳、雾或灰尘中的浮动颗粒导致图片褪色、模糊,对比度和柔和度都降低,这是由于在传播过程中光被混浊介质(例如颗粒和水滴)吸收和散射的事实。这些降级的图像不仅影响照片质量,还限制了图像分类[1-2],视频分析和识别[3]、城市交通[4]、视觉监控、航空图像[5-6]等的应用。因此,图像去雾成为了一个很有前途的研究领域。现有的图像去雾方法主要分为两类,分别是非模型算法和模型算法[7]。非模型算法是通过物理方法调整图像灰度对比度或是用滤波器过滤低频信息保留图像的高频信息,比如直方图均衡化[8]、Retinex算法[9]、同态滤波算法[10]等。这些方法从光学成像原理进行去雾,使图像颜色之间的对比度间更加均衡,图像效果更加柔和,但得到的图像在对比度上得不到有效的增强,弱化了原图中暗或亮的区域,模糊了图片中的重点。模型算法则是通过逆图像成像的原理来进行图像去雾的。如Zhu等[11]对场景深度进行建模,并利用监督学习调整模型参数以恢复深度信息,再利用深度图通过大气散射模型估计透射率来达到去雾效果,但是在大气散射模型中的散射系数在非均匀大气条件下不能被视为常数,所以在某些传输情况下容易低估传输。He等[12]通过暗通道先验来估计雾度的厚度,并通过大气散射模型恢复无雾度图像,但不能很好地处理天空中的图像。Meng等[13]用高效的正则化消除模糊,对传输函数的固有边界进行约束,并与L1正则化相结合,通过建模对结合后的函数求最优化问题以估计未知场景的传输,来达到去雾效果,但由于有些干净的像素可能具有与有雾的像素相同的颜色,会导致场景的过度或者不充分的增强。Ling等[14]开发简单的雾密度评估器,并通过评估器恢复图像透射率和雾密度之间的数学关系,把去雾作为恢复雾密度的最小化问题,以达到去雾效果,但会加重图像的颜色,导致与原图颜色出现误差。

随着卷积神经网络的快速发展,越来越多的学者通过深度学习进行图像去雾来改善已有图像去雾方法中的缺陷。通过构建具有多种层次的机器学习模型和海量的训练数据, 学习图像中更有用的特征。如徐岩等[7]通过多尺度特征融合提升对图像细节的重建,将浅层卷积得到的轮廓信息和深层卷积得到的细节信息进行融合,以提升去雾效果,但是对原图中白色区域的去雾不彻底,会出现灰色区域。Ren等[15]提出的运用粗细卷积神经网络的级联对图像中的场景和细节进行全面系统的提取,使得得到的清晰图像更接近原图,但该模型对于夜间的有雾图像的去雾效果却一般,得到的图像仍然朦胧。任静静等[16]提出的快速神经网络模型,用物理方法与神经网络方法相结合,在数据集上先用傅里叶变换在频域上对雾化图像做预处理得到新的数据集,再用快速神经网络模型处理此时新的数据集,已达到对图像的清晰度恢复。本文根据雾化图像的特征得知雾痕不但留在图像的高频信息中,而且影响图片的细节特征,但是图像中的低频信息受到的影响却很小,由此发现不需要通过物理方法对图片预处理也可以达成效果,并且在时间上大大节省了前期工作,所以对图像的去雾可以看成是对雾化图像高频信息的提取,和与低频信息的合并。本文提出了一个20层的深度卷积神经网络,获取到图像上的高频信息,并与雾化图像的低频信息相结合,实现去雾图像的重建。

1 基本原理

1.1 去雾基本原理

图像去雾是指从雾霾、雾或烟雾引起的单个嘈杂帧中恢复清晰图像,这是计算机视觉中的经典问题。 我们可以将有雾图像的公式表达为:

I(x,y)=J(x,y)t(x,y)+A[1-t(x,y)]

(1)

式中:I(x,y)和J(x,y)是观察到的模糊图像和清晰图像的场景辐射,A是全局大气光强度,t(x,y)是描述该部分的场景传输。假设雾度是均匀的,我们可以表达为:

t(x,y)=e-βd(i,j)

(2)

式中:β是消光系数,不同程度的雾对应的β是不同的;d(i,j)是场景深度。

1.2 CNN原理

CNN是深度学习的方法之一,是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。一个最典型的卷积网络,由卷积层、池化层、全连接层组成,网络构架如图1所示。

图1 卷积神经网络框架图

其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。卷积层完成的操作,可以认为是受局部感受野概念的启发,而池化层主要是为了降低数据维度。综合起来说,CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

2 深度卷积神经网络去雾

2.1 网络模型

为了实现图像去雾,本文提出了基于深度卷积网络的模型,主要分为三个步骤:特征提取、深度卷积特征融合以及高频与低频特征融合。

本文的网络模型,由于卷积次数多,为了避免因为池化层导致图像信息丢失,去掉所有池化层,采用的是全卷积网络结构。通过端到端的网络结构,使输入的有雾图像和清晰图像通过网络模型建立出图像的细节和轮廓的学习模型,使最终输出的为清晰图像。本文的算法框架模型如图2所示。

图2 深度卷积神经网络的模型

其中A代表雾化图像,B代表清晰的无雾图像,C代表去雾后的清晰图像。我们从大量文献得知,雾化图像中的信息主要为低频信息,而清晰图像中的信息主要为高频信息,根据本文的网络模型得到的清晰图像,我们发现的确是高频信息居多,所得到的细节信息的确变得清晰了,但是图像的轮廓信息的变化并没达到理想效果。所以针对雾化图像对低频信息保留完整的优点,本文将经过深度卷积网络的高频清晰图片与雾化的低频信息图像进行特征融合,使得最终得到的清晰图像,不论在具体细节,还是在大体轮廓上都得到更好的效果。

2.2 特征提取

根据模型的深度为20层卷积,由感受野的公式2d+1可以得到,该模型的感受野为41,因此将图像的输入尺度定为41×41。所以模型中特征提取的部分为第一个卷积层,每次用来提取图像中一个小块的细节及信息轮廓,该卷积核大小为3×3,卷积核数量为64。模型通过卷积进行特征提取,计算公式为[7]:

Gl(Y)=Wl×Fl-1(Y)

(3)

式中:Wl为第l层卷积层,Gl为输出的特征图。Wl由nl×fl×fl个参数组成,其中fl为卷积核的尺寸,nl为卷积核的数量。

本文所选取的激活函数是修正线性单元(Rectified Linear Unit,ReLU),使用ReLU得到的收敛速度会比 sigmoid/tanh 快很多,使得我们的模型速度提升明显。加入激活函数后的卷积层输出公式为:

Fl(Y)=ReLU[Wl×Fl-1(Y)+Bl]

(4)

式中:Fl为最终的特征输出图,Bl为第l层的偏置。

2.3 深度CNN

要使有雾图像变成清晰图像,不但要处理小尺度的纹理信息,还要处理大的轮廓信息,为了使这些信息可以更好地被学习,输出的图像更加接近清晰的图像,本文采用深度的神经网络进一步提取和学习图像的特征。该方法由18层的卷积网络构成,卷积核大小和数量都分别为3×3和64,该方法步骤如下:

第一步:把第一个卷积层得到的图片,复制成18个大小及细节都相同的图片;

第二步:分别输入到18层中,每层分别获取图片中的不同特征,并对所选取的细节特征和轮廓特征进行学习,在合理的时间范围内充分学习,提高卷积层的学习效率。

第三步:将前18层所得的特征信息经过一个卷积核大小为3×3,卷积核数量为1的卷积层进行加权合并,更好地实现雾天图像的去雾重建。

2.4 损失函数

本文在网络训练时采用的损失函数是均方误差(Mean Squared Error,MSE)和L2正则化。L2正则化可以防止模型过拟合,得到的解比较平滑,且更小,输出结果更加接近原始图像,所以最终损失函数公式为:

(5)

式中:MSE代表均方误差,ω代表权重,n代表训练样本大小,λ代表正则系数。学习率为0.000 1,学习率所采用的指数衰减为0.1,训练轮数为10轮,其中每两轮学习率变为原来的0.1倍。

3 实验及结果分析

3.1 实验数据预处理

本文采用的是VOC2012数据集,选取其中的1 475幅图片利用大气散射模型与清晰图像用MATLAB建立雾天图像库,并选取其中的1 375幅作为原始的训练样本,100幅作为原始的测试样本。实验在Windows 10环境下完成,用1080 Ti的显卡,采用的是深度学习中的TensorFlow框架。

因为我们的图片输入尺寸为41×41,所以对原始的1 475幅图片进行样本的分割及增强,把原始样本都分割为41×41的小图片,舍弃分割后不足输入尺寸的图片,再对分割后的图片进行0°、90°的旋转和0°、90°的翻转变成4倍,最终我们得到的训练集为539 296幅图片,测试集为34 670幅图片。

最后为了验证本文网络模型的有效性和性能测试,采用处理一幅有雾图像的时间和PSNR作为结果评价标准。

3.2 与模型算法去雾结果分析

为了验证本文算法对于图像去雾的有效性,将本文的算法和已有的去雾算法进行比对(Meng算法[13]、Zhu算法[11]、He算法[12]、Ling算法[14]中的最优OTSFDE模型)。图3-图5分别是对人物,物体近景和远景比对的实验结果。

(a) 雾天图像 (b) Meng算法

(c) He算法 (d) Zhu算法

(e) Ling算法 (f) 本文算法图3 人物图像的去雾效果对比

(a) 雾天图像 (b) Meng算法

(c) He算法 (d) Zhu算法

(e) Ling算法 (f) 本文算法图4 近景景物图像的去雾效果对比

(a) 雾天图像 (b) Meng算法

(c) He算法 (d) Zhu算法

(e) Ling算法 (f) 本文算法图5 远景景物图像的去雾效果对比

可以看出:Meng算法中,由于远处天空的颜色和雾的颜色太过相似,使得建立的模型有偏差,得到的清晰图像被过度增强,在颜色上相比较原图过于亮丽,甚至在以白色为主体的物体上严重曝光,影响了图片整体的视觉吸引力。He算法在天空和白色物体的处理上效果不理想,颜色不清晰,有出现马赛克的情况,并且在近景图像中白色物体与其他颜色物体的交界处会有白色的晕圈,边界效果不好。用Zhu算法去雾后的图像与本文算法去雾后的图像对比,可以明显看出Zhu算法去雾的效果不是很理想,去雾不彻底,图像看上去仍然有一层薄雾的感觉,尤其在远景情况下,远处的去雾效果变化不大。Ling算法在对于图像颜色处理时,会加重图像本来的颜色,使图片的整体效果偏冷色,甚至在大面积的颜色上会改变图像原有的颜色,图片的整体观感不好,影响了图片的视觉吸引力。本文的算法,在近景上对于图像颜色的恢复更加符合原图的颜色,在白色为主的区域上去雾更加彻底,在远景上对图形整体的色调更加均匀,不会产生某个地方过度曝光,整体对图像去雾效果显著。

为了显示本文算法的优势,我们对处理一幅有雾图像的时间进行对比,如表1所示。可以明显看出文本的方法在进行图像去雾时间比其他算法有明显的提高,与Meng算法的时间差距最大,在人物、近景、远景上分别提高了3.726 s、2.265 s、3.763 s。在人物上与He算法的时间差距最小也有0.621 s,在近景上与Ling算法的时间差距最小为0.643 s,在远景上与Ling算法的时间差距最小为0.909 s。可以看出,模型的优越性更好一点,尤其在处理分辨率越高的图片上速度的提升会更加的明显。

表1 不同算法在处理图片时间上的比较 s

为了进一步验证本文算法的优势,用PSNR对去雾效果进行对比。这种量化实验采用常用的PSNR,表示信号最大可能功率和影响它表示精度的破坏性噪声功率的比值,可以对图像恢复的整体性能进行评价[16]。当PSNR值越高时,代表图像的去雾效果更好,公式可表示为:

式中:T表示图像像素强度的最大值。

图6-图8所示为人物、近景景物、远景景物在不同的算法下PSNR值的对比。可以看出,无论是在人物、近景景物、远景景物,本文的PSNR值都是最优的,比其他算法都有大幅度的提升,尤其在对人物的处理上是Ling算法PSNR值的1.5倍,在远景景物的处理上是Meng算法PSNR值的1.5倍,这都得益于卷积神经网络对图像特征的自动提取效果很好,使其能够从雾天的图像中得到重要的信息,实现图像更加精准的重建。

图6 人物图像去雾后的PSNR值比较

图7 近景景物图像去雾后的PSNR值比较

图8 远景景物图像去雾后的PSNR值比较

3.3 神经网络去雾结果分析

为了进一步验证本文算法的优势,把它与多特征融合的卷积神经网络模型(文献[7]算法)和快速卷积神经网络模型(文献[6]算法)进行比较,分别选取文献[7]算法中用到的美国明德大学的图像库中的Teddy图片和文献[16]算法ILSVRC2012数据集中的图片进行去雾比较,图9-图10是两种神经网络模型的去雾实验对比结果。

(a) 原始图像 (b) 雾化图像

(c)文献[7]算法 (d) 本文算法图9 与多特征融合神经网络模型的去雾效果对比

(a) 原始图像 (b) 雾化图像

(c) 文献[16]算法 (d) 本文算法图10 与快速神经网络模型的去雾效果对比

通过图片可以直接看出经过本文算法去雾后的图片在轮廓线条上比文献[7]算法更加清楚,对于原图中左侧的白色画布颜色处理更加准确,保持了画布的原本的白色主体,但是在文献[7]算法上,只有在画布上与其他颜色的过渡有白色线条,但整体的白色画布上呈现的是分布不均匀的灰色阴影。两幅图在PSNR上,文献[7]算法为27.719 dB,本文算法为28.742 dB。

同时,本文算法和文献[16]算法相对比,可以看出在狗的头部,本文的算法对于颜色的恢复更加接近原图,对图像去雾在效果上更加彻底,而对于草丛部分的去雾效果,经过本文算法处理后的图像,在草丛效果上的轮廓更加清晰,一些细节上的处理,比如狗链的部分也更加的突出。两幅图在PSNR上,文献[16]算法为27.362 dB,本文算法为26.569 dB。

根据以上对比实验可以得出,尽管验证的图片是其他数据集的图片,但是无论在直观效果,还是数据对比上,本文算法都具有一定的优势,对图片的处理更加的注重细节性。

3.4 夜间去雾结果分析

前文提到的Ren算法在处理夜晚或者黑暗条件下的有雾图像时有一定的局限,本文针对这个缺点所设计的算法同时对夜间有雾图像的处理效果也很好。图11-图12是Ren算法与本文算法在夜间图像去雾后的效果对比图。可以看出本文对夜间图像去雾效果要优于Ren算法,对于图片的右边的车站牌上的文字恢复得更加清晰,对黄色的地标线的轮廓也恢复得更加清楚。同时也可以看到,对于左上角的黑框中,本文算法的去雾更加彻底,在夜间灯光处不仅对轮廓保留清晰,而且对细节的把控也更加细致。在PSNR上Ren算法为18.452 7 dB,本文算法为25.362 7 dB,也可以得出本文的算法更适合对夜间有雾的图像做去雾处理。

图11 Ren算法去雾效果

图12 本文算法去雾效果

4 结 语

本文利用CNN学习参数少、自动提取特征值的特性,提出了一种新的CNN网络结构——深度CNN模型,把通过深度卷积网络得到的高频图像和原始有雾图像的低频图像相结合,弥补了原来图像去雾算法的颜色处理过度和天空颜色太接近雾的颜色而造成处理模糊等缺点和粗细CNN网络对夜间和黑暗图像去雾不彻底等缺点,在提高视觉效果的情况下,也提高了计算速度。实验结果表明,本文算法重建得到的去雾图像,在PSNR上平均增长了7~8 dB,更适合应用到实际中。

猜你喜欢

卷积神经网络颜色
基于递归模糊神经网络的风电平滑控制策略
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于神经网络的中小学生情感分析
基于傅里叶域卷积表示的目标跟踪算法
基于Q-Learning算法和神经网络的飞艇控制
特殊颜色的水