A Multi-Branch Defogging Network Based on Fog Concentration Classification and Dark and Bright Channel Priors
-
摘要:
在图像去雾领域中,目前多数去雾模型难以维持精度与效率的平衡,高精度的模型往往伴随着复杂的网络结构,而简单的网络结构又往往会导致低质量的结果. 针对该问题提出一个基于雾浓度分类与暗-亮通道先验的多分支去雾模型,通过对带雾图像分类,使用复杂度不同的网络来处理不同雾浓度的图像,可在保证精度的同时提高计算效率. 模型由轻量级雾图像分类器和基于暗-亮通道先验的多分支去雾网络2部分构成:前者将带雾图像分为轻雾、中雾、浓雾3类,输出雾浓度标签;后者包含3个结构相同、宽度不同的分支网络,根据雾浓度标签选择不同的分支网络处理不同雾浓度图像,恢复至无雾图像. 提出一个新的雾浓度分类方法以及基于该方法的雾浓度分类损失函数,可根据带雾图像的暗通道特征和恢复难度,结合生成图像质量和模型计算效率,得到对带雾图像合理准确的分类结果,达到去雾效果和算力需求的良好平衡. 提出新的暗通道与亮通道先验损失函数,用于约束分支去雾网络,可有效提高去雾精度. 实验结果表明,模型能够以更低的网络参数量和复杂度得到更优的去雾结果.
Abstract:In the field of image defogging, it is difficult for most defogging models to maintain a balance between accuracy and efficiency. Specifically, high-precision models are often accompanied by complex network structures, and simple network structures often lead to low-quality results. To address the problem, we propose a multi-branch defogging network based on fog concentration classification and dark and bright channel priors. The model uses the defogging networks with different complexity to handle the images with different fog concentrations, which significantly raises the computational efficiency under ensuring the defogging precision. The model is composed of a lightweight foggy image classifier and a multi-branch defogging network. The classifier divides the foggy images into light, medium and dense foggy images and outputs the fog concentration labels. The multi-branch network contains three branches with the same structure but different widths that process three types of fog images separately. We propose a new fog concentration classification method and a new fog concentration classification loss function. The function combines the dark channel characteristics and defogging difficulty of the foggy image with the defogging precision and computational efficiency of the model, so as to obtain a reasonable fog concentration classification, and consequently achieve a good balance of defogging quality and computing power requirements. We propose a new dark channel prior loss function and a new bright channel prior loss function to constrain the multi-branch defogging network, which effectively enhances the defogging precision. Extensive experiments show that the model is beneficial to get better defogging effect with lower network parameters and complexity.
-
Keywords:
- image defogging /
- fog concentration classification /
- dark channel prior /
- bright channel prior /
- CNN
-
图像去雾是图像处理和计算机视觉领域的研究热点,也是一个充满挑战性的难题. 雾是由大气中悬浮的细小水滴或冰晶经大气散射后产生的天气现象,带雾图像存在诸多问题,如对比度低、饱和度低、纹理细节丢失、颜色出现偏差等. 这类图像实际用于视频监控、自动驾驶、图像识别等领域时,会对现有技术的处理结果造成负面影响. 因此,图像去雾作为一种不可或缺的图像预处理技术,具有十分重要的研究意义.
图像去雾方法可分为基于图像增强的方法、基于图像复原的方法、基于深度学习的方法. 基于图像增强的方法[1-2]主要通过去除图像噪声和提高图像对比度恢复无雾图像. 基于图像复原的方法[3-7]大多以大气散射模型为基础,通过估计透射率和大气光实现去雾,但是容易出现参数估计不准确等问题,影响生成图像质量. 基于深度学习的方法[8-19]主要通过卷积神经网络(CNN)实现端到端去雾,相比基于图像增强和图像复原的方法,其生成图像的质量得到大幅度提升,但同时伴随着模型复杂度的提升和运行效率的降低.
在图像去雾中,根据雾浓度对带雾图像进行分类,有助于在图像去雾时选择合适的网络模型,使去雾处理更具有针对性,从而在一定程度上简化网络结构,减少内存占用. 但在目前的去雾领域中,对雾浓度分类的研究较少,多数现有雾浓度分类算法[20-23]的准确率有待提升,且没有固定的分类标准. 分类网络结构的设计和带雾图像特征的选择作为2个关键因素,共同影响着最终分类的准确率和识别度. 因此,如何借助雾浓度的分类,更具针对性地设计去雾模型的网络结构,使模型能够为不同雾浓度的输入图像选择合适的分支网络,以更灵活地处理,这对于在保证精度的前提下简化网络结构、减少内存占用、提高计算效率具有重要意义.
针对现有去雾模型对浓雾图像去雾效果欠佳、精度和算力难以有效平衡的问题,本文提出一种新的图像去雾方法,主要贡献有3个方面:
1)提出一个基于雾浓度分类与暗-亮通道先验的多分支去雾模型,该模型包括轻量级雾浓度分类器和基于暗-亮通道先验的多分支去雾网络2个部分. 前者对输入带雾图像进行分类,输出雾浓度标签;后者根据标签针对性地选择相应的分支去雾网络,恢复无雾图像,从而实现图像去雾质量与网络计算效率的良好平衡.
2)提出新的暗通道先验损失函数与亮通道先验损失函数,用于约束分支去雾网络. 该损失函数可以增强模型去雾性能,提高生成图像的对比度,使去雾后的图像更加清晰.
3)提出一个新的雾浓度分类方法,并基于该方法提出一个新的雾浓度分类损失函数. 该损失函数的引入,可使模型依据带雾图像的暗通道特征和恢复难度,并结合生成图像的质量与模型的计算效率,得到对带雾图像更加合理和准确的分类结果. 继而依据分类结果,由相应的分支网络处理带雾图像,从而在保证精度的前提下,有效提高模型的效率,减少内存的占用.
1. 相关工作
1.1 基于图像增强和复原的方法
早期的传统去雾方法多数是基于图像增强和图像复原的方法. 文献[2]对图像进行偏色检测校正,通过亮度和对比度增强以及饱和度补偿获得无雾图像. 文献[3]通过高阶滤波迭代优化透射率,利用大气散射模型复原无雾图像. 文献[6]提出暗通道先验(dark channel prior, DCP),指出室外无雾彩色图像的大多数图像块中通常存在一个像素值很低的颜色通道,并基于DCP和大气散射模型,通过暗通道图来估计透射率和大气光,从而实现先验去雾. 该方法广泛应用在图像去雾领域中,但其生成图像存在整体颜色过暗和局部细节模糊等问题. 基于暗通道先验,文献[7]提出了暗通道与亮通道相结合的去雾算法. 亮通道先验理论的基本思想是,在最模糊的图像块中通常存在一个像素值很高的颜色通道. 然而,基于先验的去雾算法普遍存在透射率估计不准确、天空区域过曝、图像颜色过暗等缺点. 综上,传统方法虽然运行速度较快、实现较为简单,但去雾效果不理想.
1.2 基于深度学习的方法
随着深度学习技术的兴起,利用卷积神经网络恢复无雾图像的研究取得较大进展. 早期的深度学习算法大多基于大气散射模型,利用卷积神经网络估计大气散射模型的参数. 文献[8]利用神经网络估计带雾图像的透射图,通过大气散射模型实现去雾. 文献[9]提出了基于多尺度卷积神经网络的去雾模型,通过不同尺度的网络估计并优化透射图,应用大气散射模型输出无雾图像. 文献[10]将大气散射模型直接嵌入到网络中,利用联合训练实现端到端去雾. 文献[8-10]所述的方法虽然在去雾效果上得到了不同程度的提升,但仍然需要估算透射率和大气光值,因此难以避免参数估计不准确和无法生成高精度图像等问题.
近年来,基于深度学习的很多图像去雾技术不再依赖大气散射模型,无需估计透射率和大气光,而是利用输入的带雾图像,通过训练卷积神经网络模型,直接生成无雾图像. 文献[11]将透射率和大气光统一为一个参数表示,并构建轻量级卷积神经网络估计该参数的值,进而生成无雾图像. 文献[12]将注意力机制与图像去雾相结合,提出了基于特征注意的深度去雾网络. 文献[13]提出一种基于注意力机制的多尺度去雾网络,通过通道注意力机制将不同尺度的特征和经过残差块卷积后的不同分支特征相融合实现去雾. 文献[14]提出了一种基于U-Net[24]架构的具有密集特征融合的多尺度增强去雾网络,通过增强解码器逐步恢复无雾图像. 文献[11-14]中的模型有效提升了去雾性能以及生成图像的精度,但精度的提升往往依赖于网络深度与宽度的增加. 这会导致参数量与算力需求的增加,从而不可避免地出现模型内存占用增大和计算效率降低的问题,而且模型对于新样本的适应性不强,泛化能力较弱. 文献[15]利用带雾图像和清晰图像的信息分别作为负样本和正样本,设计了以自编码器为核心的轻量级去雾网络,均衡了模型的性能与参数量. 文献[16]提出无监督自增强去雾框架,通过将透射图分解为密度信息和深度信息实现去雾,在提高模型去雾性能的同时增强了泛化能力.
很多研究工作将生成式对抗网络(generative adversarial network, GAN)[25]引入到图像去雾中. 文献[17]提出了一种基于循环生成式对抗网络Cycle-GAN[26]模型的去雾方法,训练时无需使用成对的带雾图像与目标无雾图像,并加入循环一致性损失和感知一致性损失,提高了图像纹理细节恢复的质量以及视觉上的去雾效果. 文献[18]基于GAN提出了一个端到端去雾模型,可在实现去雾的同时避免网格伪影的产生. 文献[19]针对现有模型对真实带雾图像的泛化能力差的问题,提出了基于GAN的域自适应去雾模型. 通过图像转换模块实现合成带雾图像与真实带雾图像之间的相互转换,然后使用转换前后的图像训练2个具有一致性约束的去雾网络,有效提升了模型的泛化能力. 这些基于深度学习的去雾模型在训练时大多采用最常见的L1损失或L2损失,而L1损失和L2损失在很多情况下会使得模型对图像中纹理细节的处理过度平滑,导致生成图像的部分边缘区域出现一定程度的模糊,并且会存在雾残留,尤其在处理浓雾图像时,部分生成图像会有大量的雾残留,整体质量较差.
1.3 雾浓度分类方法
近年来,基于深度学习的图像分类研究取得长足进展. 文献[27]针对样本收集难度较大、标记数据较少等问题,利用多尺度生成器生成不同尺度的图像特征,获得多尺度信息的相似性得分并进行标签传播,通过计算传播结果实现分类. 文献[28]提出一种基于余弦相似性的Softmax损失函数,计算嵌入表示与分类全连接层权重的正负相似性,有效提升多分类任务性能. 文献[20-23]把图像分类引入到图像去雾工作中,实现对带雾图像的识别与分类. 文献[20]通过灰度共生矩阵提取图像纹理细节特征,使用支持向量机实现对有雾图像与无雾图像的识别,但是无法根据雾浓度实现对带雾图像的精细分类. 文献[21]使用高斯混合模型对无雾、有雾、浓雾3种雾浓度图像的概率密度进行建模,并通过期望最大化算法学习模型参数. 文献[22]提出了基于颜色特征和角偏差特征的雾浓度分类方法,通过训练支持向量机实现对4种不同雾浓度图像的分类. 文献[23]利用序数关系实现雾图像的能见度检测. 文献[20-23, 27-28]所述的方法普遍存在2个问题:1)雾浓度分类方法的相关数据集较少,没有固定的分类标准,并且雾浓度的大小是相对的,其分类结果不具备普适性;2)雾浓度分类方法采用的是硬分类,没有考虑分类结果对整个去雾模型的去雾质量和计算效率之间的平衡所产生的影响,分类方法不具备自适应性和灵活性.
2. 本文方法
本文提出一个新的基于雾浓度分类与暗-亮通道先验的多分支去雾模型,模型的结构如图1所示. 本文模型由2部分组成,分别是轻量级雾浓度分类器(light-weight fog image classifier, LFC)和基于暗-亮通道先验的多分支去雾网络(multi-branch defogging network based on dark and bright channel priors, MBDN). LFC由3个卷积块与2个全连接层组成,利用本文提出的新的雾浓度分类损失函数,并结合生成图像的质量与模型的计算效率,实现对带雾图像的分类;MBDN由3个结构相同、宽度不同的分支去雾网络组成,分别用于处理轻雾图像、中雾图像、浓雾图像. 每个分支去雾网络都由3个模块组成:特征提取模块(feature extract module, FE)、通道注意力模块(channel attention module, CA)、空间注意力模块(space attention module, SA). 本文方法的基本流程是:首先将带雾图像I输入至LFC,得到输入图像的概率向量 {\boldsymbol{p}} ,向量中的元素 {p_1} , {p_2} , {p_3} 分别表示图像属于轻雾、中雾、浓雾3类图像的概率值,取最大概率值所对应的雾浓度类别作为输入图像的浓度标签;然后将浓度标签输入至MBDN,MBDN根据当前输入图像的浓度标签将其输送到相应的分支去雾网络. 在分支去雾网络中,FE用于提取融合特征,输出组合特征图至CA,CA通过通道注意力机制在通道方向上获取特征权重,再由SA通过空间注意力机制在像素维度上进一步获取特征权重,使模型能够定位重点信息,提高处理效率. 同时,结合本文新提出的暗通道先验损失与亮通道先验损失,进一步约束分支去雾网络,提高分支网络的去雾性能,最终生成无雾图像.
2.1 轻量级雾浓度分类器
本文提出一个新的LFC,可根据带雾图像的暗通道特征和恢复难度以及生成图像的质量,将带雾图像分为轻雾、中雾、浓雾3类. LFC由3个卷积块和2个全连接层组成,其中每个卷积块由1个卷积层、1个激活层、1个最大池化层组成. LFC是一个十分轻量级的分类网络,参数量仅有0.32 MB,它的引入几乎不会对本文模型的去雾工作带来计算成本和内存占用量的增加. 模型中各模块的参数量对比及说明详见3.3节. 设当前带雾图像为 {\boldsymbol{I}} ,将其输入至LFC,可得到带雾图像 {\boldsymbol{I}} 的概率向量 {\boldsymbol{p}}({\boldsymbol{I}}) = ({p_1},{p_2},{p_3}) , {p_1} , {p_2} , {p_3} 分别表示 {\boldsymbol{I}} 属于轻雾、中雾、浓雾类别的概率. 取其中最大概率值元素所对应的雾浓度类别作为当前图像的分类结果,该结果表示为浓度标签 L . L 将与 {\boldsymbol{I}} 共同输入至后续的分支去雾网络MBDN. 设 {F}_{\mathrm{LFC}}(\cdot) 为LFC的函数表示,则LFC的处理过程可表示为
L = {F_{{\rm{LFC}} }}({\boldsymbol{I}}) . (1) 2.1.1 雾浓度分类方法
为了提高雾浓度分类的合理性和准确性,同时保证整个网络模型在去雾精度和算力消耗上的良好平衡,本文提出一种新的雾浓度分类方法. 雾浓度在现实世界中是指悬浮在空气中的雾滴数量的多少,反映在图像上表现为图像的不清晰程度. 不同雾浓度的图像具有不同的暗通道特征和恢复难度,因此,可用暗通道特征和恢复难度来描述图像雾浓度. 新方法根据带雾图像的暗通道特征和恢复难度这2个因素,实现对雾浓度的分类. 2个因素值的计算分别为:1)求取带雾图像的暗通道图的平均像素值并归一化;2)将带雾图像通过DCP[6]算法去雾处理后,求取生成图像的峰值信噪比(peak signal to noise ratio, PSNR)与结构相似性(structural similarity, SSIM),这二者均为评价图像质量的指标. 暗通道图的平均像素值代表了带雾图像的暗通道特征. 由暗通道先验理论可得,输入图像中存在的雾越浓,其暗通道图通常会越亮. 而浓雾图像相对轻雾图像而言,恢复难度自然会更大,即浓雾图像经同一去雾算法处理后的生成图像的PSNR值与SSIM值往往会更低. 因此,可用PSNR值与SSIM值表示带雾图像的恢复难度. 这里用于计算PSNR值与SSIM值所采用的去雾处理操作,仅仅是为了得到不同带雾图像经过同一算法去雾后的客观量化结果,以此来反映不同带雾图像的恢复难度,对去雾处理操作本身的精度没有特别的要求. 因此,本文使用综合速度最快的DCP算法来对图像进行去雾操作. 另外,本文也对去雾后图像的PSNR值和SSIM值与雾浓度的关系在多个数据集上进行了实验论证. 图2展示了在RESIDE[29]数据集中的室内训练集ITS (indoor trainset)上的验证结果. 这里,采用DCP算法处理ITS数据集后,对图像的雾浓度和去雾后图像的PSNR值与SSIM值的乘积之间的关系进行了直观的可视化展示. 其中,横轴表示图像根据乘积值由小到大重新排列后的序列号,纵轴表示PSNR值与SSIM值的乘积. 可见,PSNR值和SSIM值的乘积与图像雾浓度之间的关系呈现了一种规律,即:去雾后具有较小乘积值的雾图像中存在的雾往往较浓,其恢复难度相对于乘积值较大的雾图像而言往往会更高. 图2中的曲线表示了这种规律. 基于上述理论,本文综合考虑带雾图像的暗通道特征和恢复难度,提出了新的雾浓度分类方法. 将带雾图像的雾浓度系数定义为去雾后所得图像的PSNR值和SSIM值的乘积与带雾图像的暗通道图的平均像素值的归一化结果之比. 设雾浓度系数为 K ,输入的带雾图像为 {\boldsymbol{I}} ,其暗通道图为 {{\boldsymbol{I}}^{\text{d}}} ,由DCP算法处理后的生成图像为 {{\boldsymbol{I}}_{{\text{DCP}}}} ,则雾浓度系数 K 的具体表示为
K = \dfrac{{{V_{\rm{PSNR} }}({{\boldsymbol{I}}_{{\text{DCP}}}}) \times {V_{{\text{SSIM}}}}({{\boldsymbol{I}}_{{\text{DCP}}}})}}{{{V_{{\text{MP}}}}({{\boldsymbol{I}}^{\text{d}}})}} , (2) 其中 {V}_{\mathrm{PSNR}}(\cdot) 表示求取图像的PSNR的数值, {V}_{\text{SSIM}}(\cdot) 表示求取图像的SSIM的数值, {V}_{\text{MP}}(\cdot) 表示求取暗通道图的平均像素值并归一化.
图3展示了本文提出的雾浓度分类方法在ITS数据集上的预分类结果. 利用式(2)计算带雾图像的雾浓度系数 K ,同样,根据 K 值对ITS数据集中的所有带雾图像由小到大排序,体现为序列号的由小到大. 我们发现图像雾浓度呈现了从浓到轻的趋势,这表明具有较高 K 值的图像的雾浓度往往较低,而具有较低 K 值的图像的雾浓度往往较高. 我们从视觉上对这种趋势直观地进行了展示. 图3表示图像雾浓度的变化趋势. 同时,为方便直观地展示效果,这里按照 K 值的区间粗略地将其平均分为轻雾、中雾、浓雾3个区域. 可见,本文的分类方法可以有效地对带雾图像的浓度进行划分. 关于本文分类方法的合理性的进一步论证,详见3.3节.
显然,仅根据均分 K 值范围的方式将图像划分为轻雾、中雾、浓雾3类是不合理的. 我们需要结合数据集的实际情况,以及整个网络模型的去雾质量和计算效率,对图像雾浓度类别进行动态和灵活地划分. 因此,基于新的雾浓度分类方法,本文又提出了雾浓度分类损失函数,用于约束LFC对带雾图像类别的识别,以实现动态分类. 该损失函数的引入,可建立起LFC和MBDN之间的联动优化,使整个网络模型可根据带雾图像的暗通道特征和恢复难度,并结合生成图像的质量与模型的计算效率,得到更加合理和准确的分类结果. 继而可根据分类结果,由相应的分支去雾网络处理不同类别的带雾图像,从而达到整个网络模型在去雾精度和运算效率上的良好平衡. 下面详细介绍雾浓度分类损失函数.
2.1.2 雾浓度分类损失函数
本文提出新的雾浓度分类损失函数,该函数使得LFC能够根据带雾图像的暗通道特征和恢复难度实现动态分类. 而且,将该损失函数引入整个网络模型的联合训练中,还可以使得分类能够同时依据生成图像的质量与模型的计算效率,进一步提高分类的合理性和准确性,继而提升整个网络的性能.
由2.1.1节所述可知,在考虑带雾图像的暗通道特征和恢复难度的情况下,图像中存在的雾越浓,则雾浓度系数 K 的值越小. 对所有图像的 K 值做归一化处理,结果记为 k,{\text{ }}k \in (0,1) . 显然, k 值的大小同样反映了雾的浓度. 当 k 值趋近于1时,说明图像中存在的雾很少,我们希望这种情况下,LFC所得概率向量中代表轻雾图像的概率 {p_1} 的值最大;同样, k 值趋近于0.5时,说明图像中存在的雾属于中等程度,我们希望其概率向量中代表中雾图像的概率 {p_2} 的值最大; k 值趋近于0时,说明图像中的雾很浓,我们希望其概率向量中代表浓雾图像的概率 {p_3} 的值最大. 基于此,本文提出新的雾浓度分类损失函数,公式定义为
{L_k} = \frac{1}{2}(|k - {p_1}| + |1 - |2k - 1| - {p_2}| + |1 - k - {p_3}|) , (3) 其中 k 为雾浓度系数 K 的归一化值,每张图像的 k 值是由式(2)计算得到的已知量; {p_1} , {p_2} , {p_3} 分别表示当前带雾图像经过LFC计算得到的概率向量中属于轻雾、中雾、浓雾类别的概率值,是待优化的未知量. 通过 {L_k} 来约束LFC,使其能够根据雾浓度系数实现对雾图像的分类. 如式(3)所示,若当前输入带雾图像的 k 值越接近1,则该图像属于轻雾类别的概率应该越高,即:LFC对该图像生成的概率向量中, {p_1} 的值应该越大并且越接近于 k . 在优化LFC的过程中,式(3)通过缩小 k 与 {p_1} 的距离可使 {p_1} 增大,同时减小 {p_2} , {p_3} . 若当前输入图像的 k 值越接近0.5,则该图像属于中雾类别的概率应该越高,即:LFC对该图像生成的概率向量中, {p_2} 的值应该越大并且越接近于 2k . 式(3)在优化LFC的过程中,通过缩小 2k 与 {p_2} 的距离可使 {p_2} 增大,同时减小 {p_1} , {p_3} . 若当前输入图像的 k 值越接近0,则该图像属于浓雾类别的概率值应该越高,即:LFC对该图像生成的概率向量中, {p_3} 的值应该越大. 式(3)通过缩小 1 - k 与 {p_3} 的距离,可使 {p_3} 增大的同时减小 {p_1} , {p_2} ,从而实现对LFC优化.
可见,雾浓度分类损失能够使LFC根据带雾图像的暗通道特征和恢复难度,实现对带雾图像的分类. 同时,本文还将雾浓度分类损失引入到对整个模型的联合训练中,通过与其他损失函数相结合,使模型能够进一步根据生成图像的质量和计算效率,得到对带雾图像更加合理和准确的分类结果. 继而依据分类结果,由相应的分支去雾网络处理带雾图像,从而在保证精度的前提下,有效提高模型的效率,减少内存的占用. 关于联合训练的方法及总损失函数,详见2.3节.
2.2 基于暗-亮通道先验的多分支去雾网络
多分支去雾网络MBDN由3个结构相同、宽度不同的分支网络组成,分别用于处理浓度标签为轻雾、中雾、浓雾的带雾图像,最终将其恢复为无雾图像. 宽度是神经网络的基本维度之一,指神经网络每层的通道数. 宽度贡献了大量计算量,可以使模型的每一层学习到更加丰富的特征. 若宽度过小,会导致模型特征提取不充分,模型性能受限;若宽度过大,会使模型提取过多重复特征,加大模型计算负担. 同样,对于图像去雾工作而言,为去雾模型设计合适的宽度值,并根据雾图像的分类结果,针对性地处理不同类别的雾图像,不仅能够提升模型的去雾性能,而且能够减少计算成本. 因此,综合考虑带雾图像的恢复难度,以及网络宽度对模型精度和速度的影响,并经过多次实验,本文将轻雾分支网络的宽度设置为48,中雾分支网络的宽度设置为56,浓雾分支网络的宽度设置为64,以实现图像去雾质量与网络计算效率的良好平衡.
将当前带雾图像 {\boldsymbol{I}} 以及经过LFC得到的该图像的浓度标签 L ,共同输入至MBDN,MBDN根据当前输入图像的浓度标签,为其选择合适的分支去雾网络. 这样,随着图像的雾浓度从重、到中、再到轻,其恢复难度逐渐降低,即使采用结构逐渐简单的分支网络,亦可以达到理想的去雾效果. 因此,分支去雾网络结构的设计可以在降低网络复杂度和减少内存占用量的同时,保证生成图像的质量. 另外,为进一步提升去雾精度,本文还提出了新的暗通道先验损失函数与亮通道先验损失函数,以进一步约束分支网络,使其具有更优的去雾性能.
2.2.1 多分支去雾网络MBDN
多分支去雾网络MBDN由FE、CA和SA这3个模块组成. FE提取带雾图像的特征,并将输出的特征图在通道方向上相连接,实现特征融合;CA在通道方向上获取特征权重,使模型识别并获取更有价值的通道信息[30];SA在空间方向上获取特征权重,使模型定位图像中重要的空间位置,重点关注浓雾区域并进行处理. 注意力机制的引入,使模型能够定位重点信息,并抑制非重点信息,提高了模型的计算效率. 同时,结合本文新提出的暗通道先验损失与亮通道先验损失来训练模型,以进一步提高模型的去雾性能. 下面具体介绍MBDN的3个模块.
1)特征提取模块(FE)
将带雾图像输入至特征提取模块,首先通过卷积层将输入的RGB带雾图像转换为特征图,然后通过3个带有残差连接的特征提取器FE1, FE2, FE3进一步提取特征. 每个特征提取器由20个结构完全相同的残差块[12]组成,加入残差连接可以更有效地减少梯度消失,使模型训练简单化. 最后把每个特征提取器输出的特征图在通道方向上连接起来,实现特征融合,输出组合特征图 {{\boldsymbol{F}}_{{\text{FE}}}} .
2)通道注意力模块(CA)
CA基于注意力机制获取不同通道的权重. 该部分的输入是组合特征图 {{\boldsymbol{F}}_{{\text{FE}}}} ,通过自适应全局平均池化(global average pooling, GAP)[31]将 {{\boldsymbol{F}}_{{\text{FE}}}} 的尺寸由 H \times W \times C 变为 1 \times 1 \times C ,即将 {{\boldsymbol{F}}_{{\text{FE}}}} 变成一个维度为 C 的向量 {{\boldsymbol{v}}_{{\text{GAP}}}} . 为使特征图的每个通道具有不同的权重,以提取通道相关性,将 {{\boldsymbol{v}}_{{\text{GAP}}}} 进行逐点卷积来提取通道特征,并利用修正线性单元(rectified linear unit, ReLU)激活函数获取各通道权重,再卷积恢复至原维度,通过Sigmoid激活函数得到特征向量 {{\boldsymbol{v}}_{{\text{CA}}}} , {{\boldsymbol{v}}_{{\text{CA}}}} 中的每个元素值即为各通道的权重值. 最后将生成的特征向量 {{\boldsymbol{v}}_{{\text{CA}}}} 与 {{\boldsymbol{F}}_{{\text{FE}}}} 逐元素相乘,得到具有通道权重的组合特征图 {{\boldsymbol{F}}_{{\text{CA}}}} .
3)空间注意力模块(SA)
SA在提取通道特征的基础上,进一步提取空间特征,即获取组合特征图 {{\boldsymbol{F}}_{{\text{CA}}}} 通道方向上的所有通道在同一像素点位置的权重. SA模块的输入为 {{\boldsymbol{F}}_{{\text{CA}}}} , {{\boldsymbol{F}}_{{\text{CA}}}} 经卷积、激活后,尺寸变为 H \times W \times 1 ,且被赋予空间特征的权重. 换言之,SA模块将 {{\boldsymbol{F}}_{{\text{CA}}}} 转换为一个尺寸为 H \times W 的权重矩阵 {{\boldsymbol{M}}_{{\text{SA}}}} , {{\boldsymbol{M}}_{{\text{SA}}}} 的每个元素即为 {{\boldsymbol{F}}_{{\text{CA}}}} 相应空间位置的特征权重. 然后将权重矩阵 {{\boldsymbol{M}}_{{\text{SA}}}} 与 {{\boldsymbol{F}}_{{\text{CA}}}} 逐元素相乘,生成特征图 {{\boldsymbol{F}}_{{\text{SA}}}} . 最后将 {{\boldsymbol{F}}_{{\text{SA}}}} 转换为RGB图像,得到输出图像 {{\boldsymbol{I}}_{\text{o}}} ,即最终的去雾图像.
2.2.2 暗通道先验损失与亮通道先验损失
本文用于训练分支去雾网络的损失函数由3个约束项组成:L1损失、暗通道先验损失、亮通道先验损失. 其中L1损失是传统方法中常采用的约束项,暗通道先验损失和亮通道先验损失则是本文提出的2个新约束项. 暗通道先验损失用于增强模型的去雾性能,提高生成图像的去雾效果. 亮通道先验损失在增强去雾效果的同时,可适当提高生成图像的亮度与对比度. 该损失有效解决因仅使用暗通道先验损失造成的生成图像过暗问题,以及因使用L1损失对纹理细节过度平滑导致的边缘区域模糊问题,从而使去雾后的图像更加清晰. 下面具体介绍3个损失约束项以及相关理论.
1)暗通道先验与亮通道先验理论
暗通道先验理论的基本思想是,在非天空区域的彩色无雾图像中,大多数局部区域中都存在一些像素,这些像素在至少1个颜色通道中的强度很低. 此处,像素强度指该通道中的像素值,取值范围为0~255. 对任意图像 {\boldsymbol{I}} ,其暗通道 {{\boldsymbol{I}}^{\text{d}}}(x) 的表达式为
{{\boldsymbol{I}}^{\text{d}}}(x) = \mathop {\min }\limits_{y \in \varOmega (x)} (\mathop {\min }\limits_{C \in \{ {\text{R,G,B}}\} } {{\boldsymbol{I}}^C}(y)) , (4) 其中 {{\boldsymbol{I}}^C} 表示彩色图像 {\boldsymbol{I}} 的某一颜色通道, y \in \varOmega (x) 表示以像素点 x 为中心的局部区域内的像素. 暗通道先验理论指出,对无雾图像而言,其暗通道 {{\boldsymbol{I}}^{\text{d}}}(x) 应尽可能的小,并且趋近于0.
亮通道先验理论指出,大多数模糊图像的局部区域中都存在一些像素,这些像素在至少1个颜色通道中具有很高的强度. 对任意图像 {\boldsymbol{I}} ,其亮通道 {{\boldsymbol{I}}^{\text{b}}}(x) 的表达式为
{{\boldsymbol{I}}^{\text{b}}}(x) = \mathop {\max }\limits_{y \in \varOmega (x)} (\mathop {\max }\limits_{C \in \{ {\text{R,G,B}}\} } {{\boldsymbol{I}}^C}(y)) , (5) 其中 {{\boldsymbol{I}}^C} , y \in \varOmega (x) 的含义与式(4)中相同. 由亮通道先验理论可推得,带雾图像的亮通道相对无雾图像要高.
本文将图像暗通道图的2范数定义为图像的暗通道值,将亮通道图的2范数定义为亮通道值. 基于暗通道先验理论与亮通道先验理论,本文计算了ITS数据集中的13 990对带雾图像与清晰图像的暗通道值与亮通道值,并从中随机选取了1 399对带雾图像与清晰图像的计算结果进行可视化. 图4和图5分别展示了这些带雾图像与清晰图像的暗通道值对比曲线和亮通道值对比曲线. 图4中,橙色曲线表示带雾图像的暗通道值,蓝色曲线表示清晰图像的暗通道值. 图5中,橙色曲线表示带雾图像的亮通道值,蓝色曲线表示清晰图像的亮通道值. 综合图4和图5表明,带雾图像的暗通道值与亮通道值都相对较高,而清晰图像的暗通道值与亮通道值都相对较低. 该结果与暗通道先验理论和亮通道先验理论也是相吻合的. 因此,根据带雾图像与清晰图像的这一暗通道与亮通道特征,本文提出了暗通道先验损失与亮通道先验损失,这2项损失能够有效提升模型的去雾能力,使生成图像具有更好的去雾效果,同时提高图像的亮度与对比度,使生成图像更加清晰.
2)暗通道先验损失
上述暗通道先验理论和实验表明,带雾图像的暗通道值较高,清晰图像的暗通道值较低. 若模型去雾性能较差,则其生成图像的部分区域仍会存在雾残留,暗通道值就会偏高. 而且相比于轻雾图像,浓雾图像去雾后的雾残留会更多,暗通道值会更高. 因此,为增强模型的去雾性能,我们希望生成图像的雾残留尽量少,即生成图像的暗通道值尽可能小. 基于此,本文提出暗通道先验损失函数,用于约束分支去雾网络所生成图像的暗通道值,以提升模型的去雾效果,尤其是对浓雾图像的去雾效果. 暗通道先验损失函数表示为
{L_{\text{d}}} = \dfrac{{\sqrt {\sum\limits_{i=1}^{H \times W} {{{({{\boldsymbol{I}}^{\text{d}}}({x_i}))}^2}} } }}{{H \times W}} , (6) 其中 {x_i} 为第 i 个像素点, {{\boldsymbol{I}}^{\text{d}}} 为生成图像的暗通道图, {{\boldsymbol{I}}^{\text{d}}}({x_i}) 为生成图像的第 i 个像素点的暗通道值,H, W为图像尺寸. 该损失函数值越小,表明生成图像的暗通道值越小,整体的雾残留越少.
3)亮通道先验损失
上述亮通道先验理论和实验表明,带雾图像的亮通道值相比清晰图像要高. 因此,适当降低生成图像的亮通道值,可提升生成图像的清晰度,从而提高模型的去雾效果. 基于此,本文提出亮通道先验损失函数,用于约束分支去雾网络所生成图像的亮通道值,使其尽可能的小. 另外,由于暗通道先验损失易使生成图像亮度过暗,导致生成图像的对比度降低. 通过引入亮通道先验损失与暗通道先验损失共同约束模型,可很好地保持生成图像的亮通道值与暗通道值的平衡,从而在提高模型去雾性能的同时,保证生成图像的亮度与对比度,使模型生成的图像更加清晰. 亮通道先验损失函数表示为
{L_{\text{b}}} = \frac{{\sqrt {\sum\limits_{i=1}^{H \times W} {{{({{\boldsymbol{I}}^{\text{b}}}({x_i}))}^2}} } }}{{H \times W}} , (7) 其中 {x_i} 为第 i 个像素点, {{\boldsymbol{I}}^{\text{b}}} 为生成图像的亮通道图, {{\boldsymbol{I}}^{\text{b}}}({x_i}) 为生成图像的第 i 个像素点的亮通道值. 该损失函数值越小,表明亮通道值越小,生成图像越清晰.
4)L1损失
用于计算生成图像与目标清晰无雾图像之间对应像素的误差,表达式为
{L_1} = {\left\| {{{\boldsymbol{I}}_{\text{o}}} - {{\boldsymbol{I}}_{{\text{GT}}}}} \right\|_1} , (8) 其中 {{\boldsymbol{I}}_{{\text{GT}}}} 为目标清晰无雾图像, {{\boldsymbol{I}}_{\text{o}}} 为模型的生成图像,即去雾后的图像.
综上,多分支去雾网络MBDN的总损失函数为
{L_{\text{B}}} = {\omega _1}{L_1} + {\omega _2}{L_{\text{d}}} + {\omega _3}{L_{\text{b}}} , (9) 其中 {\omega _1} , {\omega _2} , {\omega _3} 是损失函数的权重. 关于暗、亮通道先验损失的消融实验,见3.5.1节.
2.3 联合训练策略
在2.1节中,本文提出新的雾浓度分类方法,根据带雾图像的暗通道特征和恢复难度进行分类,并由此提出了新的浓度损失函数,该损失函数能够使LFC得到对带雾图像的更加合理和准确的分类结果. 然而在实现分类时,还要考虑到分类结果对整个网络模型最终生成图像的质量以及计算效率的影响. 因此,本文不是根据预定的浓度标签来单独训练LFC,而是将LFC和MBDN联合起来进行训练,从而使分类既考虑到带雾图像的暗通道特征和恢复难度,又考虑到最终生成图像的质量和网络的计算效率. 联合训练时,固定MBDN中已经训练完成的分支去雾网络,对LFC进行训练,使LFC能够根据带雾图像的暗通道特征和恢复难度,并结合生成图像质量以及模型的计算效率,实现对输入图像的分类. 联合训练中,当前输入的带雾图像会分别经过每个分支去雾网络,将LFC输出的当前图像的概率向量中每个元素的概率值与对应类别的分支去雾网络所生成图像的乘积之和,作为联合训练的最终结果. 联合训练输出图像的公式表示为
{{\boldsymbol{I}}_{\text{J}}}{\text{ = }}\sum\limits_{i = 1}^M {{p_i}} \times B{N_i}({\boldsymbol{I}}) , (10) 其中 M 为带雾图像的总类别数,本文中 M =3, {\boldsymbol{I}} 为输入图像, {p_i} 为当前输入图像被分至第 i 类的概率, B{N_i}({\boldsymbol{I}}) 为第 i 个分支去雾网络所生成的图像. {{\boldsymbol{I}}_{\text{J}}} 为联合训练的最终输出图像.
在联合训练过程中,带雾图像的特征以及生成图像的质量均是影响模型性能的关键因素. 而本文提出的雾浓度分类损失函数,可根据带雾图像的暗通道特征和恢复难度约束模型,将其与L1损失相结合,可进一步保证生成图像的质量. 此外,通过雾浓度分类损失与L1损失共同约束模型,还可以使模型能够根据计算效率进一步优化分类结果. 例如,若低宽度分支去雾网络足以处理当前图像且能够保证生成图像的质量时,则无需使用更高宽度的分支去雾网络处理,从而使当前图像雾浓度分类降低1个等级,有效提高了模型的计算效率. 另外,为增加分类结果的可信度,我们还引入了类间损失[32],与L1损失和雾浓度分类损失共同约束整个模型. 因此,本文模型联合训练的总损失函数由3个约束项组成:
1)L1损失
用于计算生成图像与清晰图像之间对应像素的误差,以保证生成图像的质量,表达式为
{L_1} = {\left\| {{{\boldsymbol{I}}_{\text{J}}} - {{\boldsymbol{I}}_{{\text{GT}}}}} \right\|_1} , (11) 其中 {{\boldsymbol{I}}_{\text{J}}} 为联合训练时模型的生成图像, {{\boldsymbol{I}}_{{\text{GT}}}} 为目标清晰无雾图像.
2)类间损失
用于扩大概率向量中各元素之间的距离,即增大每个分类结果之间的概率差距,使概率向量中最大的元素值趋近于1,从而增加最大概率对应的分类结果的可信度,避免分类结果的模糊性. 公式为
{L_{\text{c}}} = (M - 1) - \sum\limits_{i = 1}^{M-1} {\sum\limits_{j = i + {\text{1}}}^M {|{p_i}} } - {p_j}| . (12) 3)雾浓度分类损失
雾浓度分类损失Lk如式(3)所示,该损失用于约束LFC,使其能够根据带雾图像的暗通道特征和恢复难度实现分类.
综上,联合训练的总损失函数为
{L_{\text{J}}} = {\lambda _1}{L_1} + {\lambda _2}{L_{\text{c}}} + {\lambda _3}{L_k} , (13) 其中 {\lambda _1} , {\lambda _2} , {\lambda _3} 是损失约束项的权重.
3. 实 验
3.1 数据集
本文采用RESIDE, RS-HAZE[33], O-HAZE[34]这3个数据集进行实验.
3.1.1 RESIDE数据集
RESIDE包含由NYU Depth Dataset V2[35]和Middlebury Stereo Datasets[36]合成的室内图像与室外图像. 在RESIDE数据集中,本文分别使用ITS与OTS (outdoor train set)进行训练,使用SOTS (synthetic objective testing set)进行测试,使用HSTS (hybrid subjective testing set)测试模型对真实雾图像的去雾效果. 本文在训练分支去雾网络时,在ITS中,使用13000张图像用于训练,990张用于验证. 在OTS中,使用130000张图像用于训练,990张用于验证. SOTS包含500张室内图像与500张室外图像,本文使用SOTS分别对ITS与OTS进行测试实验.
3.1.2 RS-HAZE数据集
RS-HAZE是一个合成的遥感图像去雾数据集,由512×512的遥感图像块组成,包含51300张训练集图像和2700张测试集图像. 我们使用5130张图像进行训练,900张图像进行测试.
3.1.3 O-HAZE数据集
O-HAZE包含45张不同场景中拍摄的室外真实雾图像,雾图像中均为真实雾霾,由专业造雾设备生成. 我们在O-HAZE中随机选取30张图像来测试模型的泛化能力.
3.2 训练策略
本文训练模型的机器配置与运行环境为:Ubuntu18.04, GeForce RTX 3090, CUDA 11.0, PyTorch 1.7.0, Pycharm 2021, Python 3.6.
模型的训练主要分为2个步骤:第1步,使用式(9)定义的损失函数,即:将新提出的暗通道先验损失和亮通道先验损失,与L1损失相结合,分别训练3个分支去雾网络,使其能够将带雾图像恢复至无雾清晰图像. 本文实验中,将式(9)中的权值设置为 {\omega _1}{\text{ = }}1, {\omega _2} = 10, {\omega _3} = 10 . 此外,为了减少训练成本,我们在训练分支去雾网络时,按照数据集图像的雾浓度系数 K 值由小到大排列,并按照区间粗略地将数据集分为3类,以分别训练3个分支网络. 其中,轻雾分支网络训练集包含 k \in (0,0.4) 的图像,中雾分支网络训练集包含 k \in (0.3,0.7) 的图像,浓雾分支网络训练集包含 k \in (0.6,1) 的图像, k 为雾浓度系数 K 的归一化值,其中,每个分支网络的训练集中存在一定的重合,是为了保证分支网络的精度. 第2步,固定训练好的3个分支网络,使用式(13)定义的损失函数,即:将新提出的雾浓度分类损失与L1损失和类间损失相结合,对模型进行联合训练,使LFC能够根据带雾图像的暗通道特征和恢复难度,并结合生成图像质量与模型计算效率,实现对带雾图像的分类. 本文实验中,将式(13)中的权值设置为 {\lambda _1}{\text{ = }}1000,{\lambda _2} = 1,{\lambda _3} = 1 . 其中,训练分支去雾网络时,设置迭代次数为 8{{\text{E}}^5} ,批处理大小为4,学习率初始值为 1{{\text{E}}^{ - 4}} ,使用Adam优化器[37]优化学习率,通过余弦退火衰减函数将学习率从初始值调整为0,设置 {\beta }_{1}\text{=}0.99,{\beta }_{2}\text{=}0.999 ;联合训练时,设置批处理大小为64,初始学习率为 2{{\text{E}}^{ - 4}} ,训练周期为100.
3.3 雾浓度分类方法的合理性
为证明本文提出的雾浓度分类方法的合理性和有效性,对本文模型在多个数据集上的分类结果,以及生成图像的质量和网络的计算性能进行了测试. 表1是对SOTS室内测试集的测试结果. 实验中,利用训练好的网络模型对500张室内测试图像进行分类,得到轻雾类图像69张、中雾类图像303张、浓雾类图像128张. 为测试生成图像的质量和计算性能,将3类图像均输入至MBDN中的每个分支去雾网络,得到不同分支网络下生成图像的平均PSNR值,该值可反映图像的生成质量. 表1中第5列的参数量表明,LFC的参数量相比分支去雾网络而言非常小,因此LFC的引入几乎不会对模型的去雾工作带来更多的计算成本和内存占用. 由第2列轻雾图像去雾后的平均PSNR值对比可得,轻雾图像经过3个不同分支去雾网络处理后,所得图像的平均PSNR值十分接近,而轻雾分支网络的参数量相对浓雾分支网络减少了40%有余. 由此可见,使用低宽度的分支网络处理轻雾图像,即可获得与高宽度网络非常相近的结果,其精度的损失是可以忽略不计的,但计算成本却大大降低. 对比第3列中雾图像去雾后的平均PSNR值同样可得,中雾图像经过中雾分支网络处理后的图像精度,相比浓雾分支网络略有一点下降,该损失是可接受的,但中雾分支网络相比浓雾分支网络,参数量却减少了30%有余. 因此,通过对带雾图像的分类,以损失极小的精度为代价,使参数量大大降低,从而提高了计算效率,减小了计算成本,这证明了本文的雾浓度分类方法是合理和有效的.
表 1 本文分支网络处理SOTS室内数据集中3类图像的平均PSNR以及参数量对比Table 1. Average PSNR and Parameters Comparison of Our Branch Networks for Three Levels of Images in SOTS (Indoor)本文模型 平均PSNR/dB 参数量/MB 轻雾 中雾 浓雾 轻雾分支网络(48) 39.85 36.98 35.73 2.63 中雾分支网络(56) 39.87 37.45 36.31 3.59 浓雾分支网络(64) 39.91 37.79 36.78 4.68 LFC 0.32 注:括号内的数字表示分支去雾网络的宽度. 3.4 对比实验结果
为了验证本文方法的有效性,我们分别在RESIDE数据集中的SOTS, HSTS测试集,和RS-HAZE, O-HAZE测试集上对模型进行测试实验. 我们对比了8种去雾算法,在视觉上展示了本文方法与其他方法在不同数据集上的去雾效果的对比结果. 同时,为了更直观地展示模型对不同雾浓度类别图像的去雾效果,我们在SOTS测试集中对轻雾、中雾、浓雾3类图像分类展示.
图6、图7、图8分别展示了轻雾、中雾、浓雾3类图像经本文方法和其他方法处理后在SOTS数据集上的视觉对比结果. 在图6~8中,分图(a)中的图像来自SOTS室内测试集,分图(b)中的图像来自SOTS室外测试集,每图的第1列为输入的带雾图像,最后1列为目标清晰无雾图像. 由图6~8可见,DCP算法由于先验假设的局限性,存在参数估计不准确等问题,导致其生成图像的颜色失真较为严重,如图6(a)第2列第1行结果图的桌面区域和图7(b)第2列第2行、第3行结果图的天空区域颜色失真严重,另外,由图8可见,DCP算法对浓雾图像处理效果较差,存在着较多的雾残留;AOD-Net算法的去雾效果较差,尤其是在处理浓雾图像时,仅去除了小部分雾霾,而且生成图像色彩比例失衡,如图8(b)第3列第2行结果图的对比度较低,且有明显的雾残留,图7(a)第3列第2行结果图中的桌面区域颜色出现明显偏差;DehazeNet算法生成图像的亮度过高,其去雾效果虽优于AOD-Net算法,但仍无法达到满意的结果,如图7(b)第4列第2行结果图的天空区域过亮,图8中的浓雾图像在去雾后仍存在较多的雾残留;GCANet算法对纹理边缘细节的处理效果较差,部分图像出现颜色失真问题,如图7(b)第5列第2行结果图的天空区域出现大范围的模糊,图7(b)第5列第3行结果图的天空区域过曝;FFA算法在轻雾、中雾图像上的表现较好,但在处理浓雾图像时,存在局部区域模糊的问题,如图8(a)第6列第3行结果图左侧墙壁区域和图8(b)第6列第2行结果图的路面区域,均出现一定程度的模糊;MSBDN算法的生成图像整体偏亮,且对浓雾图像的去雾效果欠佳,如图8(a)第7列第3行、图8(b)第7列第1行结果图中仍存在较多的雾霾;AECRNet算法在室内图像中的表现较好,但在部分室外图像中的处理效果较差,如图8(b)第8列第3行结果图的天空区域出现模糊;D4算法的生成图像整体较亮. 相比其他方法,本文模型具有更好的去雾效果,尤其在处理浓雾图像时,可有效减少雾残留,使生成的图像更加清晰,这也证实了本文提出的暗通道先验损失函数与亮通道先验损失函数的优势.
我们在RS-HAZE数据集上对模型进行了实验,图9展示了本文方法与其他部分方法在RS-HAZE数据集上的视觉对比结果,同时对方框内的图像细节区域进行了放大. 由图9可见,DCP, AOD-Net的图像质量和去雾效果均较差,在雾浓度较低的图像中,FFA, AECRNet的处理效果较好,本文方法在细节方面的表现更优于FFA, AECRNet. 如图9第1行、第2行结果图,本文方法能够更好地保留图像细节信息和整体色彩;对于雾浓度极大的图像,如图9第3行结果图,在图像失真较为严重时,本文方法能够更大程度地保证生成图像的质量.
为了测试模型的泛化性,我们在O-HAZE数据集中随机选取了30张图像,不进行模型的训练,通过ITS数据集训练的模型直接输出结果,图10展示了本文方法与其他方法在O-HAZE数据集上的视觉对比结果. 由图10可见,本文方法具有较优的泛化能力. 此外,我们在图11中展示了本文模型与其他模型在RESIDE的子数据集HSTS中真实雾图像上的表现.
在视觉对比实验的基础上,本文使用不同的图像质量评价指标对模型进行了量化对比实验. 使PSNR反映图像的失真情况,以衡量重构图像的质量; 使用SSIM衡量生成图像与真实图像的相似程度,通过上述2个指标进一步评价和证明本文方法的有效性. 表2展示了本文模型与其他模型分别在SOTS,RS-HAZE,O-HAZE测试集上的量化评估结果,表2表明,本文方法在SOTS和RS-HAZE上均表现最佳. 在O-HAZE上,本文方法的平均PSNR值优于除D4,MSBDN外的其他方法,SSIM值优于除D4, GCANet外的其他方法,虽然本文方法的平均PSNR与SSIM不是最优,但是由图10可见,本文方法在处理轻雾图像时可以达到较好的视觉效果.
表 2 不同方法在SOTS, RS-HAZE, O-HAZE数据集上的平均PSNR与SSIM评估结果Table 2. Average PSNR and SSIM Evaluation for Different Methods on SOTS, RS-HAZE and O-HAZE Datasets模型 SOTS(室内) SOTS(室外) RS-HAZE O-HAZE 平均PSNR/dB SSIM 平均PSNR/dB SSIM 平均PSNR/dB SSIM 平均PSNR/dB SSIM DCP[6] 20.71 0.8494 21.23 0.9214 18.13 0.7301 14.28 0.5791 AOD-Net[11] 17.59 0.7872 19.51 0.8300 19.95 0.8472 15.78 0.5126 DehazeNet[8] 21.34 0.8615 22.61 0.8606 23.25 0.8239 15.50 0.5450 GCANet[18] 30.06 0.9596 32.83 0.9320 16.46 0.6009 FFA[12] 36.12 0.9874 32.13 0.9796 36.32 0.9603 14.88 0.5300 MSBDN[14] 33.29 0.9784 30.16 0.9629 36.23 0.9556 16.26 0.6177 AECRNet[15] 36.58 0.9883 34.84 0.9563 14.19 0.5296 D4[16] 24.92 0.9301 25.28 0.9483 28.96 0.9217 16.55 0.6332 本文方法 37.45 0.9894 33.12 0.9825 36.70 0.9614 16.29 0.6054 注:加粗数字表示每一列的最高评估结果. 本文对SOTS室内测试图像进一步测试,保存了模型对SOTS室内测试图像分类结果,使用不同模型对轻雾、中雾、浓雾图像分别测试评估. 表3展示了SOTS室内测试集中轻雾、中雾、浓雾3类图像分别在不同去雾模型上的量化评估结果. 除表2中的2个图像质量评估指标外,表3增加了参数量评估指标,参数量为网络模型中所需要训练的参数总量,可用于衡量网络的空间复杂度以及所占内存的大小. 通过综合比较各模型的PSNR、SSIM和参数量,以证明本文分类方法和分支去雾网络的有效性. 表3的评估结果表明,在去雾质量方面,本文模型处理不同雾浓度图像的结果均为最佳. 在参数量方面,相比AOD-Net, DehazeNet, GCANet, AECRNet方法,本文模型的参数量略大,但是对去雾质量的提升却是极大的;而相比FFA, MSBDN, D4方法,本文模型均能够以较小的参数量,达到较高的去雾质量. 另外,本文模型自身还可根据带雾图像的分类结果在不同去雾分支间灵活调整,进一步平衡了整个网络的去雾质量和计算效率. 综上,本文方法可以灵活处理不同浓度的带雾图像,显著提高了模型的计算效率,同时使用新提出的暗通道先验损失函数与亮通道先验损失函数,显著提高了模型的去雾性能,使得方法能够在达到较高精度的前提下,有效降低模型的空间复杂度和内存使用量,实现了去雾精度和速度的良好平衡.
表 3 不同方法在SOTS室内数据集中对轻雾、中雾、浓雾图像去雾后的平均PSNR与SSIM评估结果Table 3. Average PSNR and SSIM Evaluation of Defogged Results obtained by Different Methods on Light, Medium and Dense Fog Images in SOTS (Indoor)模型 轻雾图像 中雾图像 平均浓雾图像 参数量/MB 平均PSNR/dB SSIM 平均PSNR/dB SSIM 平均PSNR/dB SSIM DCP 23.95 0.8650 21.36 0.8702 17.64 0.7752 AOD-Net 20.84 0.7878 18.55 0.8150 13.46 0.6934 0.002 DehazeNet 25.06 0.8637 22.32 0.8833 17.08 0.7877 0.008 GCANet 31.48 0.9584 30.05 0.9629 29.71 0.9488 0.70 FFA 38.37 0.9901 36.21 0.9884 35.20 0.9837 4.46 MSBDN 33.93 0.9832 33.86 0.9805 31.18 0.9701 31.35 AECRNet 38.42 0.9908 36.57 0.9890 35.61 0.9853 2.61 D4 27.02 0.9357 24.69 0.9294 24.33 0.9287 10.70 本文轻雾分支网络 39.85 0.9913 2.96 本文中雾分支网络 37.45 0.9901 3.81 本文浓雾分支网络 36.79 0.9867 5.01 注:加粗数字表示每一列的最高评估结果. 3.5 消融实验
3.5.1 暗、亮通道先验损失
我们对新提出的暗通道先验损失 {L_{\text{d}}} 和亮通道先验损失 {L_{\text{b}}} 进行了消融实验,以证明引入这2个先验损失后能够使模型的去雾性能得到进一步提升. 图12展示了利用不同损失约束项训练的模型在SOTS室内测试集上得到的直观视觉结果,表4展示了图12第2~5列的每张图像的PSNR值对比结果. 图12中,第1列为带雾图像,第2列为仅使用L1损失训练的分支去雾网络的视觉结果,第3列为去掉暗通道先验损失 {L_{\text{d}}} 后训练的分支网络的视觉结果,第4列为去掉亮通道先验损失 {L_{\text{b}}} 后训练的分支网络的视觉结果,第5列为使用式(9)即总损失 {L_{\text{B}}} 训练的分支网络的视觉结果,第6列为清晰无雾图像. 方框区域对所有结果在相同位置的细节表现进行了放大. 对比第2~5列的去雾结果可见,第2, 3列图像均存在不同程度的残留雾;第4列图像细节处相对第2, 3列表现较好,但在PSNR值上仍逊于第5列图像;第5列结果图中的细节更加清晰,去雾效果更好. 综合图12与表4,可证明本文提出的2个先验损失的有效性,它们与L1损失共同约束分支去雾网络,可使模型的生成图像在视觉上更加清晰,在精度上达到更高的水平. 图13中的各曲线展示了在ITS数据集上使用不同损失约束项对本文模型进行训练时,生成图像的PSNR值变化曲线对比情况. 由图13可见,加入暗通道先验损失和亮通道先验损失所训练的模型,其生成图像的PSNR值上升速度更快,且收敛时可以达到更高的数值.
表 4 图12中第2~5列图像的PSNR评估结果Table 4. PSNR Evaluation Results of Images in Columns 2 to 5 in Fig.123.5.2 雾浓度分类损失
为验证雾浓度分类损失 {L_k} 的有效性,我们在式(13)中固定了 {\lambda _1} , {\lambda _2} ,取 {\lambda _3} = 0,1,4,10 分别进行了实验,在SOTS室内测试集上的实验结果如图14所示. 圆点代表将 {\lambda _3} =0,即去掉雾浓度分类损失 {L_k} 这1个约束项,此时,所有图像都会被划分为浓雾类,虽然PSNR值较 {\lambda _3} = 1 时略高,即精度略微上升,但相比之下参数量增加了近40%,大大增加了计算成本,这说明雾浓度分类损失能够使模型达到去雾精度和计算效率的良好平衡. 可见,虽然平均参数量有所减小,但PSNR值降幅较大,说明此时对 {L_k} 的权重 {\lambda _3} 设置过大,抑制了L1损失,从而导致了生成图像质量的下降,这证明了当 {\lambda _3} =1时,我们能够以较低的参数量得到较优的结果.
4. 结 论
本文提出一个基于雾浓度分类与暗-亮通道先验的多分支图像去雾模型,可根据带雾图像的暗通道特征和恢复难度,结合生成图像的质量与模型的计算效率,实现对带雾图像的分类,并根据分类结果为当前输入的带雾图像选择合适的分支去雾网络,分别实现轻雾、中雾、浓雾图像的去雾处理. 新的雾浓度分类损失函数的提出以及在模型联合优化中的应用,可使模型对带雾图像进行动态分类,达到去雾精度和计算消耗的良好平衡;新的暗通道先验损失和亮通道先验损失的提出以及在分支去雾网络中的应用,大大提高了生成图像的质量. 与当前图像去雾领域中现有的大多数经典去雾模型相比,本文模型具有更高的去雾性能,且能够在保证生成图像精度的同时减少参数量,降低网络的空间复杂度,提高计算效率.
作者贡献声明:张琪东负责设计具体算法、实施实验、撰写论文;迟静提出研究思路和方案框架,指导论文撰写;陈玉妍负责数据采集、整理和论文校对;张彩明提供算法理论指导.
-
表 1 本文分支网络处理SOTS室内数据集中3类图像的平均PSNR以及参数量对比
Table 1 Average PSNR and Parameters Comparison of Our Branch Networks for Three Levels of Images in SOTS (Indoor)
本文模型 平均PSNR/dB 参数量/MB 轻雾 中雾 浓雾 轻雾分支网络(48) 39.85 36.98 35.73 2.63 中雾分支网络(56) 39.87 37.45 36.31 3.59 浓雾分支网络(64) 39.91 37.79 36.78 4.68 LFC 0.32 注:括号内的数字表示分支去雾网络的宽度. 表 2 不同方法在SOTS, RS-HAZE, O-HAZE数据集上的平均PSNR与SSIM评估结果
Table 2 Average PSNR and SSIM Evaluation for Different Methods on SOTS, RS-HAZE and O-HAZE Datasets
模型 SOTS(室内) SOTS(室外) RS-HAZE O-HAZE 平均PSNR/dB SSIM 平均PSNR/dB SSIM 平均PSNR/dB SSIM 平均PSNR/dB SSIM DCP[6] 20.71 0.8494 21.23 0.9214 18.13 0.7301 14.28 0.5791 AOD-Net[11] 17.59 0.7872 19.51 0.8300 19.95 0.8472 15.78 0.5126 DehazeNet[8] 21.34 0.8615 22.61 0.8606 23.25 0.8239 15.50 0.5450 GCANet[18] 30.06 0.9596 32.83 0.9320 16.46 0.6009 FFA[12] 36.12 0.9874 32.13 0.9796 36.32 0.9603 14.88 0.5300 MSBDN[14] 33.29 0.9784 30.16 0.9629 36.23 0.9556 16.26 0.6177 AECRNet[15] 36.58 0.9883 34.84 0.9563 14.19 0.5296 D4[16] 24.92 0.9301 25.28 0.9483 28.96 0.9217 16.55 0.6332 本文方法 37.45 0.9894 33.12 0.9825 36.70 0.9614 16.29 0.6054 注:加粗数字表示每一列的最高评估结果. 表 3 不同方法在SOTS室内数据集中对轻雾、中雾、浓雾图像去雾后的平均PSNR与SSIM评估结果
Table 3 Average PSNR and SSIM Evaluation of Defogged Results obtained by Different Methods on Light, Medium and Dense Fog Images in SOTS (Indoor)
模型 轻雾图像 中雾图像 平均浓雾图像 参数量/MB 平均PSNR/dB SSIM 平均PSNR/dB SSIM 平均PSNR/dB SSIM DCP 23.95 0.8650 21.36 0.8702 17.64 0.7752 AOD-Net 20.84 0.7878 18.55 0.8150 13.46 0.6934 0.002 DehazeNet 25.06 0.8637 22.32 0.8833 17.08 0.7877 0.008 GCANet 31.48 0.9584 30.05 0.9629 29.71 0.9488 0.70 FFA 38.37 0.9901 36.21 0.9884 35.20 0.9837 4.46 MSBDN 33.93 0.9832 33.86 0.9805 31.18 0.9701 31.35 AECRNet 38.42 0.9908 36.57 0.9890 35.61 0.9853 2.61 D4 27.02 0.9357 24.69 0.9294 24.33 0.9287 10.70 本文轻雾分支网络 39.85 0.9913 2.96 本文中雾分支网络 37.45 0.9901 3.81 本文浓雾分支网络 36.79 0.9867 5.01 注:加粗数字表示每一列的最高评估结果. 表 4 图12中第2~5列图像的PSNR评估结果
Table 4 PSNR Evaluation Results of Images in Columns 2 to 5 in Fig.12
-
[1] Li Pengyue, Tian Jiandong, Tang Yandong, et al. Deep retinex network for single image dehazing[J]. IEEE Transactions on Image Processing, 2020, 30(99): 1100−1115
[2] 曹绪民,刘春晓. 基于亮度对比度增强与饱和度补偿的快速图像去雾算法[J]. 计算机辅助设计与图形学学报,2018,30(10):1925−1934 doi: 10.3724/SP.J.1089.2018.17000 Cao Xumin, Liu Chunxiao. Fast image defogging algorithm based on luminance contrast enhancement and saturation compensation[J]. Journal of Computer-Aided Design and Computer Graphics, 2018, 30(10): 1925−1934(in Chinese) doi: 10.3724/SP.J.1089.2018.17000
[3] 杨燕,陈高科,周杰. 基于高斯权重衰减的迭代优化去雾算法[J]. 自动化学报,2019,45(4):819−828 Yang Yan, Chen Gaoke, Zhou Jie. Iterative optimization defogging algorithm using Gaussian weight decay[J]. Acta Automatica Sinica, 2019, 45(4): 819−828(in Chinese)
[4] 胡伟,袁国栋,董朝,等. 基于暗通道优先的单幅图像去雾新方法[J]. 计算机研究与发展,2010,47(12):2132−2140 Hu Wei, Yuan Guodong, Dong Zhao, et al. Improved single image dehazing using dark channel prior[J]. Journal of Computer Research and Development, 2010, 47(12): 2132−2140(in Chinese)
[5] 范新南,冶舒悦,史朋飞,等. 改进大气散射模型实现的图像去雾算法[J]. 计算机辅助设计与图形学学报,2019,31(7):1148−1155 doi: 10.3724/SP.J.1089.2019.17458 Fan Xinnan, Ye Shuyue, Shi Pengfei, et al. An image dehazing algorithm based on improved atmospheric scattering model[J]. Journal of Computer-Aided Design and Computer Graphics, 2019, 31(7): 1148−1155(in Chinese) doi: 10.3724/SP.J.1089.2019.17458
[6] He Kaiming, Sun Jian, Tang Xiaoou, et al. Single image haze removal using dark channel prior[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33(12): 2341−2353 doi: 10.1109/TPAMI.2010.168
[7] Xu Yueshu, Guo Xiaoqiang, Wang Haiying, et al. Single image haze removal using light and dark channel prior[C]// Proc of the 5th IEEE Int Conf on Communications in China. Piscataway, NJ: IEEE, 2016: 323−328
[8] Cai Bolun, Xu Xiangmin, Jia Kui, et al. DehazeNet: An end-to-end system for single image haze removal[J]. IEEE Transactions on Image Processing, 2016, 25(11): 5187−5198 doi: 10.1109/TIP.2016.2598681
[9] Ren Wenqi, Liu Si, Zhang Hua, et al. Single image dehazing via multi-scale convolutional neural networks[C]// Proc of the 14th European Conf on Computer Vision. Berlin: Springer, 2016: 154−169
[10] Zhang He, Patel V M. Densely connected pyramid dehazing network[C]// Proc of the 31st IEEE/CVF Conf on Computer Vision and Pattern Recognition. Los Alamitos, CA: IEEE Computer Society, 2018: 3194−3203
[11] Li Boyi , Peng Xiulian , Wang Zhangyang , et al. AOD-Net: All-in-one dehazing network[C]// Proc of the 16th IEEE Int Conf on Computer Vision. Piscataway, NJ: IEEE, 2017: 4770−4778
[12] Qin Xu, Wang Zhilin, Bai Yuanchao, et al. FFA-Net: Feature fusion attention network for single image dehazing[C/OL]// Proc of the 34th AAAI Conf on Artificial Intelligence. Palo Alto, CA: AAAI, 2020[2022-08-20].https://doi.org/10.1609/aaai.v34i07.6865
[13] Liu Xiaohong, Ma Yongrui, Shi Zhihao, et al. GridDehazeNet: Attention-based multi-scale network for image dehazing[C]// Proc of the 17th IEEE/CVF Conf on Computer Vision. Los Alamitos, CA: IEEE Computer Society, 2019: 7314−7323
[14] Dong Hang, Pan Jinshan, Xiang Lei, et al. Multi-scale boosted dehazing network with dense feature fusion[C] //Proc of the 33rd IEEE/CVF Conf on Computer Vision and Pattern Recognition. Los Alamitos, CA: IEEE Computer Society, 2020: 2157−2167
[15] Wu Haiyan, Qu Yanyun, Lin Shaohui, et al. Contrastive learning for compact single image dehazing[C]// Proc of the 34th IEEE/CVF Conf on Computer Vision and Pattern Recognition. Los Alamitos, CA: IEEE Computer Society, 2021: 10551−10560
[16] Yang Yang, Wang Chaoyue, Liu Risheng, et al. Self-augmented unpaired image dehazing via density and depth decomposition[C]//Proc of the 35th IEEE/CVF Conf on Computer Vision and Pattern Recognition. Los Alamitos, CA: IEEE Computer Society, 2022: 2037−2046
[17] Engin D, Genç A, Ekenel H K. Cycle-dehaze: Enhanced cycleGAN for single image dehazing[C] //Proc of the 31st IEEE Conf on Computer Vision and Pattern Recognition Workshops. Los Alamitos, CA: IEEE Computer Society, 2018: 825−833
[18] Chen Dongdong, He Mingming, Fan Qingnan, et al. Gated context aggregation network for image dehazing and deraining[C]// Proc of the 19th IEEE Winter Conf on Applications of Computer Vision. Piscataway, NJ: IEEE, 2019: 1375−1383
[19] Shao Yuanjie , Li Lerenhan , Ren Wenqi , et al. Domain adaptation for image dehazing[C]// Proc of the 33rd IEEE/CVF Conf on Computer Vision and Pattern Recognition. Los Alamitos, CA: IEEE Computer Society, 2020: 2808−2817
[20] Asery R, Sunkaria R K, Sharma L D, et al. Fog detection using GLCM based features and SVM[C]// Proc of the 3rd Conf on Advances in Signal Processing. Piscataway, NJ: IEEE, 2016: 72−76
[21] Wan Jinjin, Qiu Zhenan, Gao Haifeng, et al. Classification of fog situations based on Gaussian mixture model[C]// Proc of the 36th Chinese Control Conf. Piscataway, NJ: IEEE, 2017: 10902−10906
[22] Zhang Yuanyuan, Sun Guangmin, Ren Qian, et al. Foggy images classification based on features extraction and SVM[C]// Proc of the 3rd Int Conf on Software Engineering and Computer Science. Berlin: Springer, 2013: 142−145
[23] 吴琪,汪小武,章军,等. 利用序数关系实现相对学习的雾图像能见度检测算法[J]. 计算机辅助设计与图形学学报,2020,32(12):1938−1947 doi: 10.3724/SP.J.1089.2020.18250 Wu Qi, Wang Xiaowu, Zhang Jun, et al. Ordinal relation and relative learning for foggy image visibility detection[J]. Journal of Computer-Aided Design and Computer Graphics, 2020, 32(12): 1938−1947(in Chinese) doi: 10.3724/SP.J.1089.2020.18250
[24] Ronneberger O, Fischer P, Brox T. U-Net: Convolutional networks for biomedical image segmentation[C]// Proc of the 18th Conf on Medical Image Computing and Computer-Assisted Intervention. Berlin: Springer, 2015: 234−241
[25] Goodfellow I J, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[C] //Proc of the 27th Int Conf on Neural Information Proc Systems. Cambridge, MA: MIT, 2014: 2672−2680
[26] Zhu Junyan, Park T, Isola P, et al. Unpaired image-to-image translation using cycle-consistent adversarial networks[C] //Proc of the 16th IEEE Conf on Computer Vision. Los Alamitos, CA: IEEE Computer Society, 2017: 2242−2251
[27] 汪航,田晟兆,唐青,等. 基于多尺度标签传播的小样本图像分类[J]. 计算机研究与发展,2022,59(7):1486−1495 Wang Hang, Tian Shengzhao, Tang Qing, et al. Few-shot image classification based on multi-scale label propagation[J]. Journal of Computer Research and Development, 2022, 59(7): 1486−1495(in Chinese)
[28] 张强,杨吉斌,张雄伟,等. CS-Softmax:一种基于余弦相似性的Softmax损失函数[J]. 计算机研究与发展,2022,59(4):936−949 Zhang Qiang, Yang Jibin, Zhang Xiongwei, et al. CS-Softmax: A cosine similarity-based Softmax loss function[J]. Journal of Computer Research and Development, 2022, 59(4): 936−949(in Chinese)
[29] Li Boyi, Ren Wenqi, Fu Dengpan, et al. Benchmarking single image dehazing and beyond[J]. IEEE Transactions on Image Processing, 2018, 28(1): 492−505
[30] Hu Jie, Shen Li, Sun Gang, et al. Squeeze-and-excitation networks[C]// Proc of the 31st IEEE Conf on Computer Vision and Pattern Recognition. Los Alamitos, CA: IEEE Computer Society, 2018: 7132−7141
[31] Lin Min, Chen Qiang, Yan Shuicheng. Network in network[C/OL]// Proc of the 2nd IEEE Int Conf on Learning Representations. 2014[2022-08-20].https://openreview.net/forum?id=ylE6yojDR5yqX
[32] Kong Xiangtao, Zhao Hengyuan, Qiao Yu, et al. ClassSR: A general framework to accelerate super-resolution networks by data characteristic[C]// Proc of the 34th IEEE/CVF Conf on Computer Vision and Pattern Recognition. Los Alamitos, CA: IEEE Computer Society, 2021: 12016−12025
[33] Song Yuda, He Zhuqing, Qian Hui, et al. Vision transformers for single image dehazing[J]. arXiv preprint, arXiv: 2204. 03883, 2022
[34] Ancuti C O, Ancuti C, Timofte R, et al. O-HAZE: A dehazing benchmark with real hazy and haze-free outdoor images[C] //Proc of the 31st IEEE/CVF Conf on Computer Vision and Pattern Recognition Workshops. Los Alamitos, CA: IEEE Computer Society, 2018: 754−762
[35] Silberman N, Hoiem D, Kohli P, et al. Indoor segmentation and support inference from RGBD images[C]// Proc of the 12th European conf on Computer Vision. Berlin: Springer, 2012: 746−760
[36] Scharstein D, Szeliski R. High-accuracy stereo depth maps using structured light[C]// Proc of the 13th IEEE Computer Society Conf on Computer Vision and Pattern Recognition. Los Alamitos , CA: IEEE Computer Society, 2003: 195−202
[37] Kingma D P, Ba J. Adam: A method for stochastic optimization[C/OL]// Proc of the 3rd Int Conf on Learning Representations. 2015[2022-08-20]. https://openreview.net/forum?id=8gmWwjFyLj
-
期刊类型引用(0)
其他类型引用(1)