基于自适应感知金字塔网络的图像去雨
2022-05-18杨爱萍王朝臣张腾飞
杨爱萍, 王朝臣, 王 建, 张腾飞
(天津大学 电气自动化与信息工程学院, 天津 300072)
在降雨天气采集到的图像质量下降严重,存在纹理遮挡、对比度下降及细节丢失等问题,严重影响视觉效果,不利于图像特征提取及辨识,导致户外计算机视觉系统难以发挥效用.因此,图像去雨具有重要的研究意义及应用价值[1].
单幅图像去雨可分为传统方法和基于深度学习的方法.早期工作大多基于核回归[2-3]、低秩估计[4-5]、表示学习[6]以及字典学习[7-8]等方法实现单幅图像去雨.该类方法通常将去雨看作图像分解问题,去雨后的图像往往存在背景模糊和雨纹残留现象.为解决这些问题,后续提出了基于判别稀疏编码(discriminative sparse coding, DSC)[9]、混合高斯模型(Gaussian mixture model, GMM)[10]和全局稀疏模型[11]等去雨方法,可在一定程度上改善去雨图像视觉质量.但是,传统方法提取雨纹特征信息不足,无法有效去除雨纹且去雨后图像视觉效果较差.
近年来,卷积神经网络(convolutional neural network, CNN)凭借其出色的特征提取能力和强大的辨识能力被广泛用于图像去雨,基于深度学习的图像去雨方法取得了较大进展.Eigen 等[12]首次将卷积神经网络应用于单幅图像去雨, 其构造了一个三层卷积神经网络学习有雨和无雨图像间的非线性映射.Fu 等[13]提出一种深度细节网络(deep detail network, DDN),使用引导滤波从雨图分离出高频特征,但去雨后的图像易丢失细节信息.Zhang 等[14]提出了一种基于条件生成对抗网络的去雨方法(ID-CGAN),但去雨后的图像不够自然.Li 等[15]提出了一种分解-合成网络结构,利用合成结果指导分解过程,但难以处理暴雨图像.Pan 等[16]提出了一种双重卷积神经网络,分别学习背景图像的结构和细节,再进行合成得到去雨图像.还有一些结合物理信息构建的去雨网络,包括结合雨纹密度信息的DID-MDN[17]、结合运动模糊信息的KGCNN[18]、结合深度信息的DAF-Net[19].以上这些方法都把去雨任务看作是一个简单的分层问题,在单阶段或单尺度下完成.
然而,有雨图像包含复杂的雨纹特征,如雨纹形状、方向和密度信息等,单阶段或单尺度网络无法彻底去除复杂雨纹.为了解决雨纹残留等问题,很多学者从多尺度或多阶段角度设计网络结构用于图像去雨.Yang 等[20]构建一种新的雨图成像模型,并结合扩张卷积提出一种联合雨水检测和去除的网络(joint rain detection and removal, JRDR),该网络对暴雨情况下雨水堆积有较好的去除效果,但部分图像易出现细节模糊.Fu 等[21]提出一种拉普拉斯金字塔网络捕捉多个尺度下雨纹特征并逐步完成去雨.Li 等[22]构建一种基于尺度感知的多阶段递归网络,将去雨过程分为多个阶段逐步完成去雨.Li 等[23]结合SE模块提出一种循环结构(recurrent squeeze-and-excitation context aggregation network, RESCAN)来获取雨纹的多尺度信息,并逐步去除雨纹.Ren 等[24]基于残差网络设计了一种由简单网络模型组成的多阶段去雨网络PReNet.Deng 等[25]从细节修复角度设计了一种双路并行网络(DRD-Net),分别用于去除雨纹和细节修复.Jiang 等[26]对不同尺度的雨纹进行渐进式融合处理,提出一种多尺度渐进式融合网络(multi-scale progressive fusion network, MSPFN).但是,以上这些方法忽略了相邻阶段信息的密切相关性,直接进行跨阶段或跨模块的信息流通,导致背景细节信息丢失.Zhao等[27]基于小波变换构建金字塔网络(PDR-Net),但其各尺度子网络只使用普通残差块进行级联,无法提取深层雨纹特征,同时去雨过程中没有进行信息补偿,因此存在雨纹去除不彻底、背景信息损失等问题.
综上,本文提出一种基于自适应感知金字塔网络的单幅图像去雨方法.首先,基于小波变换构建多尺度特征金字塔网络,相邻尺度之间进行递进式雨纹去除,每个尺度上设计了一种自适应感知子网络进行雨纹特征提取和细节修复.各尺度子网络内部通过对称跳跃连接将提取到的浅层特征传递至深层,实现浅层特征的有效复用,同时对丢失的细节进行补偿.设计的自适应雨纹感知模块利用图像的非局部信息,在扩大感受野的同时感知雨纹所在区域,并通过共享扩张卷积和注意力机制提取雨纹特征并进行自适应融合.
1 本文方法
1.1 小波金字塔网络
雨纹通常分布在高频区域,使用离散小波变换完成下采样可以同时去除部分雨纹信息.本文设计了一种小波金字塔网络,通过小波变换及其逆变换完成上下采样,并通过各尺度逐级迭代完成去雨.现有研究结果表明,三层金字塔网络设计可以在保持轻量化的同时,有效实现深层雨纹特征提取,提出的整体网络结构如图1所示.其中,DWT和IDWT表示离散小波变换及其逆变换,ARP-SubNet(adaptive rain streak perceptual sub-network)表示各尺度下(这里0,1,2分别表示从大到小3个尺度)的自适应雨纹感知子网络.不同于已有的小波金字塔网络[27],本文各尺度子网络直接对原始有雨图像进行残差学习,整体网络从低分辨率至高分辨率进行递进式连接.同时,所设计的子网络能自适应学习原始图像雨纹特征,并对不同尺度下的去雨结果进行信息补偿,实现不同尺度雨纹特征的有效复用.
图1 小波金字塔网络结构
设{X0,Y0}为输入的有雨-无雨图像对,首先对有雨图像X0进行两次小波变换,得到2个不同尺度下的子图像:
(1)
(2)
(3)
(4)
(5)
其中:fIDWT(·)表示离散小波逆变换;fARP-SubNet1(·)表示子网络ARP-SubNet1处理运算;fCat(·,·)则表示特征图的堆叠运算.
(6)
(7)
其中,fARP-SubNet0(·)表示子网络ARP-SubNet0处理运算.网络从低分辨率至高分辨率进行递进式去雨,将小尺度的去雨结果融合到相邻尺度,并指导上一尺度的雨纹去除,网络整体和局部残差学习可使网络充分利用上下文信息并快速收敛.
1.2 自适应雨纹感知子网络(ARP-SubNet)
1.2.1 子网络结构
为了更有效地进行深层雨纹特征的提取,并解决去雨过程中背景信息损失等问题,本文设计了一种自适应雨纹感知子网络,提取深层雨纹特征并逐尺度进行细节补偿,网络结构如图2所示.各子网络以自适应雨纹感知模块(adaptive rain streak perceptual block, ARPB)为核心,结合跳跃连接和SE(squeeze-and-excitation)模块完成网络搭建.不同于现有的编解码结构,这里使用了若干由前到后的对称跳跃连接对浅层和深层进行关联,对场景结构信息和细节信息进行补偿.这种连接方式可以充分利用浅层特征及上下文信息,并对提取到的雨纹特征偏差进行及时修正.同时,结合通道注意力机制,从通道维度自适应地选择特征图中更重要的通道,降低多通道下噪声对雨纹特征的干扰,减少传递过程中的信息丢失.
为了减少信息干扰,子网络首先采用卷积核尺寸为3×3的卷积层和两个残差模块用于提取输入图像X的浅层特征:
X1=f3×3(X) ;
(8)
X2=fResBlock(fResBlock(X1)) .
(9)
其中:f3×3(·)表示卷积核为3×3的卷积层;fResBlock(·)表示残差模块(residual block).由于批归一化(batch normalization, BN)层不利于复杂雨纹特征的提取,本文残差模块中去除了BN层,故只包含两个卷积层并进行了残差连接,具体网络结构如图3所示.
为了保留足够的空间信息进行重构,子网络在编码阶段只进行两次下采样,下采样操作通过步长为2的残差模块完成.为了增强通道间特征相关性,在上下采样部分的残差模块中增加了SE模块.
X3=fSE(fDownSample(X2)) ,
(10)
X4=fSE(fDownSample(X3)) .
(11)
其中:fDownSample(·)表示下采样;fSE(·)表示SE模块运算.下采样后,级联4个自适应雨纹感知模块,进一步提取深层雨纹特征并将网络捕捉到的不同尺度大小的雨纹进行融合:
X5=fARPBs(X4) .
(12)
其中,fARPBs(·)表示自适应雨纹感知模块运算.对称地,两个反卷积层堆叠在解码器相应部分,对跳跃连接融合得到的特征进行激活并进行上采样:
X6=fSE(fUpSample(fPReLU(X4+X5))) ,
(13)
X7=fSE(fUpSample(fPReLU(X3+X6))) .
(14)
其中:fUpSample(·)表示上采样;fPReLU(·)表示PReLU激活函数.然后,使用连续的1×1卷积和3×3卷积进行特征融合,得到雨纹特征图;最后,使用核大小为3×3的卷积层进行融合,得到的雨纹输出为
X8=f3×3(f1×1(fPReLU(X2+X7))) ,
(15)
O=f3×3(fPReLU(X1+X8)) .
(16)
式中:f1×1(·)表示卷积核为1×1大小的普通卷积层;O为最终的输出图像.子网络中默认使用核大小为3×3的卷积层,可以在有效提取图像特征的同时保持较小的参数量.子网络中通道数设置为64,卷积层之后的激活函数均使用PReLU函数.
图2 自适应雨纹感知子网络结构
图3 残差模块网络结构
1.2.2 自适应雨纹感知模块(ARPB)
为了感知雨纹区域并提取深层雨纹特征,本文基于非局部思想和共享扩张卷积设计了一种自适应雨纹感知模块,并结合注意力机制对不同尺度的雨纹特征进行融合.ARPB包括非局部感知单元(non-local perceptual unit)和特征融合单元(feature-fusion unit),同时采用全局残差连接,网络结构如图4所示.非局部感知单元通过计算每个位置在特征图中的响应,给所有位置分配不同的权重,能够将感受野扩大到整个图像,有效感知雨纹所在区域.同时,特征融合单元通过不同扩张因子的共享扩张卷积对不同尺度的雨纹进行捕捉,并将3条不同扩张因子的支路提取到的雨纹特征通过注意力模块进行融合,实现不同尺度的雨纹特征自适应融合.
在非局部感知单元运算时,对于给定的输入x,其维度为H×W×C,位置i处的响应可通过特征图中其他位置的特征加权计算得到:
(17)
f(xi,xj)=eθ(xi)Tφ(xj).
(18)
其中:θ(xi)=Wθxi,φ(xj)=Wφxj.g(xj)用于计算位置j处的输入信号表征,可以表示为g(xj)=Wgxj,Wθ,Wφ及Wg为权值矩阵.
为了实现跨通道交互和信息融合,将非局部增强特征激活输入到两层1×1卷积层:
zi=f1×1(f1×1(y)) .
(19)
反复实验可知,使用3条不同扩张因子的并行支路能在保持较小的参数量和计算量的情况下有效扩大感受野.3条支路分别使用扩张因子为1,2,3的共享扩张卷积完成不同尺度感受野下的特征感知,以捕捉不同尺度大小的雨纹:
(20)
其中,fdc,DF=n(·)表示扩张因子为n的共享扩张卷积.基于此,提取到多种感受野下特征图的全局信息zcon:
(21)
其中:fGAP(·)表示全局平均池化;fFC(·)表示全连接层.
图4 自适应雨纹感知模块结构
然后,通过线性操作和softmax函数选择多种感受野下的最优特征权重,基于注意力模块实现特征图的自适应加权;最后,将加权后的结果输入到一层1×1的卷积层进行通道压缩.该过程可以表示为
{wi,1,wi,3,wi,5}=fsoftmax(fLinear(zcon)) ,
(22)
(23)
其中:fsoftmax(·)表示softmax激活函数;fLinear(·)表示线性操作;{wi,1,wi,3,wi,5}表示每条支路所对应的权重.
1.3 损失函数
对于本文提出的单幅图像去雨网络,采用了平滑L1损失、SSIM损失和感知损失[28]来约束网络训练.为了使网络由粗及细分层指导图像去雨过程,本文设计了一种多尺度损失函数对网络进行训练,可有效提升去雨图像视觉质量并防止伪影现象.平滑L1损失Ls1可表示为
(24)
(25)
此外,多尺度SSIM损失可表示为
(26)
同时,为了消除图像复原过程中可能引入的伪影现象,还使用感知损失约束网络训练.感知损失可衡量去雨图像和对应的清晰图像之间语义特征差异,采用预训练在ImageNet上的VGG-16网络输出的特征图φj(·)来计算,可表示为
(27)
因此,总的损失函数可以表示为
L=Ls1+LSSIM+λpLP.
(28)
其中,λp为感知损失的权重因子,本文中设置为0.005.
2 实验与结果分析
2.1 实验设置及数据集
本文方法基于Pytorch框架实现,在Ubuntu环境下使用NVIDIA 1080Ti GPU训练网络.Batchsize设置为48,patchsize设置为112,采用动量衰减指数β1=0.9,β2=0.999的Adam优化器进行优化,迭代次数为700次,初始学习率设置为0.001,分别在第250,400,500,600个epoch时进行学习率衰减,每次衰减一半.
针对有雨-无雨图像对难以获取问题,本文采用Rain200L[20]、Rain200H[20]、Rain800[14]及Rain1400[13]四个合成数据集进行训练.Rain200H和Rain200L分别由1 800张训练图像和200张测试图像组成;Rain1400合成数据集包含14种雨纹,由12 600张训练图像和1 400张测试图像组成; Rain800合成数据集由700张训练图像和100张测试图像组成.文献[17]和[20]还提供了一些真实的雨天图像用于验证方法的鲁棒性.本文用这些图像作为真实数据集,对提出的网络进行客观评价.
在合成数据集和真实数据集上进行实验,并与目前的优势主流去雨方法进行对比.包括2个传统方法 DSC[9]、GMM[10]以及8个基于深度学习的方法:DDN[13]、DID-MDN[17]、JORDER[20]、RESCAN[23]、DAF-Net[19]、PReNet[24]、DRD-Net[25]、MSPFN[26].
2.2 在合成数据集上实验
首先在合成数据集上进行实验,采用了Rain200L、Rain200H、Rain800以及Rain1400四个合成数据集进行实验.利用峰值信噪比(peak signal-to-noise ratio, PSNR)和结构相似性(structural similarity, SSIM)两个客观评价指标对恢复的图像质量进行评价,各方法实验结果如表1所示.可以看出相较于现阶段优势的去雨算法,本文方法在Rain200L和Rain1400数据集上取得了最优结果,在Rain200H和Rain800数据集上也取得了最高的PSNR值和次高的SSIM值.而获得最高SSIM值的DRD-Net[25],在网络中级联更多的子模块、通过更深的网络层来提取雨纹特征,存在参数量大、计算速度慢等问题.在计算复杂度方面,统计了各算法在数据集Rain200H上的测试平均用时,结果如表2所示.可以看出,本文方法在用时较少的情况下可取得最优去雨结果.
表1 在合成数据集上PSNR和SSIM结果
表2 在Rain200H上平均运行时间对比
Rain200H数据集是Yang等[20]提出的一个合成数据集,图像中的雨纹较为密集,具有更大的挑战性.实验中,从Rain200H数据集中选取了3张人物图和3张自然景观图进行去雨主观效果评价.为了使主观效果的对比更有说服力,选取雨纹和背景细节重合较多的图片进行实验.所对比的方法有DDN[13]、RESCAN[23]、PReNet[24]、DRD-Net[25]、MSPFN[26].由图5可以看出,DDN[13]方法虽然可以去除大部分雨纹,但仍存在去雨不彻底的问题(如图5 b中最后小男孩的面部),并且整体场景会因为过度平滑而模糊(如图5 b 中建筑物、风车、毛绒帽子等).RESCAN[23]能去除绝大部分雨纹,但是部分区域存在伪影(如建筑物及天空部分),同时仍有雨纹残留现象.PReNet[24]结果中没有雨纹残留现象,但仍然有一些伪影存在,并且有背景细节丢失现象(如建筑外墙的反射以及毛绒帽子部分).DRD-Net[25]虽然视觉效果良好,但整体网络参数量偏大,同时对部分细节恢复不理想(如飞机机身文字以及土坯外墙部分).MSPFN[26]将多个数据集合为一体进行训练,导致对特定程度的雨纹去除效果不理想,并存在过度去雨现象,且对面部细节恢复较差.由图5可以明显看出,本文方法去雨较为彻底,基本没有出现伪影现象,整体图像色彩保持度较好,且对细节恢复效果显著.
为了增强方法的鲁棒性,本文还选取了Rain200L数据集中的5张图像进行了主观对比.由图 6 可以看出,RESCAN[23]和MSPFN[26]方法存在部分雨纹残留,DDN[13]方法存在过度平滑问题,本文方法对于雨纹的去除及背景细节保持效果良好.
图5 在合成数据集Rain200H上的实验结果
2.3 在真实数据集上实验
为了进一步验证所提方法的有效性,本节选取了5张经典的真实雨天图像进行实验,并与目前的优势算法进行比较,去雨后的图像如图7所示.由图7 可以看出,这几种方法都能去除大部分的雨水遮挡,但对于密集雨纹形成的雾纱层去除效果一般,同时也存在较大雨滴去除不彻底的问题.由图7b可以看出,DDN[13]方法对于真实雨纹的去除能力较弱,如第2张图和第5张图中都存在明显的雨纹残留.由图7c可以看出,JORDER[20]方法存在过度去雨现象,第1张图、第2张图和第5张图中的叶子都存在模糊现象.由图7d 和7f 第5张图可以看出,RESCAN[23]方法和MSPFN[26]方法虽然可以去除部分雨纹,但对于密集雨纹去除不彻底.由图7e可以看出,PReNet[24]虽然可以去除大部分雨纹,但存在一定的颜色失真现象.由图7g 可以看出,本文方法可以在去除大部分雨纹的同时保持较好的色彩和细节.
2.4 消融实验
为了验证提出的去雨网络每个模块的有效性,本文还进行了消融实验,实验方案如下:方案1在子网络中不使用跳跃连接(skip connection, SC);方案2在子网络中不使用自适应雨纹感知模块(ARPB),而是用普通的残差模块代替自适应雨纹感知模块;方案3不使用离散小波变换(DWT),而是使用普通步长为2的卷积和反卷积代替小波变换和小波逆变换构建特征金字塔结构;方案4在子网络中不使用SE模块;方案5的损失函数不使用有预训练网络参与的感知损失函数(perceptual loss),只使用Ls1和SSIM损失函数;方案6不使用多尺度金字塔(multi-scale pyramid, MSP)的网络结构,而是在单一尺度上进行处理;方案7使用小波变换构建金字塔网络,同时子网络使用跳跃连接、SE模块及自适应雨纹感知模块,即本文方法.
图6 在合成数据集Rain200L上的实验结果
本文在Rain200H数据集上对上述实验方案进行质量评价,各种方案下得到的PSNR和SSIM如表3所示,去雨结果如图8所示.从表3可以看出,本文方法具有更高的PSNR和SSIM值.同时由图8可以看出,方案1由于缺少跳跃连接模块,没有进行信息补偿,去雨后图像有模糊现象,并且背景恢复效果较差;方案2没有使用自适应雨纹感知模块,部分区域去雨不彻底且信息损失严重;方案3在不使用小波变换的去雨结果图中,中间小孩脸上有亮斑,同时衣领区域存在过度平滑现象;方案4在不使用SE模块的实验结果中,衣服区域和中间小孩脸上有雨纹残留;方案5没有使用感知损失约束训练,去雨结果图中小孩脸上存在明显亮斑;方案6没有采用多尺度金字塔网络结构的结果图中存在一些残留的雨纹.可以看出,本文方法(方案7)去雨彻底,且可较好地保留图像细节.
表3 在Rain200H数据集上PSNR和SSIM结果对比
图7 在真实数据集上的实验结果
图8 消融实验结果比较
3 结 语
本文提出了一种基于自适应感知金字塔网络的单幅图像去雨方法,网络结构设计充分考虑了对不同尺度雨纹特征的提取及融合,可有效提高网络模型的精度,能在有效去除雨纹的同时较好地保持图像的细节信息.本文方法使用自适应雨纹感知模块对深层雨纹特征进行提取,同时子网络在去雨过程中注重对细节信息的补偿,有效解决了现有去雨方法密集雨纹去除不彻底或因过度去雨导致的细节丢失等问题.