1. 引言
近年来,雾霾问题严重地威胁着人们的生存与生存。在雾霾条件下,由于空气中的微粒及其他粒子的存在,会导致光线的散射与吸收,导致场景中的一些细节模糊,从而降低了成像质量与视觉效果。针对这一问题,提出了一种基于深度学习的图像去雾的新方法,将其应用于目标检测、目标识别 [1] 、语义分割 [2] 、卫星遥感监测等多个领域,以改善雾霾环境下的图像质量。
最近的一些研究显示,图像去雾技术正处于一个非常活跃的发展阶段。最早的几种去除雾霾的方法,都是建立在经典的物理模型基础上,再加上滤波技术 [3] [4] [5] ,其中最具代表性的是:直方图均衡 [6] ,Retinex算法 [7] ,同态滤波 [8] ,以及小波变换 [9] 等。然而,现有的理论模型都假定全影像内的光线和透过系数是均一的,因此不能精确估算出光线和透过系数,从而制约了该方法对不同光线条件下的光线变化进行精确建模。针对此问题,本文在前期工作中提出了一种新的利用暗通道信息的算法 [10] ,在此基础上,利用目标区域内的整体极小点以及大气环境下的光线信息,精确地估算出目标区域的透过系数,从而实现对目标区域的高分辨率重建。另外,在计算机视觉领域,深度学习的快速发展为解决这一问题提供了新的契机。基于CNN的深度学习方法是解决当前影像去雾霾问题的一项关键技术。研究人员提出了以深度学习模型为基础的图像去雾算法 [11] ,其中包括了不需要使用先验知识的GCAnet [12] ,多合一去雾网络AOD-net [13] ,以及DehazeNet [14] 等。
虽然目前已有较大的发展,但仍面临着许多亟待解决的问题。目前,在实际应用中,对复杂环境进行去雾化处理仍是一项极具挑战的课题。现有的去雾方法在背景复杂,对比度低,纹理微弱等条件下仍有一定的局限性。同时,现有的深度神经网络方法也存在着对多场景泛化性能不足的问题,尤其是在处理未知场景、未知区域的图像去雾等问题时,难以取得理想效果。
为了解决以上的问题,并考虑现有的成对的图像去雾数据集有限的问题,本文选择可采用非配对数据集的循环一致性生成式对抗网络CycleGAN (Cycle-Consistent Adversarial Network) [15] 作为网络基础,利用不同密度雾霾数据集进行训练,从而形成一种将多个除雾模型进行有效融合的除雾算法。为了提高去雾效果,本文还给出了一个在Lab颜色空间中的图像损失函数。最后,在该模型中,为了获得去雾的关键信息,引入CBAM注意力机制 [16] ,以增强网络对于信息权重的分配。
2. 工作基础
2.1. 循环生成式对抗网络
循环生成式对抗网络CycleGAN是一种在生成式对抗网络GAN(Generative Adversarial Network) [17] 基础上提出的无监督图像转换模型,用于实现跨域图像的转换。CycleGAN的目标是学习两个域之间的映射关系。与传统的图像转换方法不同,CycleGAN不需要成对的训练数据来指导转换,而是通过对抗学习的方式进行训练。它包括两个生成器网络和两个判别器网络,分别用于两个域的图像转换和对抗判别 [18] 。其原理图如图1所示,其中GAB与GBA分别进行域A与域B之间的映射,DA和DB为这两个生成过程的判别器,用来判别生成图像是真还是假。

Figure 1. Network structure diagram of CycleGAN
图1. CycleGAN网络结构图
生成器GAB生成图像GAB(a),然后由判别器DB来判断GAB(a)是否为真实图像,其损失函数表示如下表示:
(1)
同理GBA和DA的损失函数如下表示:
(2)
生成器GAB将图像A转换为GAB(a),再由GBA转换为GBA(GAB(a))后,为了保证在两次生成的过程中,图像的质量保持一致,需要计算原始图像与GBA(GAB(a))之间的损失。循环一致损失如下表示:
(3)
最后,CycleGAN整体的损失函数为以上三个损失函数相结合,其中λ为的权重系数,组合方式为:
(4)
2.2. CBAM注意力机制
CBAM (Convolutional Block Attention Module)是一种于2018年提出的轻量级注意力模块,它具有空间和信道两个维度的注意能力,可以实现对图像关键区域的注意。
如图2所示,CBAM由两个子系统组成:信道注意CAM (Channel Attention Module)和空间注意SAM (Spartial Attention Module)两个子系统。在输入了一个特征以后,CAM模组对其进行一维卷积,并将其与原始图像相乘,然后以CAM的输出为输入,在SAM模组中进行二维卷积,最终将其与原始图像相乘,从而获得权重后的特征。

Figure 2. The overall structure diagram of CBAM
图2. CBAM整体结构图
图3所示为CAM模块的结构图,在CAM模块中,特征的通道维度不变,压缩其空间维度。将输入的特征经过两个并行的最大池化层和平均池化层,将特征图从C * H * W变为C * 1 * 1的大小,然后经过Share MLP模块,在该模块中,它首先将通道数目压缩至原先的1/R(Reduction,减少率)倍,然后再将通道数目扩展至原通道数,之后经过ReLU激活函数得到两个激活后的结果。将这两个输出结果进行逐元素进行叠加,再通过一个Sigmoid激活函数得到Channel Attention的输出结果,最后将这个输出结果乘原图,变回C * H * W的大小。
通道注意力公式:
(5)
图4所示为SAM模块的结构图,在SAM模块中,特征的空间维度不变,压缩其通道维度。将CAM的输出结果通过最大池化和平均池化得到两个1 * H * W的特征图,然后经过将两个特征图进行拼接,通过7 * 7卷积变为1通道的特征图,再经过一个Sigmoid得到SAM的特征图,最后将输出结果乘原图变回C * H * W大小。
空间注意力公式:
(6)
3. 本文方法
本文根据已有图像去雾技术,提出一种可融合多去雾模型的网络。该网络包含有薄雾,厚雾和普通雾气三个去雾模型,分别用薄雾数据集,厚雾数据集和普通雾气数据集进行训练。整体模型以CycleGAN网络架构作为基础,对其进行了改进,引入了雾气浓度判别模型以及将多去雾模型效果进行融合的网络结构,同时通过引入新的色彩损失函数以及CBAM注意力机制,克服当前图像去雾处理中出现的信息畸变及去雾效果不够真实的问题。
3.1. 多去雾模型网络
图5为本文算法的整体结构,在网络的开始,图像先经雾气浓度判别模型后产生0到1的数值,浓度依据图像的大气光值以及透射率得出,数值的大小表示雾气浓度的大小,数值越接近0,表示图像雾气浓度越接近薄雾;数值越接近1,表示图像雾气浓度越接近厚雾,由此数值作为去雾模型效果融合的权重。之后根据此数值去选择相应的两个去雾模型当数值大于0.5时,将厚雾模型和普通雾气模型效果进行融合;当数值大于小于0.5时,将薄雾模型和普通雾气模型效果进行融合,雾气浓度值作为融合的权重值;等于0.5时只采用普通雾气模型。
3.2. 雾气合成算法及数据集制作
本文共3组数据集,分别为浓雾数据集,普通雾气数据集以及薄雾数据集,其中普通雾气数据集选用NYU2公共数据集,浓雾和薄雾数据集是对NYU2数据集中的无雾图像进行雾化处理。
雾化处理过程基于大气散射模型,公式如下:
(7)
其中J为无雾图像,I为有雾图像,A为大气光值,d为深度矩阵,β为散射系数,t为透射率。雾化时先对雾气图像进行大气光值,透射率的计算,之后将大气光值和透射率分别提高再将其运用在对应的无雾图像上得到厚雾数据集,反之得到薄雾数据集图像。

Figure 5. Overall structure of the model
图5. 模型整体结构
3.3. 改良后的生成器网络结构
图6是本文算法中去雾模型的生成器网络结构,在经典CycleGAN模型的生成器的基础上,在其下采样过程的第2层和第3层卷积过程中加入CBAM注意力模块,使得模型能够更加集中地关注与任务相关的信息,忽略无关或噪声的部分。这样可以减少冗余信息的干扰,提高模型的准确性和泛化能力。
3.4. Lab色彩空间损失函数
原CycleGAN模型中使用的损失函数对于色彩图像的色彩方面缺少足够的控制,无法保证去雾后图像的质量,所以本文算法引入Lab色彩空间损失函数。
在Lab颜色空间中,颜色被分为L,a和b三个通道:L通道表示亮度,a通道表示从红色到绿色的色调,b通道表示从黄色到蓝色的色调。
损失函数计算方法为L1 loss,具体计算过程为,将两幅图像转换到Lab色彩空间后,由于Lab色彩空间的范围和均衡性可能会导致在计算损失时不同通道的权重不平衡,先对L通道,a通道和b通道进行归一化处理以均衡不同通道的范围,之后对转换后的Lab图像进行逐像素的比较。对于每个像素位置,计算两个图像在各个通道上的差异,然后将这些差异进行求和以及平均化,得到最后的L1 loss。
4. 实验结果分析
4.1. 实验数据集
本文共有厚雾,薄雾和普通雾气3组训练集,其中厚雾和薄雾数据集基于NYU2 [19] 数据集制作,普通雾气训练集直接采用NYU2数据集。测试集使用SOTS [20] 数据集。训练过程中,图像统一先调整为256像素 × 256像素,然后分别对三种训练集进行训练,形成三种去雾模型。
4.2. 实验环境
实验环境配置:CPU为英特尔酷睿i7-8700 @3.20GHZ,内存为16GB,GPU选用英伟达RTX 3060 12GB显存版本,选用Pytorch1.11.0版本作为深度学习框架,Cuda为11.6版本,解释器为Python 3.8版本。
实验参数设置:学习速率初始化为0.0002,batch-size设置为2,迭代次数为200次,动量参数设置为0.5,优化器采用Adam优化。
4.3. 实验结果
为验证本文算法的有效性,本文在SOTS数据集中随机选取100张图片进行效果测试,对比算法选择DCP、GCANet、DehazeNet和AOD-Net算法,并从主观评价和客观评价两个方面对所提算法进行了分析。同时,以结构相似度SSIM [21] 、PSNR [22] 为评估指标,对消雾效果进行更加客观的评估。
图7为去雾效果对比图,经对比可发现DCP算法在去雾效果上存在着明显的色彩失真,同时GCANet、AOD-Net和DehazeNet算法的去雾效果不彻底,仍留有薄雾,其中GCANet算法对天空去雾效果色彩也存失真问题。经过表1的客观数值对比分析可以发现,本文算法在SOT数据集上的PNSR和SSIM数据均得到了较高值,与其它方法相比,本文方法能获得更好的图像质量。


Figure 7. Comparison of fog removal effect of different algorithms
图7. 不同算法去雾效果对比图

Table 1. Comparison of experimental results of different algorithms
表1. 不同算法实验结果对比
5. 消融实验
为了进一步证明本文提出的多去雾模型效果融合算法、Lab色彩损失函数和CBAM注意力机制的有效性。本文以CycleGAN模型为基础,对加以提出的改进进行对比实验。
对比试验选用CycleGAN作为基础对比模型,再加上采用多去雾融合网络模型但未采用Lab色彩损失函数和CBAM注意力机制的Model-A、采用多去雾融合网络模型和CBAM注意力机制的Model-B和同时采用多去雾融合网络模型,CBAM注意力机制以及Lab色彩损失函数Model-C共4个模型进行测试。
正如在图8中所示,基础的CycleGAN模型在雾气去除方面是有一定的效果的,但在将去雾后的图像与原始无雾图像进行对比过后,我们可以发现经过基础的CycleGAN网络处理后的图像在色彩还原方面并不理想,使得去雾效果不自然,而引入多去雾模型融合以及Lab色彩损失函数和CBAM注意力机制的网络模型所生成的图像同基础的CycleGAN网络生成的图像相比,去雾效果都要更好一些,图像去雾后更加自然。同时经过表2中的客观数值对比可以发现在SSIM和PNSR两项数值上来说,本文算法改进后的模型均取得更高值,更有说服力地证明本文算法改进是真实有效的。

Figure 8. Comparison chart of ablation algorithm effects
图8. 消融算法效果对比图

Table 2. Comparison of ablation algorithm effects
表2. 消融算法效果对比
6. 结论
本文设计了一种基于CycleGAN模型的多去雾模型效果融合的图像去雾算法,该算法以不同浓度的雾气图像训练集进行分别训练,使得更有针对性的对复杂雾气图像进行去雾工作。通过对试验结果的分析,本文算法产生的图像,不管是在视觉感受上,还是在客观指标值上,都要比原始网络更好。它可以更好地保存图像中的一些细节信息,比如天空区域等,对亮度转换区域转变不自然的问题进行了改进,同时还对去雾图像中存在的颜色失真和细节缺失等问题进行了改进。结果表明,与常规的去雾算法比较,该算法对图像中雾气现象有着较好的抑制作用,且能获得较好的视觉结果。
基金项目
黑龙江省自然科学基金项目(LH2020C048)。
NOTES
*通讯作者。