邵罗仡, 陈清江, 尹乐璇
(西安建筑科技大学,西安 710000)
雨天、雾天及雪天等各种天气条件会导致图像或视频的视觉质量下降[1-2]。其中,雨天是较为常见的一种天气条件,会造成图像模糊、可视性差,从而影响户外计算机视觉系统如视频监控[3]、目标跟踪[4]、目标检测[5]等的性能,近年来,深度学习逐渐成为计算机视觉领域中最流行的方法[6-8]。现有单幅图像去雨算法主要分为基于传统的去雨法和基于深度学习的去雨法两类。
基于传统的方法:在没有时间信息支持的情况下,早期的研究人员首先将其表述为基于形态学成分分析的图像分解问题[9]。为了解决这一问题,提出了通过稀疏编码引导的字典学习来学习雨和非雨两个字典,从而通过基于稀疏编码的信号分解去除雨纹[10];CHEN等[11]提出了一个从矩阵到张量结构的低秩模型来捕捉雨纹,从而在文献[12]中提出了一种基于字典学习的雨条纹去除算法,该算法基于雨条纹的非线性生成模型;LI等[13]提出了利用高斯混合模型对单幅图像的背景层和雨纹层进行处理的方法。
基于深度学习的方法:FU等[14]首先将CNN用于去雨,直接学习雨天和干净图像细节层之间的映射关系,在细节层上进行训练,还引入了残差网络进行去雨;YANG等[15]提出了一种周期性的雨检测和去除雨纹的递归网络;ZHANG等[16]提出了一种协同估计降雨密度和去除雨纹的网络,该网络可以自动确定降雨密度,并去除相应的雨纹;WANG等[17]提出了一种递进递归网络,该网络通过递归层来利用深度特征在各个阶段的相关性。然而,现有的去雨算法只关注扩大CNN的宽度和深度或者使用更为复杂的结构来提高性能,而忽略了通道和空间的信息及多尺度之间的内在联系。
文献[7]提出了一种通道注意力机制,通过考虑通道间的相互依赖性来自适应调整不同通道的权重,因此,本文提出了一种结合通道和空间的双注意力残差群网络,通道注意力机制通过考虑通道间的依赖关系自适应地调节不同通道间的联系。由于一般的膨胀卷积会造成网格伪影的情况,因此本文在空间注意力模块中引入了平滑膨胀卷积。受ResNet[18]和DenseNet[19]的启发,本文设计了一种用于提取浅层特征的RDB模块。根据文献[20],为了更好地利用更多的特征来恢复图像细节,本文设计了一种多尺度双分支的细节恢复(MDR)模块,主要贡献如下:
1) 提出了一种多尺度残差群网络的图像去雨算法,包括去雨子网络和恢复细节子网络,利用细节恢复模块实现图像细节的恢复,并且两个子网络共享参数;
2) 在双注意力模块中,为了避免网格伪影的问题,利用更小卷积核的平滑膨胀卷积来提取不同尺度特征,进而采用逐步融合的方式来融合不同尺度的特征,更好地利用其余尺度的特征信息;
3) 为了更好地恢复图像细节,提出了一种基于卷积的包含全局分支和局部分支的双分支细节恢复模块,同时提取图像的全局信息和局部信息。
在图像去雨算法中,常用的雨图像模型可以表示为
R=B+S
(1)
式中:R表示雨图;S表示雨纹;B表示背景。
然而在现实生活中,雨的出现不仅是由雨条聚集而成,还具有不同的形状和重叠的方向。因此根据文献[8,15],提出了一种基于大气散射模型的新雨图像模型
(2)
自从AlexNet[21]赢得ImageNet挑战赛以来,注意力机制在自然语言处理领域得到了广泛的关注和应用。很多人通过制作更深、更复杂的网络以提高计算机视觉的准确度。然而,提高准确度并不能增加速度方面的优势,在实际应用中,很多视觉任务需要在计算能力有限的平台上及时进行。文献[22]提出了深度可分离卷积,其具有参数量与运算成本较低的优势。不同于常规卷积操作,深度卷积的一个卷积核负责一个通道,每个通道只被对应卷积核卷积,由于这种运算是对每个通道单独进行卷积,没有有效利用不同通道在相同空间位置上的特征信息,因此,需要通过逐点卷积将这些特征图在通道方向上进行加权组合生成新的如图1所示的特征图。深度可分离卷积是一种广泛应用在卷积神经网络中的模块,其可以满足轻量化参数和计算量的需求,因此常用于一些轻量级网络,如MobileNets[23]。
图1 深度可分离卷积Fig.1 Depthwise seperable convolution
近年来,注意力机制广泛应用于物体识别[24]、图像超分辨率[25]等各种不同类型的视觉任务,其被证明有利于提高模型的性能。QIAN等[26]提出了一种注意力生成网络用于对抗训练去除雨纹;LI等[27]提出了一种通过squeeze-and-excitation block为不同的雨纹层分配不同的α值,然后通过多个阶段去除雨纹;WANG等[28]提出了一种通过空间注意力残差块从局部到全局去除雨纹。目前现有的大多去雨算法[16,29]忽视了不同尺度下雨纹的联系,只有少数研究者利用多尺度学习[30-31]。由于在高尺度中可以注意精细的细节,在低尺度中可以更好地理解背景,因此本文提出了一种新的多尺度空间注意力模块,为了解决网格伪影问题,用平滑膨胀卷积代替一般的膨胀卷积,并通过逐步融合的方式将不同尺度特征相融合。
本文所提网络结构及其模块构成如图2所示,其中,PReLU代表激活函数。
图2 所提网络结构及其模块Fig.2 The architecture of proposed network and the modules
本文将此网络分为去雨网络和细节恢复网络两个子网络,其中,去雨网络分为浅层图像去雨和深层图像去雨两部分。为了更好地恢复图像的细节信息,本文设计了细节恢复网络,其中,去雨网络和细节恢复网络共享参数。此外,为了避免网络较深会丢失一些细节信息,本文增添了全局跳跃连接用于传输浅层信息,即
F0=CConv(R)
(3)
Fi-1=CRG(CRDB(F0))+F0
(4)
F2=CConv(CRDB(Fi-1))
(5)
Fd-1=CMDR(CRDB(F0))+F0
(6)
F4=CConv(CRDB(Fd-1))
(7)
B′=F2+F4
(8)
其中:CConv(·)为卷积运算;F0为用于全局残差学习的特征;CRDB(·)表示由残差密集块提取的特征提取函数;CRG(·)表示由残差群网络提取的特征提取函数;CMDR(·)表示多尺度细节恢复函数;B′为无雨图像。
在本文提出的网络结构中,残差群主要用来提取图像的特征。残差密集模块如图3所示。
图3 残差密集模块Fig.3 Residual dense module
图3(a)中,ResNet通过跃层连接可以解决梯度消失的问题,然而使用加法操作可能会阻挡网络中的信息流。图3(b)中,由于DenseNet将每一层生成的特征图传递给随后的所有层,从而需要消耗大量的内存。如图2(b)所示,选取2个卷积层和2个双注意力模块作为残差块,接着结合多个残差块作为残差群(RG)模块。
本文将详细介绍的双注意力模块包括空间注意力和通道注意力,可以将空间信息和通道信息联系起来,定义为
CDA(Fi)=CSA(Fi-1)⊗CCA(Fi-1)
(9)
式中:CSA(·)和CCA(·)分别为空间注意力函数和通道注意力函数;⊗表示像素点相乘。同时,为了解决网格伪影问题,用平滑膨胀卷积代替一般的膨胀卷积。双注意力模块如图4所示。
图4 双注意力模块Fig.4 Dual-attention module
在现有图像去雨算法中,大多关注对无雨图像的重建,而忽略了在去雨后恢复图像的细节信息。因此,本文在去雨后设计了一个细节恢复模块,其中包括去雨后的全局特征和局部特征。虽然全局特征可以获得更多的全局信息,然而局部特征对于图像的细节和颜色更加有利。如图5所示,MDR模块将去雨后的模糊图像分别送到全局分支、局部分支。由于膨胀卷积在保持参数个数不变的前提下增大了卷积核的感受野,同时,它可以保证输出的特征映射大小跟输入的保持一致。因此在全局分支中,本文设计了扩张因子分别为1、3、5的膨胀卷积对去雨后的特征图进行处理,并通过Concat连接,最后通过1×1的卷积层对通道数进行整合。在局部分支中,采用3×3的卷积层并通过加法操作将信息归并到全局分支中,使全局分支的信息更为完善。最后将合并好的特征图输入到卷积层,进一步调整通道和融合信息,得到最终的无雨图像。
图5 细节恢复模块Fig.5 Details restoration module
根据文献[32],广泛使用的L2损失函数由于平方惩罚在图像中处理效果不佳,可能产生局部斑点伪影。文献[30]证明,LSSIM和L1损失函数在去雨任务中对结构和边缘具有更好的效果,LSSIM得到的效果会比L1、L2的结果更具有细节。因此本文选取L1+LSSIM作为损失函数对网络进行优化,具体定义为
(10)
(11)
Ltotal=L1(YNR,YGT)+(1-LSSIM(YNR,YGT))
(12)
本文实验环境为PyTorch1.11.0深度学习框架,在Windows11,Intel i7-12700H,2.3 GHz,16 GiB RAM,Nvidia GeForce RTX 3060 GPU平台上完成。采用Adam优化器对模型进行优化,patch size为100×100,batch size为8,初始学习率为1×10-3,epoch到达40后,每隔20,学习率为原来的20%。
在Rain100H[15]、Rain100L[15]数据集中进行训练,在Rain100H[15]、Rain100L[15]、Rain800[33]和Rain1200[34]等4个数据集上进行测试。
为保证实验的准确性,本文将所有对比算法都设置成与本文相同的参数进行测试,并选择PSNR、SSIM的平均值来表现算法的性能,首先在4个数据集上,将本文算法与其他算法进行比较,见表1,加粗数据表示效果最好。
表1 PSNR和SSIM 指标的定量评估结果
从表1可以看出,本文提出的算法在Rain100H、Rain100L、Rain800数据集上的PSNR和SSIM都优于其他算法,在Rain1200数据集上位于第二。
图6所示为合成数据集上的恢复结果。
图6 合成数据集上的恢复结果Fig.6 Restoration results on synthetic datasets
从图6可以看出,本文算法的主观视觉效果在合成数据集上优于其他算法,本文的模型不仅去除了雨纹,还保留了图像的细节信息。PSNR、SSIM在数据集Rain100H中分别为30.42 dB、0.919,在数据集Rain100L中分别为40.41 dB、0.989,在数据集Rain800中分别为31.07 dB、0.902。
为了进一步证明本文所提算法具有较强的泛化能力,选取了几幅真实雨图与较为先进的算法进行比较,如图7所示。
图7 真实数据集上的恢复结果Fig.7 Restoration results on real datasets
由图7可以看出,DDN、PReNet不能有效地去除雨纹,而UMRL、RESCAN也有轻微的雨纹痕迹,JORDER和DIDMDN会丢失一些细节信息。实验结果表明,本文所提算法更接近真实无雨图像。
为了证明所提算法的有效性,本文进行了3部分消融实验,并通过客观评价指标对比验证使网络达到最佳性能。
3.4.1 关于模块数量的实验
本文将RG数量分别设置为2、3、4、5、6,MDR数量分别设置为1、2、3、4、5,分别在Rain100H和Rain100L上进行训练,见表2。
表2 不同模块数量的PSNR/SSIM定量评估结果
通过表2列出的PSNR和SSIM可以看出,增加RG和MDR数量可以提高模型的性能。然而当RG数量到达6时,模型在Rain100H和Rain100L上达到饱和状态,没有显著差异。但是当RG数量设置为6时,在Rain100L上SSIM值保持不变,PSNR值反而降低。同时,更多的RG模块会减缓网络训练速度并增加内存消耗。通过表2可以证明,当MDR数量为5时,Rain100H和Rain100L所对应的PSNR值和SSIM值全部降低。因此,本文选取RG数量为5,MDR的数量为4。
3.4.2 针对模块有效性的实验
本文分析了所提网络的主要模块RDB、DA、RG、MDR。在保持网络框架不变的情况下,通过在Rain100L上进行实验,不同的模块效果如表3所示,其中,M1代表只有RDB,M2代表只有RDB和DA,M3代表只有RDB、DA和RG,Ours代表本文含有的4个模块,√和×分别代表有、无这个模块。
表3 不同模块的评估结果
3.4.3 关于损失函数的实验
为了验证网络损失函数的有效性,本文对不同的损失函数进行了消融实验。本文将损失函数替换为几种常用于去雨任务的损失函数,包括L1损失函数、L2损失函数和LSSIM损失函数,结果如表4所示。
表4 不同损失函数的评估结果
由表4可知,单独使用L1和L2损失函数,PSNR/SSIM分别为36.84 dB/0.983和36.89 dB/0.984。SSIM损失函数考虑了人的视觉感知,SSIM得到的结果会比L1和L2得到的结果更细致,因此,本文选择它们的线性组合L1+LSSIM作为损失函数。
本文提出了一种多尺度残差群网络的图像去雨算法,该算法可以有效解决现有去雨算法存留雨纹和去雨后图像细节信息丢失的问题。具体来说,将去雨任务分成去雨子网络和恢复细节子网络进行,在两个子网络中实现参数共享,使有用的特征传递到下一个网络中。大量的实验结果表明,本文算法在多个数据集上具有优异的结果,可以有效地提高计算机视觉任务的性能,在自动化驾驶、无人机航拍等领域均具有重要的应用价值。