基于解耦重构的弱监督单幅图像去雾算法

2022-02-07 09:20张家豪
智能计算机与应用 2022年12期
关键词:编码器大气卷积

张家豪,俞 雷,张 娟

(上海工程技术大学 电子电气工程学院,上海 201620)

0 引言

雾是大气中悬浮的微粒,如粉尘、水汽和烟尘等吸收物体的反射光后,导致大气光发生散射而产生的一种常见自然现象。雾不仅会降低能见度,还会让采集的图像对比度下降、颜色失真。在雾天拍摄物体会丢失大量细节特征,图像严重退化[1-2],从而对目标检测、目标追踪、语义分割和自动驾驶等各种计算机视觉任务造成不利影响。因此,图像去雾已经成为近年来计算机视觉领域的一个重要研究课题,去雾算法能提高恶劣天气条件下各类计算机视觉辨识的性能和鲁棒性。

目前,图像去雾算法可分为2 类。一类是传统图像处理方法,该类算法以大气散射模型为基础通过各种先验知识模型恢复清晰图像。另一类是基于学习的方法。

传统图像处理方法通过先验信息对图像进行增强,改善图像的对比度、亮度等使图像变清晰。常用于去雾的图像增强算法包括直方图均衡化、Retinex算法[3-5]和小波变换等。由雾气引起的图像退化通常用大气退化模型来描述:

其中,I(x)和J(x)分别表示有雾图像和清晰图像;t(x)是大气光强度值;A是大气透射率。由大气散射模型可知,清晰图像可以通过估算大气光强度和大气透射率来得到。He 等人[6]通过观察发现在室外清晰图像的非天空区域内,局部的某些像素至少有一个通道的强度较小或接近0,因此提出可以用暗通道先验原理得到大气透射率,进而恢复有雾图像。该方法在光线均匀的场景下有较好的效果,但仍存在天空及白色物体区域内色彩失真、附近带有光晕的问题。文献[7]通过对大量有雾图像进行分析,发现在有雾情况下图像的深度、亮度和饱和度之间存在正相关,基于观察到的先验知识提出了颜色衰减先验来求解大气透射率,进而得到清晰图像。该算法可以有效去除图像中近景的雾,但远景去雾效果不佳。

近年来,卷积神经网络在计算机视觉领域获得了可观的进展。现已将一些基于学习的方法用于单幅图像去雾算法中。这类方法主要可以分为2 类。一类是基于大气退化模型利用卷积神经网络估计大气退化模型的参数来恢复图像。例如DehazeNet[8]使用设计好的卷积神经网络学习雾天大气光的强度参数t(x),随后利用大气退化模型恢复出无雾图像。另一类是基于端到端的卷积神经网络(Convolutional Neural Networks,CNN)模型直接学习输入的有雾图像和清晰图像的映射关系,克服了传统算法需要手工提取特征的不足[9]。AODNet[10]使用端到端的CNN 直接提取有雾图像中的背景特征重构清晰图像,不再依赖估算大气退化模型的未知参数A和t(x)恢复图像。GFN[11]通过提取不同尺度下有雾图像的特征恢复清晰图像。文献[12]将原始图像分别使用3 个不同尺度的卷积核进行卷积,经过一系列特征提取,得到场景透射率的近似值,随后将学习到的场景透射率用于清晰图像的恢复。基于学习的方法往往需要大量的成对训练样本进行训练,然而成对的有雾和清晰图像获取十分困难,所以大多数基于学习的单幅图像去雾算法使用合成数据集进行训练。这些算法虽然在合成数据集上表现优异,但在真实场景中的表现往往不佳。近几年对抗生成网络(Generated Adversarial Network,GAN)[13]凭借能在目标域生成肉眼难以区别的伪造图像,被广泛应用于图像分割、风格转换和图像修复等领域。Zhu 等人[14]在Cycle-GAN 中提出了周期一致性损失,不但有效提高了无监督图像转换任务中的稳定性,而且显著改善了图像的重建质量。Cycle-Dehaze Net[15]使用类似的架构,通过周期一致性损失和感知损失来获得清晰图像。文献[16]提出了一种基于对抗生成网络的雾霾场景转换算法,实现了无雾图像和有雾图像之间的转换。

本文提出了一种只需图像类别信息,无需成对训练数据集的弱监督去雾算法,利用卷积网络构成的内容信息编码器和雾分布信息编码器对有雾图像进行解耦。其中,内容信息编码器能从有雾图像中分离出内容信息,并对无雾图像的内容信息进行编码;雾分布信息编码器从有雾图像中分离出雾的分布信息,然后再使用有雾图像生成器和清晰图像生成器生成有雾图像和清晰图像。为了能使用非成对图像来对网络进行训练,本文使用了对抗一致性损失来保证去雾图像更接近目标域,通过相对熵[17](Kullback-Leibler Divergence)对雾分布编码器的潜在分布空间进行约束,使雾编码器提取的信息中尽量不包含内容信息。此外,本文还使用了感知损失提高生成器对图像细节和高频信息的恢复。实验表明本文去雾算法在合成数据集和真实场景下都能有效完成去雾任务。

1 解耦重构网络模型

1.1 算法原理分析

近年来,GAN 在风格转换、图像生成等领域引发各方关注,由GAN 网络生成的图片达到了人眼无法辨识真假的程度,现已广泛应用于语义分割、风格迁移和图像超分辨率等图像转换任务中。对于不同气候条件下的同一场景来说,可以看成一种风格迁移,因此GAN 网络也可以用于去雾任务中。受到风格转换算法DRIT[18]的启发,本文提出了一种基于解耦重构的去雾算法模型,由大气退化模型可知,有雾图像可以简化为如下表示:

由式(2)可知,有雾图像可以看作由清晰图像作为内容信息和与内容信息无关的大气光强度、大气投射图所构成的环境信息的组合。因此本文提出利用编码器网络将有雾图像进行解耦,将内容信息和雾分布信息分别嵌入到与环境信息无关的内容信息域B和与内容无关的雾分布域H中。具体工作原理如图1 所示。内容信息编码器从非配对有雾和无雾图像中提取高层次图像内容信息到潜在的内容信息域,其中通过分享内容编码器中最后3 层的权重信息,保证了从有雾图像和清晰图像中提取的内容信息嵌入到相同的潜在空间。雾分布信息通过变分编码器提取到与内容无关的雾分布域H,并使用相对熵损失把从有雾图像提取的雾分布信息约束在多元高斯分布空间。雾分布信息编码器的输出h{μh,} 和无雾内容编码器的输出一起送到有雾图像生成器GH来生成有雾图像。将有雾图像内容编码器的输出和雾编码器的输出送入清晰图像生成器GB生成清晰图像。为了对生成器的内容进行约束,本文使用了对抗损失和循环一致性损失来维持生成器的鲁棒性,使用判别器不断提高生成器的生成能力。判别器能判别生成图像和真实图像的相似程度,生成器和判别器的互相对抗能有效提高生成器生成图像的能力。下面将对算法中使用的各个模块进行介绍。

图1 网络整体架构图Fig. 1 Network architecture

1.2 内容信息编码器和雾分布信息编码器

卷积神经网络能够通过卷积核高效提取图像的高维特征,本文的内容信息编码器和雾分布信息编码器中分别先使用4 组步长为1 的卷积层和Relu激活函数组成的卷积模块提取图像的低维特征信息,随后采用步长为2 的卷积层加正则下采样模块来进行下采样,减少信息的损失。后续结构中还加入3 个卷积残差块提取图像的高维特征,该模块的使用缓解了网络层次过深而导致的梯度弥散。为了能让有雾内容信息编码器和清晰图像内容信息编码器提取的特征嵌入在相同的潜在空间,还在内容信息编码器的最后加入了一个残差块,共享2个编码器的权重。雾分布信息编码器使用类似的结构,和内容编码器不同的是去除了最后的权重分享模块,将其替换成了全连接层,用全连接层作为编码部分输出,输出雾分布信息编码器的分布向量z{μh,}。

1.3 生成器

生成器的作用是将原始图像中提取的高维特征信息恢复成目标域图像。本文使用了2 个生成器分别用来重构无雾图像和有雾图像。因为不管是有雾图像、还是无雾图像的内容信息都通过内容信息编码器提取到了相同的潜在空间域B中,所以2 个生成器先使用相同的4 组步长为1 的卷积层和Relu激活函数组成卷积模块来共享权值参数,之后分别使用3 组卷积残差块和2 组卷积上采样残差块映射学习到的高维特征,并将图像恢复到原来的尺寸。在上采样模块中使用了双线性插值加卷积的操作,降低了直接使用转置卷积带来的细节和高频信息丢失的可能,减少了恢复图像中产生的棋盘效应和图像伪影[19]。

1.4 判别器

判别器的作用是判别生成图像的真假。生成器要尽可能迷惑判别器,而判别器要尽可能区分生成图像和真实图像,两者不断博弈,最终生成器生成的图像使得判别器无法辨别真假。本文一共使用了2个判别器,用来判别生成的有雾图像和真实的有雾图像。判别器使用了3 组由卷积层、批归一化层(Batch Normalization,BN)和Relu激活函数组成的特征提取模块对图像特征进行提取和鉴别,此后采用卷积层加Sigmoid激活函数输出判别器对输入图片的分数。若为真实图片,判别器会输出高分,否则给出一个接近零的低分。生成器和判别器采取交替训练的模式进行学习,直到判别器无法判别图像真实性为止。

2 损失函数

2.1 对抗损失

在本文中使用判别器辅助无雾图像生成器和有雾图像生成器生成伪造图像。无雾图像生成器GB的目的是根据有雾图像中提取的内容信息和雾分布信息生成一张无雾图像,而无雾图像判别器DB的目标是最大化生成的清晰图像和真实无雾图像的价值函数。假设a表示满足p(a)分布的真实清晰图像样本,b表示满足p(b)分布的生成清晰图像的样本,则对抗损失函数可由如下公式进行描述:

对于判别器来说,要尽可能判断出图像的真假,当样本服从真实样本分布时,准确预测DB(a)=1。当样本为负样本时,准确预测DB(GB((b),EH(b)))=0。通过最大化损失函数让判别器的判别能力不断提高。对于生成器GB则恰好相反,GB希望生成的图像能够骗过DB,通过两者之间的博弈,鉴别能力不断提高,直到两者达到平衡。使用类似的方式来训练有雾图像判别器DH,DH的目标是最大化真实有雾图像和生成的有雾图像之间的损失函数。DH的损失函数和DB类似,表示为:

2.2 循环一致性损失

当卷积神经网络层数足够深、计算能力足够强时,网络能够把噪声作为输入映射到任意的目标域,生成和目标域类型一致的图像,但这种方法无法精确保证生成图像的具体内容。因此对抗性损失并不能保证学习到的映射函数能够把输入稳定映射为指定的输出。受到Cycle-GAN 的启发,本文使用对抗一致性损失来保证清晰图像生成器的清晰图像Jb能够通过有雾图像生成器还原成输入的有雾图像b,有雾图像生成器生成的有雾图像能够通过清晰图像生成器还原成清晰图像a。和Cycle-GAN 不同的是,本文没有对2 类图像直接使用编码器进行编码,然后使用生成器对图像进行还原。本文在其中加入了解耦模块提取图像中的环境信息,实验结果表明此方法可以取得更好的去雾效果。还原图像和输入图像之间使用L1距离进行约束,其中对有雾图像进行去雾和对无雾图像进行加雾的过程可以表示为:

将图像重新还原成有雾和无雾图像的过程可以表示为:

完整的损失函数可以表示为:

2.3 相对熵损失

在训练过程中,本文使用非成对的训练数据作为样本,因此对于雾分布信息编码器来说,能够提取正确的雾分布信息到潜在的分布空间十分重要。对于内容信息编码器来说,通过共享2 个内容信息编码器最后3 层的权重信息,能有效引导不同类型的图像内容信息编码到相同的潜在分布空间。对于雾分布信息编码器,同样希望只是提取雾的分布信息而不包含内容信息。为了达到这一目的,本文使用了2 种方法来抑制雾分布信息编码器中的内容信息。首先,在使用有雾图像生成器生成有雾图像Ia时,输入的是来自内容编码器的输出(a)和雾分布信息编码器的输出EH(b),这种结构鼓励雾分布信息编码器中不包含来自b的内容信息。其次,使用的变分编码器模型能对雾的分布信息进行有效约束,因为生成模型所使用的雾分布信息编码器输出的后验概率满足各项同性正态分布,这样雾编码器的输出z{μh,} 应该接近于正态分 布p(z)~N(0,1),雾分布信息编码器的输出在潜在空间的均值和方差分别用μ和σ表示。那么该输出和标准正态分布之间的差异可以用KL散度计算,即雾分布信息编码器的相对熵损失可以表示为:

其中,zi表示z的第i维变量。

2.4 感知损失

实验证明感知损失在图像转换类型[20]任务中能够帮助网络生成质量更高的图像,预训练的卷积神经网络中包含着丰富的语义信息,因此可以作为结构相似性的一种评价方式。本文使用了VGG19作为特征提取器提取生成器输出的清晰图像和重构有雾图像的高层信息,让彼此在全局结构相互逼近。感知损失的函数定义如下:

总的损失函数表达式如下所示:

其中,λD,λcyc,λKL和λp是网络超参数。

3 实验结果与分析

3.1 实验方案设计

(1)数据集。RESIDE[21]是近几年使用最为广泛的大型合成去雾数据集。由于采集成对的数据集十分具有挑战性,所以RESIDE 的训练集利用从NYU2[22]和middlebury stereo[23]数据集上收集的1 399张清晰的室内图像和对应的深度图,合成了13 990张有雾图像。其中,每一张清晰图片使用不同的大气光强度值和大气透射率合成10 张有雾图像。为了能更好地评价本文提出去雾算法的有效性,本算法在RESIDE 数据集的测试集SOTS 上进行了测试,SOTS 包含了500 张不存在于训练集中的清晰图像和对应的合成有雾图。此外,本文还在RESIDE 提供的室外数据集上进行了实验。实验过程中还对比了其它去雾算法在此数据集上的结果,对提出算法的有效性进行了客观分析和评价。

(2)评价指标。本文对去雾效果的评价采用了2 个指标,分别是结构相似性(Structural Similarity,SSIM)和峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)。其中,SSIM是一种衡量2 张图像相似程度的指标,SSIM更符合人眼对相似度的判断,取值范围是[0,1],SSIM的值越大,表示图像失真越小。PSNR的值是基于2 张图像之间对应像素间的误差,值越大表明对应像素之间的均方差越小,2 张图片越接近。

(3)实验环境。本文算法使用Pytorch 进行部署,硬件设备为GPU GTX 2080,处理器为Intel Xeon CPU E5-2603,内存为32 G,操作系统为Ubuntu 16.04。实验中,输入图像的分辨率为256*256,使用Adam 优化器进行梯度下降优化,批大小设置为2,使用高斯分布对网络的权重进行初始化。初始学习率设置为0.000 2,网络超参数设置为λD =10,λcyc =10,λKL =0.1,λp =0.01,使用余弦退火策略来控制学习率下降,一共对网络进行150 轮训练。

3.2 合成数据集结果分析

本文将提出的去雾算法和几种先进的基于先验信息和学习的去雾算法进行了比较,其中包括基于先验知识的传统去雾算法DCP、基于学习的全监督去雾算法DehazeNet、AOD-Net、以及EPDN[24],此外还与无需成对去雾数据集的无监督去雾算法Cycle-Dehaze Net 进行了对比。在对比过程中为了保持公平,本文使用了作者提供的源代码,按照作者给出的设置在相同的硬件设备下进行训练测试。在SOTS上的测试结果见表1。可以看出本文算法和一些全监督的学习算法相比取得了不错的结果,在室外和室内合成测试集上都取得了最高的SSIM和PSNR。图2 展示了本文去雾算法在SOTS 室内和室外数据集上的一些视觉结果以及和其他一些去雾算法的对比。从图2 可以看出,在视觉观感上本文去雾结果更接近真实的无雾图像,DCP、DehazeNet和AOD-Net 无法完全去除场景中的雾,Cycle-Dehaze Net 能够有效去除图像中的雾,但会产生严重的对比度偏差。EPDN 能够移除有雾场景中大部分雾,并且细节还原较好,但和原始清晰图像对比时会发现天空区域有一定的对比度偏移。从图2 中还可以看出,本文算法能够有效去除室外和室内的雾,并且结果更接近真实的无雾场景,图像还原效果较佳;去除有雾图像中的雾的同时还能够保留更多的纹理和细节信息,还原出真实的清晰图像。为了进一步验证本文算法的有效性,本文还进行了消融实验分析各个模块在算法中的作用。消融实验的数据集选择了RESIDE 室内数据集部分。在提出的去雾算法中最核心的模块是解耦模块,本文与传统生成网络的不同之处是使用了内容编码器和雾分布编码器对有雾图像进行了解耦,因此对移除解耦模块进行消融实验能有效验证本文算法的有效性,实验的对比结果见图3 和表2。从图3 中可以看出,移除了雾编码分支后,网络也能完成去雾任务,但是恢复的图像中存在大量的伪影,丢失了大量的纹理和细节。这是因为有雾图像中包含了大量与图像内容无关的场景信息,普通的生成对抗网络中的编码器无法有效地从有雾图像中提取图像的内容信息,消融实验结果验证了本文提出解耦重构模型的有效性。此外,本文还对实验使用的损失函数进行了消融实验,验证所使用的loss函数的有效性。具体结果参见表2。

图2 SOTS 数据集视觉结果Fig. 2 Visual comparisons on SOTS datasets

图3 消融实验结果对比Fig. 3 Comparison of ablation experiment results

表1 在公共合成测试集上对比分析结果Tab.1 Quantitative comparisons with other state-of-the-art methods on public synthetic testing datasets

表2 消融实验结果Tab.2 Results of ablation experiments

3.3 真实雾图实验分析

基于学习的去雾模型通常使用合成数据集进行训练,但合成数据集是利用大气散射模型进行合成的,整幅图像雾的分布都是均匀的,这并不符合真实户外场景的特性。真实的有雾图像在各个区域雾的浓度不是均匀分布的,这也随之增加了去雾的难度。为了验证本文算法在真实世界的表现,本文还在O-HAZE 和 I -HAZE 数据集上进行了实验。O-HAZE和I-HAZE 数据集是NTIRE 2018 挑战赛上提出的真实去雾数据集。其中,O-HAZE 数据集包含45 幅成对的高分辨率清晰有雾户外图像,每对图像都是在相同的光照条件和角度下拍摄的。I-HAZE数据集包含35 对室内场景高分辨率图像。所有的图像都是在真实场景中拍摄,并且使用专业的烟雾生成机器来形成真实的雾。各算法在真实世界数据集上的表现结果参见表3。从表3 中可以看出,本文算法的PSNR和SSIM也处于领先地位,在真实世界的泛化能力优于其他算法。

表3 真实世界去雾数据集结果Tab.3 Results on dehazing dataset in the real scene

3.4 真实雾图实验分析

在本文实验中,使用了2 个生成器分别用于去雾和合成有雾图像。其中,去雾模块在测试的时候只需经过有雾图像内容编码器和雾分布信息编码器提取内容信息和雾分布信息,而后送入清晰图像生成器中就可以生成清晰图像。可以用下列公式来表示这一过程:

利用网络另一分支还能生成更加接近真实有雾场景的图像。有雾图像的生成可用下列公式表示:

其中,z是雾分布信息编码器输出的多维正态分布向量的采样结果。合成雾图像的结果见图4。由图4 可见,采用本文方法合成的有雾图像更接近自然界中真实有雾场景,满足真实世界中雾区近淡远浓的特点。在合成有雾图像时不需要获取清晰图像的深度信息,大大降低了合成有雾图像的难度。

图4 有雾图像合成对比Fig. 4 Hazy image synthesis contrast

4 结束语

设计了一种基于解耦重构的弱监督单幅图像去雾算法,在训练过程中无需成对的有雾和无雾图像。使用内容信息编码器和雾分布信息编码器对输入图像进行解耦,使有雾图像的内容和雾特征实现了分离,同时还加入了循环一致性损失,提高了生成器重构图像的鲁棒性,相比于现有监督学习算法和非监督学习算法,去雾效果在视觉和客观指标上都有提升。此外,本文算法还可用于基于学习的去雾算法的数据增强,利用本文方法能合成更接近真实世界的有雾图像,提高现有去雾算法在真实世界去雾效果的泛化能力。未来本文算法将会继续扩充使用场景,针对雨天、雪天等恶劣天气场景下的图像恢复进行研究,进一步提高本算法实用价值和泛化能力。

猜你喜欢
编码器大气卷积
融合CNN和Transformer编码器的变声语音鉴别与还原
基于3D-Winograd的快速卷积算法设计及FPGA实现
宏伟大气,气势与细腻兼备 Vivid Audio Giya G3 S2
如何“看清”大气中的二氧化碳
卷积神经网络的分析与设计
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
基于双增量码道的绝对式编码器设计
应用旋转磁场编码器实现角度测量
大气古朴挥洒自如