1. 引言
在生活中我们可以发现,雾的存在会严重影响图像的质量,遮盖图像的信息。图像与信息模糊、失真会影响视觉应用的效果。因此,图像去雾算法的研究对于自动驾驶、视频监控、目标检测等视觉系统具有重要意义。近年来深度学习技术不断发展,准确、高效去除图像中的雾也备受关注。传统的去雾算法根据是否使用物理模型来简单地分成两类。第一类是基于图像增强的算法,包含直方图均衡化[1]、Retinex理论[2]、小波变换算法等,它未考虑雾的物理特性,仅通过调整图像的对比度和饱和度来实现去雾,因此在复杂场景的去雾表现不佳。第二类是基于大气散射模型[3]的图像去雾算法,利用先验知识或假设图像退化的物理模型实现去雾。HE等[4]将暗通道先验(dark channel prior, DCP)算法映射到大气散射模型,设计了一种有效的去雾算法。在此基础上多人进行了方法的改进得到了广泛应用。但这类方法对参数估计的精度要求高,当区域不满足先验算法会失效,出现颜色失真和光晕现象。近年来深度学习方法广泛应用于各类图像处理的任务中,图像去雾也有了更有效的方法。基于深度学习的去雾网络根据输入输出的不同也可以简单分为两类。第一类是非端到端的去雾网络,它通过训练来获得输入图像的无雾透射图。在非端到端去雾网络中,CAI等[5]基于大气模型提出了深度学习的去雾算法DehazeNet,算法将边缘细节恢复较好,但仍然存在残留;Ren等[6]设计了一种由粗尺度卷积网络和细尺度卷积网络组成多尺度卷积神经网络模型MSCNN用于图像去雾。另一类是端到端的去雾网络,它可以通过学习直接将有雾图像转换成清晰无雾图像,不需估计介质传输图及大气光图像,减少误差,得到更好的去雾效果。在端到端去雾网络中,LI等[7]提出了AOD-Net通过一体化网络架构实现了高效的图像去雾。Wang [8]等提出的FFA-Net通过特征融合注意力机制显著提升了去雾效果。Li等[9]提出的MB-TaylorFormer通过多分支高效变压器结合泰勒公式显著提升了去雾效果。传统的图像增强和基于大气散射模型的去雾算法相比,基于深度学习的算法效果更理想,但目前图像去雾依然存在很多问题等待进一步优化。例如,大多数算法基于成对数据来训练,同时收集有雾图像与无雾图像难度较大,在合成数据集上训练的网络对真实图像去雾的效果较差;注意力机制的二次计算复杂度使得Transformer [10]应用受到了限制等。为解决这些问题,本文选用CycleGAN [11],使用非成对的数据进行训练并将生成器进行改进,替换为改进后的MB-TaylorFormer网络,增强CycleGAN的去雾能力。改进后的生成器为Transformer变体,采用泰勒扩展来近似注意力机制,实现了线性轻量级的复杂度,增强了去雾效果。
2. CycleGAN网络结构
CycleGAN是在非配对数据集上完成端到端去雾网络的训练,无需数据对齐和标注,用生成对抗的方式学习映射关系。模型有两个生成器和两个判别器,通过两个生成器完成循环过程通过增加训练成本换取训练的灵活性,网络结构如图1所示,有雾图像经生成器GAB转换为无雾图像,无雾图像通过GBA转换成有雾图像,通过原始输入图像与循环后转换图像计算差异,判别器网络对生成器网络处理后的图像进行评估和反馈来调整生成器网络的模型参数,使生成器网络模型可以更好地生成去雾的图像。本文主要通过改进该模型的生成器部分来增强模型对信息的利用,提高模型生成图像的质量。
Figure 1. Network architecture of CycleGAN
图1. CycleGAN网络结构
3. 改进CycleGAN网络架构
3.1. 生成器
Figure 2. Overall architecture of generator
图2. 生成器整体结构
原有生成器结构去雾效果较差,因此本文将生成器进行了改进,由于选用CycleGAN本身增加了训练成本,因此在生成器部分本文使用Transformer变体,降低计算成本。正如图2网络可见,该网络采用U-net [12]结构,首先使用3 × 3卷积操作进行浅层特征提取,随后利用“四级编码器—解码器”网络对深层特征进行提取。在每级编码器中引入了由多尺度补丁嵌入和多分支Transformer组成的残差块,其中多尺度补丁嵌入模块通过不同大小的卷积核及可变形卷积来捕捉图像的局部与全局特征,并将其输入到多个Transformer分支当中。每个Transformer分支由多个Transformer编码器组成,用于处理来自多尺度补丁嵌入模块的特征。最后使用选择性核融合(SKFF) [13]模块融合不同分支生成的特征。每个阶段使用像素取消洗牌和像素洗牌操作[14]对特征进行下采样和上采样,以保留更多局部信息并避免信息丢失。为了聚合编码器和解码器的信息,我们采用了跳跃连接[15]机制,并通过1 × 1卷积层进行降维。为进一步恢复图像的精细结构和纹理细节,在“编码器—解码器”结构之后,我们加入了残差块。最终,通过3 × 3卷积层减少通道数并输出残差图像。这一改进后的生成器结构有效地提升了去雾性能,同时保持了较高的计算效率。
3.1.1. 多尺度补丁嵌入模块
采用堆叠扩展感受野的操作,本文选用堆叠多个具有不同小核的可变形卷积层增加网络的深度,提供多层次的语义信息,帮助减少参数和计算负担。并在所有可变形卷积层后面使用Hardswish [16]激活函数来激活可变形卷积层的输出。这一模块可以更好地捕捉不同尺度和层次的视觉特征,提高对视觉元素多样性的建模能力,多尺度补丁嵌入模块结构如图3所示。
Figure 3. Architecture of multi-scale patch embedding
图3. 多尺度补丁嵌入模块结构
3.1.2. 泰勒扩展自注意力机制
Softmax自我关注的计算复杂度为O,计算成本昂贵。因此本文学习引入泰勒扩展自注意力机制,降低计算成本,Q,K,V采用深度卷积生成的方法,强调局部上下文。使用多头结构,从层级的顶部到底部,头部的数量逐渐增加。因一阶泰勒展开忽略余数产生误差,引入MSAR模块通过学习查询和关键字的局部信息进行修正,多泰勒扩展自注意力机制结构如图4所示。
Figure 4. Architecture of taylor expanded multi-head self-attention
图4. 泰勒扩展自注意力机制结构
3.2. 判别器
本文判别器依然保留原始CycleGAN模型当中的判别器为DA和DB确保模型在图像去雾任务中的有效性和鲁棒性,DA和DB分别用于判别源域(有雾图)和目标域(去雾图)中的图像真实性。这两个判别器遵循PatchGAN结构,旨在捕捉图像的局部特征,并提高模型的学习能力。每个判别器由多个卷积层组成,逐步降低输入图像的空间分辨率,同时增加特征图的深度。每个判别器的整体结构如图5所示。
Figure 5. Architecture of discriminator
图5. 判别器结构
4. 损失函数
生成对抗损失用于训练生成器和判别器之间的对抗过程。生成对抗损失用于训练生成器,使其生成的去雾图像可以欺骗判别器。通过最小化生成对抗损失,学会生成更加逼真的图像去雾图像。我们采用二分类交叉熵损失(Binary Cross Entropy, BCE)来计算生成对抗损失,对于生成器和判别器,可以分别表示为
(1)
(2)
其中,Lg为生成器生成对抗损失函数,Ld为判别器损失函数,y~Pdata(y)是真实无雾图像的分布,x~Pdata(x)是有雾图像的分布。
循环一致性损失用于确保从源域到目标域再回到原域的变换是一致的,通过计算两个张量元素之间绝对值差异的平均值帮助模型学习双向映射关系,我们采用L1范数损失(L1 Norm Loss)函数来计算循环一致性损失:
(3)
其中,Ex~Pdata(x)和Ey~Pdata(y)分别表示对来自数据分布Pdata(x)的样本x和y的期望值,GAB和GBA是两个生成器网络,GAB用于将域A中的样本x转换成域B中的样本,GBA用于将域B中的样本y转换成域A中的样本。
表示L1范数,即绝对值之和。
本文生成器和判别器的损失分别计算,并且在每次迭代中分别更新。各模块综合几个损失函数来训练整体网络,生成器综合损失函数GTotalloss为
(4)
其中,
和
分别为两个子损失函数的权重参数。经过实验验证,当参数分别设置为8和0.8时去雾的效果最好。判别器综合损失函数DTotalloss为
(5)
5. 实验结果与分析
5.1. 实验配置
实验在型号为GeForce GTX 1080 Ti的GPU上使用pytorch框架完成。Adam optimizer [17]用来训练网络,其中衰减率β1和β2采用默认值0.5和0.999。网络的batchsize为1,初始学习率为0.001,训练迭代次数为200次。实验直接采用真实世界非配对图片,训练时,选取800张有雾图像和无雾图像作为训练集。在对训练集预处理时,选择将图像的尺寸裁剪为256 × 256,并使用水平和垂直翻转图像来增强数据集的质量。
5.2. 评价指标
本文采用峰值信噪比PSNR (Peak Signal to Noise Ratio)与结构相似性指数SSIM (Structural Similarity Index)作为评价指标对实验结果进行评价。PSNR通过均方差进行定义,其数值越高图像质量越好、处理后图像与清晰图像之间误差越小、失真越少。SSIM用于衡量两幅图像相似程度,其数值越接近于1代表两幅图结构越相似。
5.3. 实验结果和分析
为验证算法的性能,将本文算法与基于先验知识的DCP去雾算法;基于大气模型的深度学习的AOD-Net去雾算法;基于端到端的深度学习的GCANet、FFA-Net、MB-TaylorFormer去雾算法进行比较,实验结果如图6所示,SSIM和PSNR指标定量比较不同算法的去雾结果,见表1。DCP、AOD-Net去雾算法的色彩饱和度比较好,但部分位置出现颜色失真的问题,图像不真实;GCANet和FFANet细节恢复较好,但处理后的图片中仍有残留的雾,天空颜色过亮;MB-TaylorFormer可以将雾基本去除,但整体的亮度偏暗。与上面接种去雾算法比较,本文的算法可以更好的去雾并保留下更清晰的细节信息特征,在图像的色彩饱和度、对比度及亮度等方面的恢复最接近真实图像。
Figure 6. Results of comparison experiment
图6. 对比实验结果图
Table 1. Analysis of experimental results
表1. 不同算法的实验结果分析
评价指标 |
DCP |
AOD-Net |
GCANet |
FFA-Net |
MB_TaylorFormer |
本文算法 |
SSIM |
0.81 |
0.85 |
0.89 |
0.90 |
0.92 |
0.93 |
PSNR |
18.49 |
20.06 |
24.23 |
27.31 |
27.35 |
28.75 |
6. 结论
本文提出了一种基于CycleGAN模型改进的去雾算法,使用非配对数据集避免了同时收集有雾图像与无雾图像难度较大、不对齐的问题,由于CycleGAN模型计算成本大,在生成器中本文选择改进后的MB-TaylorFormer网络,在更好捕捉图像多尺度特征的同时有效解决注意力机制的二次计算复杂度。另外本文算法属于端到端去雾,通过直接学习输入图像的特征,不依赖传统的大气散射模型,这样避免了因估计不准确的透射率和大气光值而导致的去雾不彻底和颜色偏差等问题,从而实现了更高质量的去雾效果。