陈清江, 吴田田
(西安建筑科技大学 理学院, 陕西 西安710055)
图像去雨与图像去雾、图像去噪、图像去模糊等都属于图像恢复问题。在雨天环境中,雨水会使图像发生形变、模糊、目标遮挡、可视性差等问题,严重影响了户外计算机视觉系统的正常应用。因此,图像去雨算法是一个重要而有应用价值的研究课题,它包括视频去雨[1-5]和单幅图像去雨[5-22]。视频去雨算法直接利用图像帧间像素信息识别与去雨,而单幅图像去雨算法的研究更具挑战。
目前,单幅图像去雨算法主要是基于滤波器[6]、字典学习[7,12]、稀疏编码[9-10]、高斯混合模型[8]以及深度学习网络[13-14]。2013,Zheng等人[6]提出了一种多引导滤波的单幅图像雨雪去除方法,通过引导滤波器对雨天图像的高频部分和低频部分进行恢复;2015年,Luo等人[7]提出了一种判别字典学习与稀疏编码的方法,将雨条纹与图像背景分开后去除雨条纹,但是去雨后的图像上仍有雨条纹残留;2016年,Li等人[8]提出一种基于高斯混合模型的去雨方法,但是存在雨残留和难以准确估计高斯混合模型的问题。自2017年以来,单幅图像去雨进入了一个深度学习时代。Fu等人[13]提出了DerainNet网络,只对图像的高频部分进行网络训练,造成图像色泽上的损失,且在背景区域仍然存在雨条纹的残留痕迹,从而导致去雨效果不理想。随后,Fu等人[14]基于图像领域知识和ResNet网络结构,提出DDN网络对高频部分实行去雨操作,实验效果显著优于不做这一操作的结果。Yang等人[15]提出基于区域的雨水模型,利用扩张卷积和级联学习,将去雨任务分解为多阶段任务。对于雨滴去除的算法。2018年,Qian等人[16]提出一种基于 GAN 的去雨方法,建立生成网络和判别网络,有效地去除图像中玻璃上的雨滴。Zhang等人[17]提出了一种密度感知多路密集网络DID-MDN,完成雨滴密度估计和雨滴去除。2019年,Chen等人[21]提出了一种端到端的去雾和去雨网络GCANet,利用平滑的扩张卷积避免网格伪像,并且应用门控子网络来融合不同级别的特征,实现雾天图像和雨天图像的恢复。而上述去雨算法多数是对雨天图像分解后再进行去雨,存在去雨图像细节或纹理信息丢失及雨纹残留的问题。
为克服去雨图像细节模糊或纹理信息丢失问题,本文提出一种基于联结残差网络的单幅图像去雨算法,未对雨天图像进行雨纹层和背景层分解,使得图像信息得到较好的保存。首先,利用改进的残差块进行残差学习,提取雨天图像的特征信息;其次,设计联结结构,实现多特征提取雨纹信息,提高去雨算法的性能;最后,通过一个单尺度卷积重建图像,进一步提升去雨图像的视觉效果。
在图像去雨算法中,一般的雨模型[7-8]表示为:
X=B+R,
(1)
式中,X表示有雨源图像,B表示无雨背景,R表示雨条纹层。由此,存在雨模型将有雨图像X和无雨图像Y看作是低频部分(基础层)和高频部分(雨纹细节层)的叠加,并通过滤波器分解,其模型[13-14]可表示为:
(2)
AA 中,base表示基础层,detail表示细节层。此模型只在细节层上进行去雨操作,没有检测和去除基础层上的雨纹,并且在图像分解过程中容易造成信息丢失。
为此本文采用式(1)直接利用联结残差网络学习有雨图像和无雨图像的映射关系f(X),检测有雨图像中的雨纹特征,并使用最小化均方误差损失函数(MSE)作为目标函数,计算无雨图像与去雨估计图的期望值,即
(3)
式中,N表示训练样本数,w表示网络参数,f(Xi)表示网络结构第i个样本的去雨估计值,Yi表示第i个样本的无雨图像。
现有的基于深度学习的图像去雨算法大多都是对图像先分解后去雨,且分解的方式不同,较多是高低频分解、RGB转YUV通道分解,而在使用分解算法时容易造成图像信息丢失、色差等问题。因此,本文在不分解图像的基础上,直接通过端到端训练联结残差网络,提出了一个14层的去雨网络。由于网络深度较浅,收敛速度快,能较好地保留图像细节信息,具有良好的去雨效果。
联结残差网络是对残差网络的残差块进行改进,并利用Concat函数跳跃连接残差块与卷积神经网络,建立联结结构,提高模型性能。其网络结构主要是由3个残差块、2个联结结构和1个单尺度卷积组成,如图1所示。
图1 联结残差网络结构Fig.1 Structure diagram of the concatenation residual network
ResNet网络是由残差块(Residual block)构建的,残差块是一个两层神经网络,常见网络结构为图2(a)。本文对图2(a)的残差块进行改进,将残差块每个卷积层的批量正则化BN(Batch Normlization)去掉,激活函数ReLU换成PReLU,如图2(b)所示,并满足以下公式:
(4)
其中,*表示卷积操作,W表示卷积权重,b是偏置值,P(X)代表PReLU激活函数。PReLU是增加了参数修正的ReLU,表达式为:
PReLU(xi)=max(xi,0)+aimin(0,xi),
(5)
式中,xi为第i层的正区间输入信号,ai为第i层的负区间的权系数,如果ai=0,那么PReLU退化为ReLU;当输入为负时,梯度为0,会产生梯度消失问题。因此本文给定ai初始值为0.25,并在反向传播过程中采用带动量方式更新,防止梯度消失,即:
(6)
式中,系数μ和ε分别是动量和学习率。
运用改进的残差块可以简化网络模块,并减少了网络参数,大大提升了网络训练速度,而且激活函数的参数变化是灵活的,不是固定参数,避免神经元单侧抑制。联结残差网络使用了3个改进的残差块,其卷积核大小都为3×3,但每个残差块的通道数因受联结结构的影响而不同,分别为16,48,80,实现不同通道数特征图的残差学习,提高训练精度。
图2 (a)残差块结构;(b)改进的残差块结构;(c)联结结构。Fig.2 (a) Structure of the residual block; (b) Improved residual block structure; (c) Concatenation structure.
本文提出的联结结构是利用卷积神经网络的Concat函数跳跃连接构建的,Concat函数可以使网络模型变宽,并把多个分支联结起来作为后续层的输入,以提高模型性能,其合并方式主要在channel或num维度上。在Caffe中数据通常为4个维度,即num×channel×height×width。本文是在channel维度上建立的联结结构,在操作过程中需要满足除channel维度外其余维度必须一致的条件,结合残差网络将其3层联结的结构称为联结结构,如图2(c)所示。若有3个卷积层联结,则表示为
输入Xl:N*k1*H*W,
Conv1:N*k2*H*W,
Conv2:N*k3*H*W;
输出:N*(k1+k2+k3)*H*W,
(7)
式中,N表示批处理数,ki表示通道数,H表示特征图的高,W表示特征图的宽。其将网络通道拓宽为k1+k2+k3,并把N*(k1+k2+k3)*H*W作为下一层的输入,增加网络特征图的输出。
本文的联结残差网络在第一个残差块回归学习雨特征后,与Conv4、Conv5合并构建第一个联结结构Concat1,其卷积核参数必须满足式(7),如表1所示。故Concat1的卷积核为48×3×3,网络宽度从16变为48,较之前提取更多的特征图。然后,将Concat1作为下一个残差块的输入,使之卷积核大小设为48×3×3,残差学习后与Conv8、Conv9合并再次构建第3个联结结构Concat2,卷积核为80×3×3,进一步扩宽网络为80。随之第3个残差块的卷积核大小依据Concat2的参数也变为80×3×3,最后通过一个单尺度卷积实现图像重构。而两个联结结构的使用不仅扩宽了网络,有效减少了网络参数,增加特征图的输出,实现多特征提取,更有利于保留图像细节信息,提高网络性能。
根据联结残差网络结构的设计,可将本文算法具体分为5步,如表2所示。
表1 两个联结结构的卷积核设置Tab.1 Convolution kernels setting of two concatenation structures
表2 算法步骤Tab.2 Algorithm steps
续 表
其中,N表示训练样本数,l表示卷积层数,W表示卷积权重矩阵,b是偏置矩阵,P(·)代表PReLU激活函数;C(·)表示Concat函数联结操作,k表示联结层数,θ设置Concat函数参数。
联结残差网络的目标是使LMSE值最小,并利用随机梯度下降法(SGD)按照负梯度方向来更新网络训练参数,其中采用固定的学习率,设置为0.000 1,支持动量参数为0.9,权值衰减值为0,而整个训练过程在GPU模式、Caffe框架下经过25万次迭代终止,最终训练网络收敛到0.500 5±0.062 4。
实验采用合成雨天图像数据集test12[13,15],Rain100L和Rain100H[15],选取102幅合成雨图及所对应的无雨图像作为训练网络的数据集,其中61幅作为训练集,41幅作为测试集。真实雨天图像实验数据集是从Practical[14]和real[15]选取的。为了验证本文算法对雨天 图像的去雨效果,将其与传统的去雨算法Zheng等人[6]算法以及基于深度学习的DerainNet算法[13]、DDN算法[14]和GCANet算法[21],分别对合成雨天图像数据集和真实雨天图像数据集进行对比实验,并从主观和客观方面对去雨结果分析。
为了验证本文去雨算法对合成雨天图像的去雨效果,选取了4幅合成雨天图像进行实验,并将本文算法与其他算法进行比较,如图3~6所示。
图3 不同算法对合成雨天图像Opera House的去雨结果Fig.3 De-rained results of different algorithms on synthetic rainy image “Opera House”
图4 不同算法对合成雨天图像Spinal Building的去雨结果Fig.4 De-rained results of different algorithms on synthetic rainy image “Spinal Building”
图5 不同算法对合成雨天图像Horses的去雨结果Fig.5 De-rained results of different algorithms on synthetic rainy image “Horses”
图6 不同算法对合成雨天图像Kids的去雨结果Fig.6 De-rained results of different algorithms on synthetic rainy image “Kids”
根据图3~6给出4幅合成雨天图像及其部分放大图在几种算法上的去雨结果,从主观上观察,Zheng等人[6]算法的去雨图像不仅残留雨纹,还使物体的纹理过平滑,图像变模糊,出现了虚影;DerainNet算法[13]去雨后仍有较多的雨纹,其在马身、衣服及天空附近尤为明显;DDN算法[14]有明显的去雨效果,但是也存在少量的雨纹;对于GCANet算法[21]的去雨结果,从部分放大图像上可以观察出,去雨图像产生了色彩失真的现象,且去雨效果不明显。而本文算法在合成雨天图像上具有更加明显的去雨效果,几乎没有雨纹残留,细节和纹理信息也保留完整。
表3 合成雨天图像去雨结果的SSIM和PSNR评估Tab.3 SSIM and PSNR evaluation of the de-rained results on synthetic rainy images
本文也从客观方面定量评估几种算法的去雨效果,主要使用结构相似度(SSIM)和峰值信噪比(PSNR)作为评价指标,对4幅图像进行对比,如表3所示。传统的Zheng等人[6]算法和DerainNet算法的评价指标较低,DDN算法和GCANet算法的评价指标相对较高,而本文算法的结构相似度(SSIM)和峰值信噪比(PSNR)的平均值在0.95与33 dB以上,计算结果都高于其他算法,说明了本文去雨算法的有效性。从而在定量和定性评价中,说明了本文基于联结残差网络的去雨算法的去雨结果优于其他算法。
针对真实雨天图像,将本文算法与其他算法在3幅真实雨天图像上进行对比实验,如图7所示。
图7 不同算法对真实雨天图像的去雨结果Fig.7 De-rained results of different algorithms on real-word rainy images
图7为3幅不同时间段、不同场景的真实雨天图像的去雨结果。观察Zheng等人[6]算法的去雨结果,算法在去雨的同时也使图像细节变得模糊,且有很明显的雨纹残留;DerainNet算法的去雨图像仍有雨纹没有去除干净;DDN算法也存在较少的雨纹,在“Couple”的衣服和车窗上尤为明显。同时,Zheng等人[6]算法和DerainNet算法在夜晚大雨环境下的去雨效果不佳,而DDN算法和本文算法对夜晚雨天图像的去雨效果明显,但是都有雨雾存在。相对而言,GCANet算法去除雨雾的效果较好,但是对于雨纹的去除效果不明显,而本文算法去除雨纹的效果明显,去雨图像也具有较好的视觉效果。
由于真实雨天图像没有无雨图像作对比,所以不能使用SSIM和PSNR定量评估。本文采用图像清晰度(Q)和平均梯度(Average Gradient,AG),以及无参考图像评价指标-自然图像质量评估(NIQE)[26]和盲图像质量评估方法(NBIQA)[27]对真实雨天图像去雨结果进行对比。平均梯度反映了图像的清晰程度及图像中微小细节反差和纹理变换特征,值越大说明图像越清晰。而无参考图像评价指标NIQE和NBIQA的值通常在0和100之间,值越小表示图像质量越好。表4是图7在这几种评价指标下的对比结果。
表4 真实雨天图像去雨结果的定量评估Tab.4 Quantitative evaluation of the de-rained results on real-world rainy images
续 表
从表4可以明显看出,基于深度学习的去雨算法较传统算法的去雨效果更优。对于“A Rainy Night”的去雨结果,GCANet算法的去雨图像清晰度(Q)较高(Q=0.028 5),说明其有去雨雾的作用。计算去雨图像的平均梯度(AG)、NIQE和NBIQA三个评价指标,本文算法的评估值都优于对比算法的值。分析“Road”和“Couple”的去雨图像评估值,本文算法的图像清晰度和平均梯度都相对较高,表明了图像更清晰。同时,NIQE和NBIQA两个指标值较低,更说明了本文去雨算法对真实雨天图像有较好的去雨效果,图像质量优于其他算法,能更好地应用于真实世界。
本文提出了一种基于联结残差网络的单幅图像去雨算法,该方法不分解雨天图像的雨纹层和背景层,直接对残差块进行改进,构建联结结构,建立了一个浅层网络,减少了网络参数,实现了不同通道的残差学习,多特征提取雨纹信息,并通过单尺度卷积来实现图像重建,进一步提升了去雨图像的质量。实验结果表明,本文算法不仅对合成雨天图像具有良好的去雨效果,结构相似度的平均值高于0.95,峰值信噪比的平均值大于33 dB,也能更好地应用于真实雨天图像,其盲图像质量评价值相对较低,且图像的边缘细节和纹理信息保留完整。