陈峥, 毕晓君
(1.哈尔滨工程大学 信息与通信工程学院,黑龙江 哈尔滨 150001; 2.中央民族大学 信息工程学院, 北京 100081)
下雨是最为常见的自然现象之一。下雨时不同大小形状的雨滴往往会附着在玻璃窗或相机镜头上,导致一些户外智能设备所采集到的图像存在遮挡以及模糊的现象[1]。这些不清晰的图像将直接影响各种后续的目标检测,语义分割和场景解析等计算机视觉任务。因此,近年来图像去雨滴任务受到学者们的广泛关注,成为研究热点[1-9]。
目前去雨滴方法可以被大致归为2类:第1类是基于先验知识的传统算法[1-2],第2类是基于神经网络的深度学习方法[3-9]。第1类方法通常需要手工设计或者估计雨滴的退化模型,并利用主观的先验知识进行建模。由于存在泛化能力差和计算时间多等缺点,近年来已逐渐被第2类方法所代替。Fu等[3]提出搭建深度细节网络(DDN)直接学习有雨图和干净背景之间的映射。将残差网络作为主要结构,以获得有雨图深层的图像特征。尽管其过于单一的网络结构导致这种模型的性能有限,无法很好地处理下雨天的各种复杂场景,但是该模型的出现却引发了深度学习方法在图像去雨滴领域的研究热潮。特别是近两年,更多结构复杂且设计精巧的神经网络应运而生,去雨滴模型的性能有了很大的提高。具有代表性的有Shao等[6]提出了软掩码的新思路,用[-1,1]的值表示雨滴对背景图像的模糊程度,并构建一种多尺度金字塔网络来移除雨滴。该方法在模型的精度方面确实取得了非常优异的性能。然而,它的模型尺寸越来越大,推理速度也越来越慢。为了解决这一问题,Guo等[7]又设计了一种快速高效的网络模型。该模型最重要的思想是把图像去雨问题看成图像的逐像素滤波问题。由于滤波操作是高度优化的操作,因此该模型在GPU上的推理速度比较快,性能得到了很大提高。但是,该模型的部署和使用仍然需要较多的计算资源和内存消耗。而对于像无人机、自动驾驶汽车或者AI芯片这些存储空间十分受限的移动终端或者嵌入式设备而言,该模型的参数量仍无法满足实际应用的需求。因为一套成熟的图像处理系统需要配备多个不同任务的图像处理模型。去雨滴作为一种前端任务,如果能够在保证性能的前提下尽量地减少内存消耗,就会为其他更复杂的任务节省宝贵的存储资源,从而使整个系统实现更有效的运转。
基于以上分析,本文提出一种基于轻量级神经网络的单幅图像去雨滴模型。首先,采用一种幻像特征生成残差块。通过结合逐点卷积[10]、分组卷积[11]以及通道注意力机制[12],解决现有去雨滴模型存在高相似性和高冗余性特征图的问题,从根本上减少参数量。然而,随着参数的大幅减少,去雨滴模型的性能必然会下降。为此,进一步设计了一种复合折叠式重用机制,分别在内部模块及网络整体结构对有限数量的特征进行回顾式利用,一定程度上弥补了参数较少带来的性能下降。最后,又提出一种轻量级门控循环单元。目的在于将轻量级去雨滴模型折叠计算前后的深层特征建立联系,强化信息的交互,进一步提高轻量级去雨滴模型的性能。
目前,单幅图像去雨滴已成为近年来图像处理领域的研究热点,其目的在于将被雨滴污染的模糊图像复原为清晰的干净背景,从而降低对后续计算机视觉任务的不利影响,图1给出了去雨滴任务的示意图。雨滴图像的退化模型可以表示为:
图1 单幅图像去雨滴任务Fig.1 The raindrop removal task of single image
I(x)=(1-M(x))⊙B(x)+R(x)
(1)
式中:I(x)表示含雨滴的待恢复图像;B(x)表示不含雨滴的干净背景图像,也就是监督网络训练时的正确标签;M(x)表示一组二进制掩码。M(x)=1时表示在像素点x的位置上包含雨滴区域,M(x)=0则表示该点位置为清晰背景区域;R(x)表示背景图像与雨滴所反射光线的复杂混合。
现有的去雨滴深度卷积神经网络普遍包含大量的常规卷积操作。通常情况下,当网络中输入特征图为X∈Rc×h×w,其中c为输入通道数,h和w分别为输入数据的高和宽时,如果希望生成n张输出特征图,则任意卷积层的计算可以被表示为:
Y=X*f+b
(2)
式中:b是偏置;Y∈Rh′×w′×n表示n通道的输出特征图;f∈Rc×k×k×n表示这一层的卷积核;h′和w′分别为输出特征图的高和宽;k表示卷积核的尺寸。经计算,上述卷积操作所需要的参数量为n·c·k·k。可以看出,模型的参数量取决于输入和输出特征图的维度。而目前去雨滴神经网络每一层的卷积核数量n以及通道数c的值都较大,最常见的为128或者256等[6]。这使得现有的去雨滴模型普遍具有大量的参数量,导致巨大的计算消耗和内存占用。通过分析发现,现有去雨滴模型在卷积操作时会产生大量的特征图,而这些特征图的样式有很多类似之处,存在较高的冗余性。为了减少模型的参数量,可考虑不再使用传统卷积方式来逐一生成大量相似的特征图,而是设计轻量级去雨滴网络,通过对一部分已经生成的特征图进行特定的通道变换,直接完成一种图到图之间的线性映射,由此较好地解决现有去雨滴网络模型特征图存在高相似性和冗余性特征的问题,从根本上减少模型的参数量。但是,存在的问题是会导致模型的性能有所下降,为此需要通过进一步的模型改进以保证轻量级模型能够接近目前深度模型的性能,满足实际应用的部署需求。
本文设计了一种端到端的轻量级单幅图像去雨滴模型,整体网络结构如图2所示。网络的核心结构由3部分构成:1)幻像特征生成残差块;2)复合折叠式重用机制;3)轻量级门控循环单元。其中,幻像特征生成残差块用于减少模型的参数量,而复合折叠式重用机制和轻量级门控循环单元用于提高模型的性能。
图2 轻量级单幅图像去雨滴模型Fig.2 The lightweight model for single image raindrop removal
幻像特征生成残差块是本文实现轻量级去雨滴网络的核心轻量级组件,包括3部分结构:1)幻像特征生成模块;2)SE注意力机制[12];3)残差支路[13],如图3所示。其中,幻像特征生成模块在模块内部对一部分已经生成的特征图进行特定的通道变换,以线性操作代替传统卷积操作。SE注意力机制可以为幻像特征生成模块中的独立通道赋予不同的权重因子,很好地拟合通道之间复杂的空间相关性。而残差支路又能够改善模块中信息的流通,一定程度上降低了在反向传播时模型发生梯度消失的概率。
图3 幻像特征生成残差块Fig.3 The ghost feature generation residual block
图4 幻像特征生成模块Fig.4 The ghost feature generation block
作为幻像特征生成模块的重点和难点,上述3种操作的特征图通道数的选择非常重要,将直接影响模块中组卷积的具体分组机制,进而影响模块的轻量级效果。考虑到当输出特征图Y与最初的输入特征图X尺寸不一致时,需要引入额外的逐点卷积来调整不同模块间的通道数,以保证正确构建模型结构。虽然这更有利于模块内部实现更好的信息融合,但不可避免地带来更多的参数量以及更大的计算资源消耗,不利于模型的实际应用。因此,本文选择输出特征图Y与输入特征图X尺寸一致的情况,这样将无需使用额外操作调整不同模块间的通道数,可以使模块的参数量达到最优,也更利于模型在实际应用中硬件的部署[15]。由此虽然将缺乏逐点卷积对模块内部信息的融合,但是可以通过后续对模型整体结构的进一步改进弥补性能的少量损失。
假设幻像特征生成模块的输入特征图X和最终的输出特征图Y尺寸一致,均为c个通道。若3种操作中逐点卷积f1×1的卷积核个数设为s,则生成的Y1具有s个通道。又因为Y2是由分离Y1所得到,所以Y2和Y1的尺寸相同。而由于Y1与Y存在部分恒等映射关系,所以Y3的通道数必须为c-s。这里需要讨论c和s的关系,存在以下3种情况:1)当s/(c-s)>1,即Y1的通道数大于Y3的通道数时,此情况下需要由f1×1产生的较多数量的特征生成较少数量的幻像特征。这将无法发挥组卷积计算高效的优势,从而产生更大的计算消耗。同时也无法直接完成图到图之间的线性映射,所以此情况不符合设计本模块的初衷。2)当s/(c-s)<1,即Y1的通道数小于Y3的通道数时,此情况下需要由f1×1产生的较少数量的特征直接生成较多数量的幻像特征。此情况下每一张原始特征图将生成多张新的幻像特征图,是一种一对多的映射。但是Y2中的每张特征图都会因此被分配多个卷积核,从而需要更多的参数量;3)当s/(c-s)=1,即Y1或Y2与Y3的通道数相等时,此情况下Y2中的分组卷积则自动变为逐深度卷积,即每一张原始特征图将会对应生成一张新的幻像特征图,是一种一对一的映射。此时Y2中的每张特征图都只会被分配一个卷积核,从而达到参数量的最优。综上,幻像特征生成模块将选择s为c的一半,即Y1、Y2与Y3的通道数相同,将作为最终组卷积的分组机制,组卷积核的尺寸大小则成为进一步研究的对象,其设置需要通过实验验证达到最优。
对于SE注意力机制和残差支路,它们是构建轻量级模块的常用结构。其中SE注意力机制对特征图的宽度和高度进行了全局平均池化,然后使用了2个全连接层和非线性激活函数去建立通道间的连接,从而获取幻像特征生成模块通道维度上的相关性。而残差连接则是将模块的输入和输出直接进行线性相加,使信息的前后传播更加顺畅,最终使网络的训练更加稳定。
上述幻像特征生成残差块较好解决了去雨滴网络普遍存在参数量大的问题。然而由于其可学习的参数大幅减少,必然会导致轻量级模型的性能有所下降。这里专门设计了复合折叠式重用机制,可提高轻量级模型的性能,具体操作如图2中折叠箭头所示。
复合折叠式重用机制的设计受到了行为分割任务中多阶段模型[16]的启发,本质上是对特征实现回顾式重用,也就是让轻量级模型对有限数量的特征进行多次学习,能够使特征以循环的方式重复通过网络。而将此循环展开,就等效于特征被同一组参数的多个串联的网络模块所提取,因此复合折叠式重用机制相当于将一个普通直筒式深度网络折叠起来,实现了模型尺寸上的压缩。而其学习特征的方式和深度模型几乎一致,所以能够使轻量级网络实现接近于深度网络的性能。主要的差异在于复合折叠式重用机制提取的特征多样性稍弱,这源于轻量级模型本身的可学习参数较少。但这一不足可通过后续设计轻量级记忆单元很好地弥补。
具体而言,复合折叠式重用机制包括内折叠和外折叠2部分操作。其中,内折叠是网络在前向传播时对内部的特征提取模块进行操作。当模型在训练或者测试时,内折叠操作将位置最后的特征提取模块的输出特征重新传递给位置最前的特征提取模块作为输入特征。此时特征在特征提取模块的内部进行循环和重用,是一种局部操作和局部的信息传递。外折叠是网络在前向传播时对模型的整体结构进行操作。它是将模型位置最后的3×3卷积层的输出特征重新传递给模型最初的3×3卷积层,并对整个网络重复完成一次完整的前向传播过程。此时特征在网络整体结构上进行循环和重用操作,是一种全局操作和全局的信息传递。通过内折叠和外折叠的融合操作,可实现模型从局部到整体对特征的多次学习过程,最终能够提高轻量级模型的性能。
复合折叠式重用机制能够通过特征重用在一定程度上提高轻量级模型的性能。但通过分析发现,其执行折叠操作时生成的多组特征之间并没有很好地建立联系,缺少了模型内部的信息交互过程,从而影响了模型的性能。因此可以在网络中引入强化信息交互的模块进一步提高轻量级模型的性能。这就类似于人脑对事物的感知和分析过程。当人脑中的信息越全面,且信息之间的联系越清晰,则会有更大概率对某件事物做出正确判断。常用的卷积门控循环单元(ConvGRU)[17]虽然能够实现上述需求,但仍存在结构复杂,参数量大的缺点。对其直接使用不符合设计轻量级去雨滴模型的原则和初衷。所以需要设计一种新的轻量级门控循环单元。考虑到2.1节幻像特征生成模块自身的轻量级属性,本文的轻量级门控循环单元选择对ConvGRU的输入Xt和隐藏状态Ht-1引入幻像特征生成模块。这既可以实现对门控循环单元的轻量化,同时也能够使网络模型保持结构的一致性,更有利于模型的训练。
整体结构如图5所示,其更新门Zt、重置门Rt、候选隐藏状态H′t以及隐藏状态Ht可以被分别表示为:
图5 轻量级门控循环单元Fig.5 The lightweight gated recurrent unit
Zt=σ(Wxz*Xt+Whz*Ht-1)
(3)
Rt=σ(Wxr*Xt+Whr*Ht-1)
(4)
H′t=tanh(Wxh*Xt+Rt∘(Whh*Ht-1))
(5)
Ht=(1-Zt)∘H′t+Zt∘Ht-1
(6)
式中:σ表示sigmoid激活函数;W**表示对应的权重张量。
由于复合折叠式重用机制包含了内折叠和外折叠2种操作,所以分别将轻量级门控循环单元嵌入到内、外折叠操作所在位置,如图2所示。位于内折叠操作所在位置的轻量级门控循环单元的作用在于整合特征提取模块所产生的多组深层特征,实现了局部的信息交互。位于外折叠操作所在位置的轻量级门控循环单元则致力于对网络学习到的全局特征进行融合和传递,实现了全局的信息交互。这二者的结合对模型学到的特征从局部到整体均建立了联系,从而提高了轻量级模型最终的性能。
为了验证本文轻量级去雨滴模型的有效性,将进行以下3方面实验:1)验证不同结构下幻像特征生成残差块的有效性;2)验证提出的复合折叠式重用机制的有效性;3)验证轻量级门控循环单元的有效性。为了验证本文轻量级去雨滴模型的先进性,将与目前效果较好,具有代表性的5种不同类别的深度神经网络分别进行定量以及定性对比。
本文所有实验采用文献[4]所提出的去雨滴数据集“Deraindrop”,因为该数据集在目前图像去雨滴任务中最权威且最常用。它的训练集共有861组图像对,每组图像对包含一张雨滴图像以及对应的干净背景。测试集分为2部分。测试集a有58张图像,测试集b有249张图像。测试集b比测试集a的场景更丰富,雨滴的多样性更强,恢复的难度更大。
为了保证本文轻量级网络训练的稳定性,本文采用平均绝对误差(MAE)和结构相似度(SSIM)[18]来共同监督模型。MAE是2张图像像素级别上的L1范数,因此可评价像素间的差距;SSIM则从亮度、对比度以及结构来评价2张图像的相似性。设计的整体损失函数为:
L=α·MAE(y,ygt)+(1-α)·(1-SSIM(y,ygt))(7)
式中:y表示网络预测得到的无雨滴图像;ygt表示真实的无雨滴图像;α是2种损失之间的权重,经实验验证,本文在网络训练中将其固定设置为0.4。
本文模型以端到端的方式进行训练,没有任何预训练及微调操作。使用图像恢复领域中最权威最常用的峰值信噪比(PSNR)[19]和结构相似度(SSIM)[18]作为客观评价指标。其中,PSNR的值能够反映恢复的图像与原图像二者之间像素值的差异,值越高表示恢复的效果越好。SSIM值的范围在[-1,1],越接近1表示2幅图像在亮度,对比度和结构上越相近。
本文所有实验基于PyTorch1.6框架[20],使用英伟达2080Ti GPU(11 G)进行计算加速。使用Adam优化器更新模型参数。batch size设置为8,epoch设置为80。初始学习率设置为10-3,并在第20、40和60个epoch的时候减小5倍。
3.4.1 幻像特征生成残差块
本节实验对组卷积核的尺寸设置进行讨论。为了探索不同尺寸的组卷积核对幻像特征生成残差块性能的影响,选择尺寸为1×1、3×3和5×5的常见卷积核来遍历模块中的线性操作φ1j和φ2j。实验结果如表1所示。可以看到,单独使用1×1卷积核会产生明显的性能下降。这是因为1×1卷积核往往只会聚焦于逐个像素之间的联系,而忽略了特征图中的有效空间信息。此外,随着卷积核尺寸的增加,模型的性能逐渐改善。当卷积核尺寸为3×3和5×5的组合时,达到了最优效果。这是因为3×3和5×5的组合会为网络提供更多不同范围大小的感受野,从而网络能够更好更全面地感知和提取雨滴图像的有效特征,最终使模型针对不同测试集均具有更优秀的鲁棒性和泛化能力。
表1 不同结构幻像特征生成残差块的实验结果Table 1 The experimental results of ghost feature generation residual modules with different structures
3.4.2 复合折叠式重用机制
本节实验验证复合折叠式重用机制的有效性,设计了4种实验作为对比。分别为:无折叠操作、仅内折叠、仅外折叠以及最终的复合折叠。其中,无折叠操作即表示直筒式网络结构。仅内折叠表示模型只对幻像特征生成残差块实现局部的特征重用。仅外折叠表示模型只在全局结构上实现特征重用。而最终的复合折叠则融合了上述内外折叠2种操作。因为折叠操作并不会引入额外的卷积层,所以这4种架构下的参数量始终保持一致。实验结果如表2所示。可以看到,相比于无折叠操作,不论何种单独的折叠操作均会带来明显的性能增益,而复合折叠式重用机制则取得了最优的定量结果。上述结果表明,在设计轻量级去雨滴网络时,常见的直筒式网络并非最佳选择,因为其具有特征利用弱的固有缺点。在参数量有限的情况下,复合折叠式重用机制可以弥补由参数较少带来的性能下降,从而提高轻量级模型的表现能力。
表2 不同折叠操作下的实验结果Table 2 The experimental results of different folding operations
3.4.3 轻量级门控循环单元
本节实验验证轻量级门控循环单元的有效性,共有4组对比实验。分别为:无门控循环单元、门控内循环单元、门控外循环单元以及门控内/外循环单元。其中,无门控循环单元表示网络中没有记忆模块。门控内循环单元表示只对内折叠操作所在位置引入轻量级门控循环单元。门控外循环单元表示只对外折叠操作所在位置引入轻量级门控循环单元。门控内/外循环单元则表示模型对内折叠以及外折叠操作所在位置均引入了轻量级门控循环单元。实验结果如表3所示。对于本文复合折叠式的轻量级去雨滴网络而言,即使在内折叠操作或外折叠操作处单独引入轻量级门控循环单元,也会带来一定的性能提升。这说明轻量级门控循环单元能够建立局部或全局特征之间的联系。而复合折叠循环单元相比于无门控循环单元在测试集a中实现了接近1 dB的性能提高。这说明复合折叠循环单元能够使轻量级模型在参数量一定的情况下,实现了信息从局部到整体的完整交互过程,最终最大化提高了模型的性能表现。
表3 轻量级门控循环单元的有效性验证Table 3 Validation of lightweight gated recurrent units
为了验证本文模型的先进性,选择了5种最具代表性的先进模型作为对比。对这5种网络的描述如下:
1)DDN[3](CVPR-17):第1个基于神经网络的图像去雨模型;
2)AttGAN[4](CVPR-18):融合了注意力机制的生成对抗网络;
3)DURN[5](CVPR-19):以对偶残差连接方式构建的深度卷积神经网络;
4)UMAN[6](TIP-21):结合软掩码编码的多尺度金字塔网络;
5)EfDerain[7](AAAI-21):推理速度全面占优的高效去雨模型。
表4展示了6种去雨滴算法的图像复原结果,最优和次优结果分别以加粗和下划线表示。从表4可以看出,本文在雨滴较稀疏的测试集a上取得了最好的定量结果。PSNR和SSIM指标分别比第2名的AttGAN和DURN高出0.15 dB和0.012。在场景更为复杂,恢复难度更大的测试集b上,本文取得了最好的PSNR指标以及第2名的SSIM结果。其中SSIM指标与第1名EfDerain只相差0.008 9。然而,本文轻量级模型的总参数量比目前效果较好且时间较新的算法降低了2个量级,即107~105。具体而言,本文模型相比于DURN节省了18倍的参数,相比于UMAN节省了37倍,以及比EfDerain节省了51倍。上述定量结果体现了本文轻量级模型的先进性。此外,图6、7展示了在公开数据集上不同算法复原图像的定性对比。可以看到,本文模型虽然减少了大量的参数,却依然可以保证复原图像的整体视觉效果。而且图像的纹理细节也没有因参数量的大幅减少而变得模糊或者丢失。综上所述,本文轻量级去雨滴模型很好地实现了性能和参数量的平衡,较好地解决了深度学习去雨滴网络在移动端或嵌入式设备中难部署的问题,从而充分体现了其潜在的实际应用价值。
表4 不同算法去雨滴结果的定量对比Table 4 Quantitative comparison of raindrop removal results of different algorithms
图6 背景目标复杂时的定性比较Fig.6 Qualitative comparison when the background target is complicated
图7 在真实街道场景的去雨滴定性比较Fig.7 Qualitative comparison of raindrop removal in real street scenes
1)本文面向图像去雨滴任务提出了一种新颖的轻量级神经网络。解决了现有深度网络由于特征图具有高相似性和冗余性所带来的参数量大,不利于实际应用的问题。
2)本文提出一种幻像特征生成残差块,实现了模型参数量的大幅减少;同时提出复合折叠式重用机制以及轻量级门控循环单元,有效改善了轻量级去雨滴模型的性能。
3)在公开的基准数据集上的实验结果表明,本文模型在性能持平或略高于现有先进方法的前提下,实现了参数量2个量级的压缩,达到了实际应用部署的模型要求。
4)本文模型的思路为今后设计新的轻量级去雨滴模型具有一定的指导意义。未来将会尝试结合网络结构搜索技术进一步实现去雨滴网络的更轻量化。