徐 杰,孙偲远
(江苏科技大学 计算机学院,江苏 镇江 212100)
降雨是常见的恶劣天气之一,从雨天获取的图像受到雨水的影响,会导致图像内容模糊,从而增加了视觉任务的难度,如目标检测[1]、语义分割[2]、场景分析[3]等等。因此,图像去雨具有重要的研究意义。
目前有大量的去雨算法被提出。其中,传统的图像去雨算法主要是基于先验信息的优化算法,如稀疏编码[4]、高斯混合模型[5]和图像分解[6]等等,这些算法试图利用纹理特征的先验信息对雨纹进行建模,然后将它们从图像中分离出来。然而,这些方法只能提取图像中的浅层信息,导致低级特征的模型表征能力非常有限,泛化能力和自适应能力相对较弱。因此,此类方法对于那些背景物体复杂且信息丰富的图像会有模型建立复杂、计算量大和去雨效果不理想等问题。
随着神经网络的快速发展,卷积神经网络凭借其强大的特征表示力和计算能力在图像去雨研究上表现优异。Fu等[7]首次提出深度卷积网络架构用于图像去雨,这种方法将图像分为基础层和细节层,并通过学习细节层之间的非线性映射关系来去除雨痕,接着将细节层和基础层合并得到去雨图像。Zhang等[8]提出了一种基于密度感知的多流密集连接卷积神经网络算法对雨纹进行去除,该算法将雨密度分级,并利用多流密集网络预测出清晰图像,具有适应多种尺度的雨纹的能力。Ren等[9]提出了一种渐进循环去雨网络,该网络通过多个阶段的递归运算来实现网络参数共享,以取代复杂模型,从而减少网络参数并提高图像去雨的质量。Zamir等[10]将图像去雨分解为多个阶段的子任务,其中编码器网络用于学习特征,最终利用恢复网络完成图像去雨过程。Huang等[11]提出了一种面向内存的半监督方法,使网络能够从数据中探索和学习雨纹的特性,并利用自监督的记忆模块来恢复无雨背景。
在图像去雨领域,生成网络建模也受到广泛关注。生成模型通过学习清除图像背景的底层数据分布,从而实现图像去雨。由于其更强的表达能力,生成方法在视觉恢复问题中具有更好的泛化能力。最近,去噪扩散概率模型在各种生成建模任务[12-14]中取得了显著成功。
基于先进的生成建模方法,该文使用条件扩散概率模型,应用于处理雨天环境下的图像恢复。为使该方法更加高效和灵活,采用基于SR3[15]的U-Net全卷积网络架构,可支持输入任意大小图像;引入确定性加速采样,用更小的采样步数来加速生成过程,提高图像恢复效率;通过图像重叠分块处理并使用平滑噪声估计来指导采样过程,减少运算的数据量和计算压力,进一步提高算法的适用性。
去噪扩散概率模型[16]是一类通过马尔可夫链学习的生成模型,能够将高斯噪声分布执行变分推理转换为模型所训练的数据分布,从而实现去噪和数据恢复的任务。扩散过程由前向扩散过程和逆扩散过程组成。在前向扩散过程中,从一个干净的数据样本x0开始,将预定义的方差表{β1…βt}注入高斯噪声,βt∈(0,I),持续T个时间步长进行加噪,最终得到一系列数据样本x1到xt。如下所示:
(1)
(2)
联合分布pθ(x0:T)称为逆扩散过程,具有学习高斯跃迁的马尔可夫链。从标准高斯分布开始,迭代执行T个时间步来去噪,从而生成与训练分布对应的图像。当时间步数较大且{βt}的增量较小时,逆分布可以近似为高斯分布。利用已知逆分布q(xt∣xt-1),可以对xt~N(0,I)进行采样,从q(x0)中得到样本,执行逆扩散过程。使用带参数θ的神经网络进行近似:
(3)
pθ(xt-1∣xt)=N(xt-1;μθ(xt,t),Σθ(xt,t))
(4)
在这个模型中,使用μθ(xt,t)和Σθ(xt,t)神经网络对逆扩散过程进行参数化。为了获得参数θ,通过最小化定义数据分布的负对数似然的变分下界。具体而言,使用优化负数据对数似然的变分界来训练模型。通过这种方式,可以有效地学习到数据分布的结构,提高模型的性能,并更好理解数据的特征。如下所示:
(5)
(6)
(7)
(8)
(9)
(10)
(11)
为了使分布的均值相等,训练目标可以进一步简化为:
Lsimple=Et,x0,[-θ(xt,t)2]
(12)
在该网络中,首先在t时刻从xt中预测噪声t,然后通过逆扩散过程pθ(xt-1∣xt)采样,最终可以得到目标分布的样本:
(13)
其中,z~N(0,I),这类似于通过朗之万动力学采样步骤,从噪声扰动最大的分布中取样,并逐步降低噪声尺度的大小,从数据分布中推导出新的样本,直到达到最小值。
条件扩散模型[12]展示了最先进的数据编辑和图像合成能力。这些模型基于约束生成图像,并且通过逆扩散过程pθ(xt-1∣xt,y)学习条件分布,而不修改前向扩散过程q(x1:T∣x0)。这种方法可以保证以y为条件的数据分布采样的x具有高保真度。其过程可以表示为:
(14)
为了学习条件分布,在所有时间步长t均使用图像y对神经网络进行约束。训练目标在此处被定义为:
Lsimple=Et,x0,[-θ(xt,y,t)2]
(15)
获得了条件分布之后,该模型就可以用于推理。给定一幅图像y后,可以从纯高斯噪声开始,从T步的马尔可夫链中采样,pθ(xt-1∣xt,y)的条件分布的对应均值为:
(16)
去噪扩散隐式模型[16]为预训练的扩散模型提供了一种确定性加速采样方法,该方法以牺牲多样性来生成质量更好的图像样本。隐式采样利用了广义的非马尔可夫正向过程公式:
(17)
将数据分布按照特殊选择的标准差λ进行重写:
(18)
用方差表示其均值:
(19)
(20)
通过加速采样的方式,从完整的{1,2,…,T}时间步长中抽取出子序列{τ1,τ2,…,τS},τ1处于逆扩散的最后一步,从而大幅度减少采样步骤。
τi=(i-1)·T/S+1
(21)
在与隐式采样保持兼容的同时,将带有条件y的逆扩散过程纳入公式:
(22)
从xT~N(0,I)出发,加入条件y,沿着一条确定性的反向路径,最终抵达x0。扩散模型过程如图1所示。
图1 扩散模型过程
现有的部分生成式网络模型在进行图像去雨时要求输入指定大小的图片,但是由于数据集的差异,会出现图片大小不统一的问题。虽然可以通过对图片进行resize来解决,但这种方法会导致原始信息的丢失和图片精度的损失。相比之下,该文采用基于SR3[15]的全卷积网络架构,它使用了来自文献[16]的U-Net结构的变体,并用BigGAN[18]的残差块替换了传统的残差块。为保证模型不受图像分辨率的影响[19],去掉了自注意力机制、位置编码和群组归一化,使得条件扩散模型能够支持任意图像大小的输入。
该文采用图像重叠分块处理与重构的方法[20],该方法将图像分成小块进行局部操作,并在优化后将结果合并,如图2所示。在图像分块时,保证相邻图像块有一定的重叠,以消除边缝,并在采样过程中对重叠小块之间进行平滑处理。使用图像分块处理不仅可以实现并行处理,而且还可以将整张图像分块处理并调入内存,提高算法的适用性。这种方法可以避免处理过大图像时出现的问题,减少每次运算的数据量和计算压力。
图2 重叠分块
为了训练模型,该文使用带参数θ的神经网络进行如下近似:
(23)
(24)
(25)
图3 基于条件扩散隐式模型图像去雨
随后将重叠小块的噪声估计累积到矩阵At中,并使用平滑的全图像噪声估计执行隐式采样更新:
(26)
实验环境为ubuntu18.04,32 GB内存,5 vCPU Intel(R) Xeon(R) Silver 4210 CPU @ 2.20 GHz,RTX 3090(24 GB)GPU,Cuda为11.1,使用Python 3.8编程语言和Pytorch 1.8.1框架进行训练。在训练过程中,模型将图片随机裁剪为64×64的小块,并使用Adam优化器,学习率固定为0.000 02,为促进更稳定的学习[17],参数更新时滑动平均值设置为0.999。
在训练和测试的过程中,通常需要大量的数据集,尤其是成对的有雨和无雨图像。为解决这些问题,该文选用公开的训练集进行训练和测试,包括Rain14000[21]和SPA-Data[22]。为了评估算法的去雨效果,采用峰值信噪比(PSNR)和结构相似性(SSIM)两个指标。实验数据集的划分如表1所示。
表1 实验数据集的划分
将文中算法与DID-MDN[8],PReNet[9],MPRNet[10],MOSS[11]去雨算法在合成数据集Rain14000上进行定量分析,对比结果如表2所示。与其他算法相比,文中算法在峰值信噪比和结构相似性方面表现更好。同时,图4展示了文中算法在合成数据集上去雨的视觉效果。从图中可以发现,PReNet在密集雨线下会有明显的雨痕残留,而DID-MDN产生了较大的伪影,MPRNet和MOSS丢失了边缘纹理细节较差,与之相比,文中算法可以有效地去除密度较大、方向不同的雨纹,并保留更多的图像细节和边缘信息,从视觉上得到更令人满意的效果。
表2 不同算法在合成数据集上的定量对比结果
图4 不同算法在合成数据集上去雨结果的视觉对比
为了进一步验证算法在真实环境下去雨的泛化性能,测试采用了SPA-Data数据集,测试结果如图5所示。从图中可以发现,对比算法去除雨滴和较粗的雨纹方面效果并不理想,相比之下,文中算法在雨纹去除和保持图像细节两方面都表现最佳,因此在自然雨图上具有更好的泛化能力。
图5 不同算法在真实数据集上去雨结果的视觉对比
该文提出一种基于条件扩散隐式模型的图像去雨方法,采用基于SR3[5]的U-Net全卷积网络架构,支持任意大小的图像输入。引入确定性加速采样来提高图像恢复效率。此外,采用图像重叠分块处理以减少内存压力,提高算法的适用性。由实验分析结果所示,该方法在单图像去雨效果上有更好的性能,但依然存在不足之处。尽管使用了加速确定性采样技术,但相较于其他生成模型,图像恢复时间仍然有待提高,这也是未来需要重点研究的方向。