基于多阶段双残差网络的图像去雨模型

2022-11-24 01:53周冬明
无线电工程 2022年11期
关键词:特征提取残差卷积

杨 浩,周冬明,赵 倩,李 淼

(云南大学 信息学院,云南 昆明 650504)

0 引言

雨天采集到的图像因为存在大量的雨条纹,造成关键细节模糊和被遮挡,使得图像质量下降。这不仅严重影响人类的视觉感知,而且对图像分类[1]、目标检测[2]和图像分割[3]等各种高级计算机视觉任务的执行带来干扰。因此,近年来图像去雨方法受到国内外广泛关注[4-5]。图像去雨是为了从雨天采集到的图像中恢复干净的背景图像,这是一个具有挑战性的逆向问题。

目前,针对这个逆向问题已经做了大量工作,这些方法主要可以分为2类:基于视频数据的去雨算法[6]和基于单幅图像的去雨算法[4-5]。基于视频的去雨算法可以利用前后相邻帧的信息进行融合,从而大大降低了去雨的难度。而基于单幅图像的去雨算法无法利用这个信息,且雨线的随机分布特性使雨条纹的位置难以确定,因此单幅图像去雨一直是一个极其困难的问题。由于有雨的视频也是由多帧有雨图像构成,所以单幅图像去雨算法不仅可以处理单幅图像,也可以用于处理视频的每一帧图像来实现视频去雨。因此,单幅图像的去雨算法具有重要的研究意义和广泛的应用前景。

在深度学习被用于单幅图像去雨处理之前,传统的图像去雨算法主要是基于先验的图像去雨方法。这些方法通过对图像雨线层施加各种先验[4,8-9]并通过多次迭代优化来去除雨线。然而,这些去雨方法模型建立复杂、计算量大,并且去雨效果不理想,去雨后的图片细节大量丢失且有雨条纹残留。针对这些缺点,数据驱动的基于深度学习的方法通过卷积神经网络从数据中学习特征,并以端到端的方式将雨图像直接映射到无雨图像。基于深度学习的图像去雨方法比起传统去雨算法获得了前所未有的成功[10-13]。然而,大多数方法仍无法有效保留带有较多雨线场景的背景图像细节,现有方法往往在雨痕去除和细节保持之间进行折中,导致输出图像细节模糊和存在伪影等,大大地影响了单幅图像去雨算法的实际应用。

为了解决以上问题,本文提出了一种基于多阶段双残差网络的图像去雨。相比其他方法,使用多阶段网络将图像去雨问题分解为多个子问题并逐渐去除雨线,从而能够更彻底地去除雨线。相比起其他多阶段方法,本文算法的优点在于不同阶段间的信息进行交换。通过不同阶段的信息交换不仅能减少信息在不同阶段传输过程中的丢失,还简化了数据流使网络优化更加稳定。此外,本文提出了一个双残差图像重建网络,与传统残差网络相比,该网络拥有更多恒等映射路径,减少了信息丢失。最后,通过一个有监督的注意力机制在无雨图像的监督下实现将上一阶段的有用特征传递到下一阶段进行图像重建,丰富了下一阶段的特征。通过在4个合成数据集和1个真实数据集上对实验结果的客观评价和主观评价,本文提出的去雨算法相较于其他算法而言,色彩失真更小,图像细节恢复更好。同时,还在后续高级计算机视觉任务上对本文的去雨图像进行测试,本文算法能够有效提高后续计算机视觉任务的精度。

1 相关工作

1.1 基于先验的去雨算法

传统的图像去雨算法往往被看作是一个图像先验信息的优化问题。基于先验的方法是利用各种先验或假设对雨痕的方向、密度和尺寸进行建模,然后利用该模型进行去雨。Kim等[4]建立了一个椭圆形的核函数,分析每个像素位置椭圆核的旋转角度和纵横比来检测雨条纹区域,然后通过自适应选择非局部邻域像素及其权重,对检测到的雨痕区域进行非局部均值滤波来去除雨条纹。Kang等[14]利用双边滤波器将图像分解为低频和高频部分,然后通过字典学习和稀疏编码将高频部分分解为“雨分量”和“非雨分量”,从图像中移除雨线分量。Chen等[15]的方法既不需要雨点检测,也不需要耗时的字典学习阶段。相反,由于雨条纹在成像场景中往往表现出相似和重复模式,提出了一种从矩阵到张量结构的低秩模型来捕捉与时空相关的雨条纹。Li等[5]通过对背景层和雨纹层都施加高斯混合模型约束来去除雨条纹,这些约束可以适应各种背景外观以及雨带的形状,相比其他传统方法能够更好地去除雨条纹。基于传统算法的图像去雨在去除较小的雨条纹时取得了不错的效果,但对于大雨或骤雨产生的雨条纹,传统算法几乎无法去除雨条纹。

1.2 基于深度学习的去雨算法

近几年,随着深度学习技术的日渐成熟,深度学习被逐渐应用于图像去雨领域,基于深度学习的图像去雨算法不再依赖于先验知识,而是直接估计雨线的生成模型。Fu等[16]第一次将深度卷积神经网络用于单幅图像去雨,首先将图像分为细节层和基础层,然后直接从合成数据集中学习雨天图像细节层与真实图像细节层之间的非线性映射关系,通过优化目标函数来提升去雨效果,而不是增加卷积层的数量。Yang等[17]为了更好地去除真实场景下的雨线,提出了一种新的雨图模型和去雨架构,在现有模型的基础上标出雨水的位置,网络根据提取到的特征,先检测雨水位置再估计雨线,最后提取出背景层来完成去雨,另外,还将去雨视作多阶段任务进行循环操作,每个循环过程都执行上述操作以达到更好的去雨效果。Fu等[18]基于残差网络的启发,加深了去雨网络的深度,提出了深度细节网络,将雨图分解为高频部分和低频部分,并且将高频部分映射到雨纹层,从而缩小了有雨图像到干净图像的映射范围,使得学习过程变得更加容易。为了进一步提高去雨效果,在训练过程中利用先验图像域知识对高频信息进行提取,从而去除背景干扰,使模型聚焦于图像中的雨条纹,从而更好地去雨。Li等[19]提出了一种采用空洞卷积增大感受野来逐阶段去除雨纹的架构,该架构将去雨过程分为几个阶段,在去雨的每一个阶段使用一个具有多个空洞卷积的上下文扩展网络,每个通道对应一个去雨模式,并且利用递归神经网络(Recurrent Neural Network,RNN)来保存前一阶段的有效信息,从而有利于下一阶段的去雨。Wei等[20]使用半监督学习方法,通过有监督学习下合成的雨条纹来适应真实无监督学习中的雨条纹,通过这种方式来提高去雨模型的泛化能力,以此解决有雨数据集缺少问题。Ren等[21]考虑到大量堆叠网络层数会导致参数增多并且造成过拟合,从而不考虑使用更深、更复杂的模型,转而使用多个阶段来解决问题,在去雨的每个阶段使用递归运算让每个阶段的网络参数共享,从而大幅减少了网络参数,并且取得了很好的去雨效果。Jiang等[22]考虑到雨线与相机之间距离的不同会导致不同雨线有不同程度的尺寸和模糊度,因此采用多个分辨率和多个尺度之间的互补信息来表示雨条纹,从输入图像尺度和层次深度特征的角度来探讨雨条纹的多尺度协同表示来去除雨条纹,对于不同位置的相似雨型,采用递归计算得到全局纹理,并且在空间维度上挖掘出互补和冗余的信息来表示目标雨型,从而完成去雨。Wang等[23]考虑到现有的基于深度学习的去雨方法缺乏可解释性,提出了一种雨核模型与深度学习相结合的去雨方法来更彻底地去除雨线。Chen等[24]基于控制理论中的反馈机制提出了一种基于错误检测和误差补偿的方法来去除雨线。Fu等[25]考虑到基于深度卷积神经网络的去雨方法大多都是通过叠加普通卷积层来实现,而这些卷积层通常只能考虑到局部关系而很少考虑全局信息,由此提出了一种双图卷积神经网络进行图像去雨,第1个图卷积神经网络用于提取特征图中像素间的全局位置信息,第2个图卷积神经网络用于提取特征图跨通道的全局信息。与普通的卷积神经网络相比,2个图卷积神经网络能从一个新的维度提取特征,从而能够更好地处理复杂空间的长雨纹。Zamir等[26]提出了一个多阶段图像恢复架构,在前2个阶段使用编码器-解码器架构来提取图像的多尺度特征,而在最后一个阶段对原始分辨率的图像进行直接处理来保证图像细节不丢失,在每2个阶段之间采用一个有监督注意力机制模块来保证每个阶段都能利用恢复以后的图像信息,该网络不仅在每个阶段的前后进行跳跃连接,还在不同阶段之间进行信息交换,从而避免信息在传播过程中丢失。

基于深度学习的单幅图像去雨算法相比传统算法在去雨效果上获得了很大的进步,但目前基于深度学习的算法还存在一些问题。Ren等[21]提出的多阶段去雨算法,虽然参数量很少,但只是单一地采用递归来运算,而忽略每个阶段之间有用信息的交换。Jiang等[22]虽然加强了雨图特征的提取,但仅仅采用单一阶段来去雨使得去雨不彻底。Zamir等[26]使用多个阶段逐渐去雨,但是忽略了深层次特征提取的重要性。

2 本文方法

2.1 网络总体架构

提出的网络总体框架如图1所示,在每个阶段的开始有一个特征提取网络,该模块能够提取图像的各种雨线细节和多尺度特征。随后紧跟一个通道注意力(Channel Attention,CA)模块,为不同的通道分配不同的加权参数,从而使得有用特征传到下一阶段。在双残差图像重建网络中,使用双残差网络来对图像进行恢复。在前2个阶段的最后,使用一个有监督注意力模块,在标签图像的监督下只允许有用特征传播到下一阶段。在去雨的3个阶段中,本文算法并不是简单地将3个阶段串接起来,而是在各个阶段之间使用特征融合模块把不同阶段之间的信息进行融合,从而防止图像细节信息在连续传播过程中丢失。

图1 网络总体框架

2.2 双残差图像重建网络

残差网络(ResNet)是为了解决传统的深层神经网络中层数过深而出现退化现象而提出的。文献[27]指出,滥用网络层数不仅不能提升网络的学习能力,使用更深层的网络效果反而会更差。本文提出的双残差图像恢复网络如图2所示,该网络不仅在每个残差块中添加一个跳跃连接,还在每个残差块的中间和下一个残差块的中间额外添加了一个跳跃连接,为网络提供了更多的恒等映射通道,从而降低整体训练难度和梯度下降的训练速度,也防止信息在传播过程中的消失。受Liu等[28]启发,本文使用普通卷积层和空洞卷积层相结合,在扩大感受野的同时能够保留细化的特征,同时加入SE-ResNet[29]以获取全局感受野。本文的图像恢复网络由6个双残差堆叠块组成,并且从输入到输出的最外层使用残差连接。前3个为DRB(Dual-residual Block),后3个为DRBS(Dual-residual Block with SE-ResNet)。DRB由2个普通卷积和2个空洞卷积构成,对于普通卷积均使用3×3卷积核,而3个DRB中空洞卷积的膨胀速率逐渐减小,分别为12,8和6,从而能够使网络在连续的3个DRB中以从粗到细的方式定位雨线。DRBS均采用普通的3×3卷积核,并且在最后加入SE-ResNet[25]来获得全局感受野。在图像恢复模块中,所有卷积核后面均使用ReLU激活函数。该模块输入为特征提取模块的特征图,输出特征图被传递到下一阶段。

图2 双残差图像恢复网络

2.3 特征提取模块

浅层网络因为层数浅,具有较小的感受野,所以输出得到的特征图包含更多的局部信息,从而能更好地提取图像的纹理特征和细节特征等浅层特征。而深层网络具有更大的感受野,所以能够提取更多的全局信息,比如图像的轮廓特征和形状特征等深层特征。本文在每个阶段的开始使用一个浅层特征提取模块,通过一个CA模块后输入到深层特征提取模块进行深层特征提取,然后将深层特征提取模块输出的特征图传输到双残差网络。

为提取浅层特征,本文在图像输入部分使用一个3×3的卷积进行浅层特征提取。在该卷积之后为一个CA模块,使得更有用的浅层特征通过该模块。CA模块之后使用一个具有8个残差块的残差网络进行深层特征提取。深层特征提取模块如图3所示,由2个卷积和一个ReLU激活函数组成。特征提取模块为:

图3 深层特征提取模块

RB(x)=C(δ(C(x))),

(1)

FEM(x)=RBt(RBt-1,RBt-2,…,RBo(x)),

(2)

式中,C表示卷积;δ为ReLU激活函数;RB为残差块;FEM为特征提取模块。

为了逐步融合来自上一阶段双残差网络的特征,提出了一个特征融合模块(Feature Fusion Module,FFM),如图4所示。来自双残差网络第2个DRB和第1个DRBS的特征图被输送到FFM中。在FFM中,输入的2个特征图首先通过2个CA对不同通道的特征进行加权,然后把来自2个卷积的特征图拼接,最后通过一个1×1卷积进行通道合并。在FFM中的所有卷积后面均使用ReLU激活函数。残差块采用跳跃连接的方式将信息传递到更深层,解决了深层次网络中的梯度消失问题,从而提升网络的学习能力。

图4 特征融合模块

2.4 有监督注意力机制

现有的多阶段图像去雨网络大多直接把上一阶段得到的去雨图像信息传递到下一个连续的阶段,从而向下一阶段传递了很多冗余的特征。受Zamir等[26]启发,本文算法在前后2个阶段之间引入一个使用标签图像进行监督的注意力模块,如图5所示。在标签图像的监督下,该模块利用前一阶段的输出来计算注意力图,这些注意力图被用来提取上一阶段的有用特征,使得上一阶段的特征能够有选择性地传递到下一阶段,该模块的计算如下:

图5 有监督注意力机制

F=SAM(X,I)=Att⊗C(X)+X,

(3)

Att=σ(C(C(X)+I)),

(4)

O=C(C(X)+I),

(5)

式中,F为传到下一阶段的有用特征;X为上一阶段的输出;Att为注意力图;I为去雨前的图片;O为该阶段去雨后的图片。

该模块为每个阶段提供了无雨图片的监督信息。在标签图像的局部监督下,利用标签图像的信息和前一阶段的输出来计算注意力图,进而调整输出来抑制当前阶段无用的信息特征,只允许有用的信息传递到下一个阶段。

2.5 损失函数

用于训练网络的广泛使用的损失函数是均方误差(Mean Square Error,MSE)。然而,由于MSE平方项的过度惩罚,通常会产生过度平滑的结果,不利于恢复清晰的图像细节。为了获得拥有更多细节的视觉效果,本文使用结构相似性(Structural Similarity,SSIM)作为损失函数。通过计算去雨输出图像和无雨标签图像的SSIM,对SSIM取负值作为网络的损失函数,计算如下:

(6)

式中,uX和uY分别表示去雨图像X和标签Y图像的均值;σXY表示去雨图像和标签图像的协方差;常数C1和C2是为了避免分母为零,本文根据经验取C1=0.01,C2=0.03[26]。SSIM用X和Y的均值作为亮度的估计,二者的方差作为对比度的估计、协方差作为整体图像结构相似程度的度量。

本文算法的总体损失函数定义如下:

(7)

式中,S为阶段数;XS为第S个阶段经过网络去雨以后的图像;Y为无雨标签图像。将3个阶段输出的SSIM求和后取负值得到损失值。

3 实验结果与分析

本文提出的网络架构基于Pytorch实现,实验所使用的环境为Windows10,处理器为Intel(R)Core(TM)i7-10700K CPU@5.1 GHz,32G RAM,显卡为单个NVIDIA GeForce RTX 3090。训练时对图像进行随机剪裁的方式进行处理,输入到模型的图片大小为128 pixel×128 pixel。使用ADAM优化器对模型进行训练,其中动量参数β1与β2分别为0.9和0.999,模型初始学习率为2×10-4,进行1 000次迭代,使用余弦衰减策略逐渐减少到1×10-6,Batch size为4。本文选择最近的公开源代码的去雨算法进行对比实验,包括经典的去雨算法GMM[5],DSC[8]和基于深度学习的去雨算法DerainNet[16],JORDER[17],SEMI[20],DuRN[28],PreNet[21],RCDNet[23],RLNet[24],DualGCN[25]。

3.1 数据集介绍

本文算法在不同的数据集上使用相同的设置进行训练和测试,分别为Rain100L[17],Rain100H[17],Rain12[5]和Rain800[30]。Rain100L为小雨数据集,仅仅包含单一方向的雨线,数据集中共有1 800张训练图片和100张测试图片。Rain100H是大雨数据集,与Rain100L张数相同并在此基础上增加了共5种方向的雨线。Rain800包含800张训练图片和100张测试图片,Rain12数据集包含12张测试图片。

3.2 结果分析

本文通过在Rain100H数据集上进行训练,在包括Rain100H的共4个合成数据集上进行测试,并通过峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)[31]和SSIM[32]指标来进行评估。与之前的工作相同,本文在所有方法中统一使用Y通道(YCbCr颜色空间)来计算图像的PSNR和SSIM的数值。对于早期的方法以及未提供训练代码的方法,本文直接采用提供的预训练模型进行测试,并将输出的去雨图片计算PSNR和SSIM。在所有的对比方法中,DSC为传统去雨算法,其他为深度学习算法,在去雨算法JORDER中直接使用公布的测试结果进行测试,在方法GCN,RCDNet,JORDER,DerainNet,SEMI中直接使用了作者的预训练模型进行测试,对于方法RLNet,DuRN,PreNet,使用与本文算法相同的数据集并使用默认的设置重新进行训练,并将最终结果与本文提出的算法进行对比。

在不同数据集上的评估指标如表1所示。本文提出的算法在4个数据集上进行训练和测试,比较PSNR和SSIM。相比DualGCN方法,本文算法在Rain100L,Rain100H,Rain12和Rain800数据集上PSNR分别提高了1.46,1.01,0.02和5.92 dB,SSIM分别提高了0.026,0.003,0.003和0.079。从而说明,本文提出的算法在去除雨线和恢复被雨线损坏的背景图片细节方面有更好的效果。除了对PSNR和SSIM量化指标的分析以外,本文还随机选取Rain100H数据集中的6张测试结果和Rain800数据中的4张测试结果从主观效果层面对去雨效果进行评价,结果如图6~图8所示。由图6和图7结果对比可知,其他算法在去雨时雨线残留明显,背景恢复细节较差,而本文恢复出来的图片更加清晰。为了观察图片的细节表现,如图7所示对一张去雨后图片进行放大展示细节。由图7可以看出,本文算法的去雨效果在细节恢复上比其他方法要好,DuRN恢复出来的无雨图像比较模糊,GCN和RLNet整体观感比DuRN好但细节恢复比本文算法差,边缘不够锐利。因此,本文算法的细节恢复主观上比其他方法更好。

表1 在不同数据集上的评估指标

图6 Rain100H数据集上的测试结果

图7 Rain100H数据集上的细节对比

图8 Rain800数据集上的测试结果

3.3 真实雨图测试

为了测试真实环境下的去雨效果,本文在LPNet[33]收集整理的300张真实雨图上进行测试,并从中随机选取了3张进行对比,测试所用的模型为Rain100H上训练的模型,测试结果如图9所示。由图9可以看出,其他算法都存在去雨不彻底导致雨条纹残留明显以及去雨后的图片不清晰、存在伪影以及细节部分丢失等问题。在雨条纹过大,对背景图像造成严重遮挡的情况下,其他方法去雨效果大大降低,特别是传统算法在真实雨图上表现不佳。本文算法能解决上述问题,达到更好的去雨效果,有更好的应用价值。

图9 真实数据集上的测试结果

3.4 消融实验

为了验证本文算法中的各个模块的有效性,在数据集Rain100H上进行消融实验,其包括网络的阶段数以及不同模块的组合与不同损失函数。

3.4.1 去雨阶段数的讨论

为了对本文所使用的多阶段网络结构的有效性进行验证,对网络的去雨阶段数进行了消融实验,如表2所示。

表2 不同损失函数的消融实验

由表2可以看出,随着阶段数的增加,训练的网络能够得到更好的效果。2阶段去雨网络的PSNR与SSIM相比1阶段分别提升了1.11 dB和0.06,但4阶段去雨网络相比3阶段PSNR与SSIM只提升了0.03 dB和0.01。不同阶段数评估指标如图10所示。由图10可以看出,随着阶段数的增加,网络效果提升越小,但过多的阶段数占用了更多的计算资源,所以本文综合考虑采用阶段数量为3。

图10 不同阶段数评估指标

3.4.2 损失函数消融实验

混合损失函数被广泛地应用于图像恢复及各种视觉任务中,如SSIM+L2损失以及SSIM+L1损失等,但是混合损失函数的加入加重了网络超参数调节的负担。Ren等[21]的经验表明,单个损失函数已经足以训练本文提出的网络。本文对L1,L2损失、SSIM损失、PSNR损失和Charbonnier损失[34]进行了消融实验。不同损失函数的消融实验如表3所示。由表3可以看出,当使用SSIM损失的时候能够得到最高的PSNR和SSIM。

表3 不同模块组合的消融实验

3.4.3 网络组成消融实验

为了验证本文提出的网络结构的有效性,在Rain100H数据集上对不同模块的组合进行消融实验,如表4所示。

表4 不同阶段数的消融实验

由表4可以看出,当仅仅使用双残差模块(DRM)时该网络去雨效果一般,当加入一系列本文使用的网络模块以后PSNR和SSIM都得到了很大的提升。当将网络模块由DRM替换成密集残差块(RDB)以后效果下降,证明了本文所使用的DRM的有效性。同时,层数越深的深层特征提取模块效果越好,证明深层特征提取在图像去雨网络中的重要性。所以本文提出的网络最终使用表4中PSNR和SSIM指标最高的组合所对应的网络结构。

3.5 在目标检测上的应用

为了验证本文的去雨算法在后续高级计算机视觉任务上的应用价值,利用Google API对去雨前后的图片进行测试,如图11所示。被暴雨的雨线所遮挡的图像在目标检测中的精度大幅下降,对车的检测精度只有80%并且无法检测出人物。而去除雨线以后的图像对车的检测精度达到了95%,能够额外检测到人物,准确率为73%。说明本文算法能够将在恶劣天气下采集到的图像通过去除雨线来有效地提高后续计算机视觉任务的准确度。

图11 对目标检测性能提升的评估

4 结束语

本文基于多阶段架构提出了一种端到端的多阶段去雨算法,使得雨线逐渐被去除的同时,背景图像的细节纹路也能够更好地恢复。另外,在不同阶段之间加入特征融合模块以及引入带有标签图像进行监督的注意力机制,使得有用的特征能够更有效地传播到下一个阶段。本文算法在5个数据集上进行了测试,并采用PSNR和SSIM作为图像质量评价标准对本文的去雨效果进行评估,与现有的算法比较,本文的去雨效果突出。此外,本文对图片在后续计算机视觉任务上进行了测试,去雨以后的图片能达到更高的精度。

然而,本文提出的算法也存在不足,由于数据集的局限性使得该网络针对雨线的去除效果较好,但是当有雨图像中存在雨滴或者雨雾的时候,本文算法存在一定缺陷。收集真实的数据集或者合成更接近于真实的数据集供更多的研究者使用是本文接下来的研究方向。

猜你喜欢
特征提取残差卷积
基于双向GRU与残差拟合的车辆跟驰建模
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于残差学习的自适应无人机目标跟踪算法
卷积神经网络的分析与设计
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于递归残差网络的图像超分辨率重建
从滤波器理解卷积
基于Daubechies(dbN)的飞行器音频特征提取
基于傅里叶域卷积表示的目标跟踪算法
Bagging RCSP脑电特征提取算法