自适应Transformer网络下的单幅图像去雾方法

2024-03-03 11:21金海波马琳琳田桂源
计算机工程与应用 2024年3期
关键词:雾度损失卷积

金海波,马琳琳,田桂源

辽宁工程技术大学 软件学院,辽宁 葫芦岛 125105

雾、霾等复杂天气不仅会降低景观的能见度,还会影响图像捕获设备捕获的自然场景的图像质量[1],如色彩缺失、饱和度低、纹理细节模糊。严重影响计算机视觉的任务,导致目标检测、图像分类的准确性降低[2],因此,图像去雾在计算机视觉任务中起着至关重要的作用。

图像去雾方法主要分为三种,基于图像增强的方法、基于先验的方法和基于深度学习的方法。基于增强的去雾方法如Retinex 方法[3]、直方图均衡化[4]和小波变换[5]等,这类不依赖大气散射模型[6],通过增加对比度、饱和度提高图像质量,但是此类方法去雾效果不佳,容易出现过饱和现象。基于先验的去雾方法,通过估计传输图与大气光,再使用大气散射模型推导出清晰图像。例如使用暗通道先验(dark channel prior,DCP)[7]方法评估传输图,该方法假设无雾图像中至少一个颜色通道低强度值接近于零。Meng 等[8]提出正则化方法去雾(BCCR),虽然该方法对传输图有了新的约束,提升去雾速度。黄文君等[9]提出了一种低秩与字典表达分解的浓雾霾场景图像去雾方法,该方法通过低秩与字典表达分解得出低秩的“雾”图,结合双三次插值将局部的“雾”推广到全局,最后减去“雾”图恢复出无雾清晰图像,该方法仍存在失真,细节不清晰。这些基于先验的方法在尽管在一定同程度上取得了成功,但是依赖透射图和大气光的估计,且容易出现失真等问题。

近年来深度学习技术快速发展,越来越多的研究人员探索使用卷积神经网络(convolutional neural network,CNN)进行图像去雾。早期的图像去雾方法侧重于利用估计传输图和大气光恢复有雾图像,如Li等[10]提出一种AOD-Net,该方法重新制定大气散射模型,将透射图和大气光放到一个新的变量中,再恢复图像。虽然这些基于CNN 的算法可以更准确地估计传输图,但这些方法仍然需要准确估计大气光与透射图才能完美地恢复无雾图像,本质上仍然依赖于大气散射模型。为了解决传输图和大气光估计不准确问题,一些卷积神经网络方法不依赖透射图和大气光的估计,直接将有雾图像恢复为清晰图像。如Zheng 等[11]提出一种4K 分辨率图像去雾的多引导双边学习框架(4K resolution image dehazing network,RIDN),快速处理高分辨率的有雾图像。刘广洲等[12]提出了一种端到端的密集连接扩张卷积神经网络,该网络使用密集连接的扩张卷积,增强网络对大尺度特征信息的聚合能力。Wang 等[13]提出DRHNet 去雾网络,先得到负残差图,再用模糊图像减去负残差图得到无雾图像。这些方法虽然与之前的图像去雾方法相比去雾效果有所提升,不过其中一些方法由于过多使用卷积操作,过度关注细节信息,反而忽略了全局信息,因此去雾效果并不理想。

近年来,一些研究将Transformer 应用到计算机视觉的不同任务中,例如图像增强[14]、图像分割[15]、目标检测[16]、人体姿态估计[17]和图像分类[18],Transformer不仅在这些任务取得很好的效果,还在单图像去雾领域有所应用,如Li 等[19]设计两阶段单图像去雾网络,通过引入分层Transformer 改进编码器,将Transformer 和CNN 进行有效结合,实现全局与局部特征提取。Gao等[20]在去雾网络中设计一个基于Transformer 的通道空间注意模块,并利用多尺度并行残差网络作为主干,提取不同尺度的特征信息,实现特征融合。Li等[21]提出了一种结合卷积神经网络和Vision Transformer 的混合去雾络,该算法首先利用预处理模块提取雾霾图像的浅层特征,使用包括卷积神经网络和Vision Transformer结合的对称网络结构来分别捕获雾霾图像的局部特征和全局特征。Wang等[22]提出Uformer,可以降低高分辨率特征图的计算复杂度,对图像细节的恢复能力增强。Jiao 等[23]提出了一种基于分数导数和数据驱动正则化项的新型去雾网络,为达到更好的去雾效果,该网络引入基于卷积神经网络和Transformer结合的双流网络构建数据驱动的正则化。上述这些方法虽然解决了图像细节的缺失问题,但是对图像中雾浓度较高的地方去雾效果仍然不彻底。

为了克服这些困难,本文提出了一种基于自适应Transformer 的单图像去雾网络,该网络框架采用U-net的编码-解码结构。首先利用编码器对有雾图像的局部特征进行提取,接着使用自适应Transformer 提取全局特征和不同尺度颗粒雾度特征,最后利用解码器对图像特征进行重建。具体的:

(1)为了更好地处理不同雾度图像,本文提出自适应Transformer,在提取有雾图像全局信息的同时,自适应提取图像中不同雾浓度特征。

(2)在利用编码器提取有雾图像局部特征时,为避免细节丢失和关注重要的特征信息,提出了一种基于通道-空间注意力(channel-spatial,C-S)的跳跃连接。

(3)为了指导网络模型更好地学习有雾图像的边缘细节信息,本文改进了损失函数,在均方差损失中引入感知损失与边缘损失。

1 自适应Transformer单图像去雾方法

1.1 网络的整体结构

U-Net[24]是图像处理领域常见的网络之一,可获取多尺度的图像特征,受此启发,本文采用了U-Net 这一被广泛使用的编码-解码结构作为了模型的基本框架。如图1 所示,模型由编码器、自适应Transformer 块与解码器三部分组成。模型接收有雾图像,经过以上三个模块,最终输出去雾图像。

图1 自适应Transformer单图像去雾网络Fig.1 Adaptive Transformer single image dehazing network

编码器由三个卷积层组成。其中卷积层的作用为对输入的有雾图像进行局部特征提取,得到如边缘、纹理等的细节信息。卷积核大小均为4×4,卷积步长为2,输入通道数为3,输出通道数为192。设置输入的有雾图像为I,则编码阶段的卷积操作如下所示,其中,Fi代表编码阶段的第i块卷积压缩后的特征图。

自适应Transformer模块是将Transformer中的前馈网络用雾度特征提取网络代替而产生的,可以在提取全局特征的基础上,自适应提取不同尺度颗粒雾度特征。

考虑多卷积操作可能会丢失图像细节信息,本文在编码器与解码器之间加入跳跃连接,对得到的特征偏差进行修正,不过仅跳跃连接不能关注有雾图像的重要特征,为更加关注有雾图像重要特征,加快信息流动,本文在编码器与解码器之间使用了本文所设计的基于通道-空间注意力(channel-spatial,C-S)的跳跃连接。

解码器与编码器的结构对称,由三个反卷积层组成。反卷积层的作用用来恢复图像细节,重建图像进而得到去雾图像,卷积核大小为4×4,卷积的步长为2,输入通道数为192,输出通道数为3。解码模块的每次卷积操作表示如下:

其中,S为自适应Transformer处理块提取结果,Ji表示解码器中卷积恢复的特征图。CS表示通过C-S跳跃连接,最终,J=J6,J为网络模型输出的去雾图像。

1.2 自适应Transformer块

为获取图像的全局特征,本文引入Transformer[25],由于传统的Transformer 只关注全局信息,忽略细节信息,因此本文为提升图像去雾效果,在Transformer基础上,使用雾度特征提取网络代替前馈网络,提出自适应Transformer 块,该块在提取全局特征的同时,对雾度特征进行提取,有效提升Transformer 提取不同尺度特征的能力,通过这种能力可以提取不同浓度的雾,如对薄雾、浓雾。如图2 所示,本文提出的自适应Transformer由多头注意力、雾度特征提取网络、两个层归一化构成。多头注意力得到全局特征,雾度特征提取网络获取不同尺度的特征,两个层归一化防止出现收敛困难。本文自适应Transformer数量设置为2。

图2 自适应Transformer块Fig.2 Adaptive Transformer block

本文提出雾度特征提取网络,该网络在获取多尺度信息的同时还可以根据输入的雾度特征自适应调整其权重系数,以更好地聚焦图像的有雾区域,达到更好的去雾效果。雾度特征提取网络结构如图3所示,为使去雾模块可以获取更多尺度的雾度特征首先将特征输入至三个不同大小的卷积核,输出三个不同的特征图,分别记为F1、F2、F3。三个卷积核的大小分别为3×3、5×5和7×7,然后对F1、F2、F3的特征图进行融合:

图3 雾度特征提取网络结构Fig.3 Haze feature extraction network structure

再使用全局平均池化将通道方面的全局空间信息转化为通道统计g∈FC。g的第C个元素通过在空间维度H×W上缩小F进行计算,如公式(4)所示:

接着通过一个卷积层对特征进行压缩,压缩特征为α、β和γ∈Fd×1,实现精确和自适应选择的指导,并且不会破坏图像的空间结构:

最后,使用空间注意力来自适应地选择不同分支的重要信息:

其中,a、b和c分别表示F1、F2和F3的空间注意力分数。在得到a、b和c后,分别与F1、F2和F3相乘,最终输出F′,其公式如式(7)所示:

借助该网络本文去雾网络可以快速、自适应地选择和融合不同尺度雾度特征。

1.3 C-S注意力跳跃连接

为了解决卷积操作会带来图像的细节信息丢失的问题。在编码解码结构中,编码器与解码器之间往往采用跳跃连接的方式对信息丢失进行修复。普通的跳跃连接不能关注重要像素特征,为此本文设计了一种C-S注意力跳跃连接,如图4所示。

本文考虑通道和空间点两个维度的信息,采取分级的方式,依次在特征图的通道和空间上使用注意力机制,使模型自适应地学习通道和空间两个维度上的重要信息。通道注意力主要关注通道特征中更有意义的部分,在通道注意力输出后,再引入空间注意力模块,关注空间中更有意义的特征。

1.4 损失函数

本文设计的损失函数由三个部分组成,分别是均方差损失、感知损失、边缘损失。损失函数能指导网络模型学习有雾图像与无雾图像之间的差异,其中感知损失可以增强去雾图像的清晰度,边缘损失可以更好地恢复图像的一些细节信息。总损失是通过结合这三个损失函数来定义的,由下式给出:

其中,λ1、λ2为每个损失函数分别对应的权重参数。

(1)均方差损失

均方差损失(mean square error,MSE)应用最广泛。由于MSE连续可导,因此在学习率固定时,可较快地达到收敛。本文选取均方差损失作为损失函数,其公式为:

式中,D表示图像的像素点数量,Ii表示本文模型输出的去雾图像中第i个像素点,Ji表示真实无雾图像中第i个像素点。

(2)感知损失

为增强去雾图像的清晰度,本文选择感知损失(perceptual loss,per)作为损失函数,该损失函数使用预训练的VGG 16 作为损失网络实现感知损失。其公式为:

其中,Cj、Hj和Wj分别为ϕj()的维度,ϕj(I)和ϕj(J)分别表示经过去雾图像对应的特征图和清晰图像对应的特征图。

(3)边缘损失

为了恢复更详细的有雾图像,本文选取边缘损失(edge loss)作为损失函数,该损失函数首先使用laplace算子的卷积运算Conv 获得清晰图像和去雾图像的边缘图像。再用Tanh 激活函数将边缘图像的值映射到[0,1],其公式为:

2 实验结果与分析

2.1 实验数据集与评价指标

本文选用RESIDE 数据集[26]中的户外数据集(outdoor training sets,OTS)作为训练数据、综合客观测试集(synthetic objective testing set,SOTS)作为测试数据。OTS由8 477张室外清晰图像,296 695张有雾图像组成,SOTS由500张室内模糊图像和500张室外模糊图像组成。此外,为了验证本文方法在真实世界中的去雾效果,选取了30 张不同场景下的具有挑战性的室外真实有雾图像进行测试。本文采用峰值信噪比PSNR(peak signal to noise ratio)与结构相似性指数SSIM[27](structural similarity index)作为评价指标对实验结果进行评价。

2.2 实验环境设置

网络训练了30 个epoch。学习率为0.000 1,训练和测试的批处理大小均设置为2。本文学习的框架为Pytorch,运行环境Python3.8.3,实验均在配备Intel®Xeon®E5-2678 v3@2.50 GHz,CPU 为GeForce GTX 1080Ti 的服务器上进行,Cude 为11.1。在训练时,将所有图像的大小调整为480×640。对比算法训练方式与本文相同。

2.3 实验结果及对比分析

2.3.1 合成有雾图像对比实验

表1显示了对比方法DCP、BCCR、AOD-Net、RIDN和提出的基于自适应Transformer的单图像去雾方法在SOTS测试集上的PSNR和SSIM分数。通过表1可以得出,传统方法DCP和BCCR的PSNR分数低于20 dB,且SSIM 分数没达到0.9。AOD-Net 方法和传统方法相比提升很多,不过和本文方法有一些差距。本文方法和RIDN 方法相比PSNR 提升了0.49 dB,SSIM 提升了0.005 8,本文所提出方法的客观指标远高于传统方法,略高于深度学习方法。

图5展示了在SOTS数据集中五组室外图像的去雾结果。从图5可以观察到DCP、和BCCR去雾后图像变得明显偏暗、失真且天空区域呈现出深蓝色,不适合天空去雾,如图5(b)、(c)中前四幅图像的天空。AOD-Net由于不能准确地估计透射图,导致去雾不完全,如图5(d)中第三幅图湖面的雾没有去干净。RIDN 中人物附近的浓雾没有去干净如图5(e)第四幅图所示。尽管AOD-Net 的去雾结果与DCP 和BCCR 相比去雾效果大大提升,减少了失真,但去雾结果中仍然存在一些雾度。RIDN 在雾浓的地方不如本文方法,如图5(e)第三幅图远处的树木部分雾浓,细节处理不佳,出现失真。相比于其他传统和深度学习去雾方法,本文算法去雾效果要更好一些。

图5 不同方法在SOTS数据集上的去雾验结果Fig.5 Dehazing test results of different methods on SOTS dataset

为了进一步体现本文去雾方法的优越性,将对比实验与本文方法的去雾图像进行局部放大对比。从图5中选取两组有雾图像与去雾图像进行局部放大对比,放大对比图如图6 所示。从放大图中可以看出传统算法失真严重,AOD与RIDN方法去雾后颜色和无雾图像相比偏浅,雾浓的区域去雾不彻底,本文方法去雾结果恢复彻底,细节清晰。

图6 局部放大示意图Fig.6 Partially enlarged schematic diagram

2.3.2 不同雾浓度对比实验

为了验证不同方法在不同雾浓雾的去雾效果,本小节在测试集选取了SOTS 室外测试集中大气光值A在0.8~1.0、大气散射系数β选择0.08、0.12、0.16 与0.20 四个等级的有雾图像,β的等级在主观视觉上可以等效看作雾气的浓度,β值越高,雾浓度就越高。表2 显示了对比方法DCP、BCCR、AOD-Net、RIDN 和提出的基于自适应Transformer 的单图像去雾方法在不同浓度的PSNR 和SSIM 分数。表2 为不同方法对不同浓度合成有雾图像去雾客观指标值,从表中可以得出,传统方法对不同浓度处的PSNR 与SSIM 值都很低,AOD-Net 在低浓度时处理相对较好,不过浓度越高,PSNR 与SSIM值会下降,RIDN在浓度低时,PSNR与SSIM值都很高,随着浓度增加,会随之降低。本文方法虽然在低浓度时PSNR 与SSIM 的值略低于RIDN,但是随着雾度的增加,PSNR与SSIM的值高于RIDN,总体上看,本文方法结果领先于其他对比方法。

表2 不同浓度合成有雾图像去雾客观指标值Table 2 Synthesis of fogged images with different concentrations of objective index values for defogging

图7展示了在SOTS数据集中四组不同浓度雾的室外图像的去雾结果。可以看出由上至下,有雾图像雾浓度不断加深,其中第一幅图像β为0.08、第二幅图像β为0.12、第三幅图像β为0.16、第四幅图像β为0.20。从图片中可以看出,传统方法颜色失真非常严重,天空去雾效果不佳,如图7(b)与(c)的天空。AOD-Net 去雾效果仍然有大量的雾气残留,如图7(d)第一幅图中的草坪和第四幅图中远处的树木。RIDN在雾浓的地方不如本文方法,如图7(e)第四幅图远处的树部分仍有少量雾气残留,细节处理不好。总之,雾浓度低的情况下,大多数去雾方法可以较好地去雾,雾浓度提升时,本文方法相比于其他传统和深度学习去雾方法去雾效果更好一些。

图7 不同浓度的雾图像对比实验结果Fig.7 Comparison of experimental results of fog images with different concentrations

为了进一步体现本文提出去雾方法的优越性,从上述不同雾浓度图像中选取两组有雾图像与去雾图像进行局部放大对比,这两组分别为雾浓度最高与最低,放大对比图如图8。从放大图中可以看出,在低浓度雾情况下,深度学习方法去雾效果相对较好,传统方法略微失真,本文方法去雾图像和无雾图像非常接近。在高浓度雾情况下,DCP 与BCCR 方法同样出现颜色失真,AOD-Net与RIDN方法在树木部分去雾有雾气残留,本文方法去雾彻底,细节清晰,接近无雾图像。

图8 局部放大示意图Fig.8 Partially enlarged schematic diagram

2.3.3 真实有雾图像对比实验

为了进一步验证所提方法的有效性,本文进一步将所提出的方法在真实有雾的图像上与其他去雾方法进行对比实验,实验结果如图9 所示。从图片中可以看出,DCP 颜色失真非常严重,整体颜色偏暗,天空去雾效果不佳,如图9(b)第一幅图和第三幅图,第一幅图天空呈深蓝色,山的颜色灰暗,看不出细节。第三幅图片的天空区域出现灰色。图9(b)第二幅女孩的脸部去雾后变为了红色,不能处理好不同浓度的雾霾图像。BCCR 和DCP 相似,失真严重,整体颜色暗。AOD-Net去雾效果比DCP 和BCCR 效果要好很多,不过也存在失真,如图9(d)第一幅图中的山偏暗,看不出细节。RIDN 去雾效果和本文方法的去雾效果接近,不过在图9(e)第三幅图树木部分的雾没有除净。总之,相比于其他传统和深度学习去雾方法,本文方法去雾效果要更好一些。

图9 不同方法在真实有雾图像对比实验结果Fig.9 Comparison of experimental results of different methods on real foggy images

与合成图像相似,本小节选取两组真实有雾图像与去雾图像进行局部放大对比,放大对比图如图10。从放大图中可以看出传统算法仍然失真严重,AOD-Net 与RIDN 方法在第二幅图中去雾后细节恢复不完善,本文方法去雾结果恢复彻底,细节恢复清晰。

图10 局部放大示意图Fig.10 Partially enlarged schematic diagram

2.4 消融实验

为验证自适应Transformer、C-S 注意力跳跃连接、损失函数的性能以及自适应Transformer块数量等的影响。以下为消融实验。在实验中需要保持其余结构参数保持不变,依然在OTS 室外训练集训练,SOTS 测试集测试。

(1)增减各个重要环节为变量进行消融对比实验,对比模型1,模型中其他部分保留,删除自适应Transformer。对比模型2,模型中其他部分保留,跳跃连接改用普通的跳跃连接。对比模型3,模型中其他部分保留,在损失函数部分改用均方差损失。对比模型4,使用本文模型。表3 给出了对比模型与本文网络模型对合成有雾图像上的消融实验结果。

表3 各个环节性能合成有雾图像上的消融实验结果Table 3 Experimental results of ablation on synthetic hazy images for each link performance

由表3 可知,本文模型测得的去雾图像PSNR 和SSIM 均优于对比模型,表明在去雾网络中添加自适应Transformer、C-S 跳跃连接和改进损失函数可以增强网络模型的去雾效果。

(2)使用Transformer 块与自适应Transformer 块为变量进行消融对比实验。分别使用Transformer块与自适应Transformer 块。表4 给出了不同Transformer 模型在合成有雾图像上的消融实验结果。

表4 不同Transformer模型在合成有雾图像上的消融实验Table 4 Ablation experiments of different Transformer models on synthetic fogged images

由表4可知,自适应Transformer测得的去雾图像PSNR和SSIM优于Transformer,表明自适应Transformer可以增强去雾效果。

(3)增减跳跃连接上C-S注意力为变量进行消融实验。分别设置普通跳跃连接和C-S 注意力跳跃连接。表5 给出了不同跳跃连接在合成有雾图像上的消融实验结果。

表5 不同跳跃连接在有雾图像上的消融实验Table 5 Ablation experiments with different jump connections on fogged images

如表5所示,添加C-S跳跃连接后性能增加,进而表明本文的跳跃连接与普通跳跃连接相比,本文的跳跃连接对有雾图像的关键信息能够更完整地保留,因此在网络中添加C-S跳跃连接可以提高模型的去雾能力。

(4)增减自适应Transformer 块为变量进行消融对比实验。设置自适应Transformer数量为1、2、3、4。表6给出了不同自适应Transformer块数量在合成有雾图像上的消融实验结果。

表6 自适应Transformer块数量的消融实验Table 6 Ablation experiment with adaptive Transformer block number

如表6所示,增加自适应Transformer的数量可以提高模型的性能,对应的模型参数数量也随之增多,当自适应Transformer增加到2时,SSIM达到最大值,虽然继续增加自适应Transformer 的数量PSNR 的数值还会略微升高但与之对应的模型参数量迅速增加。因此,为了保持网络模型具有较好的去雾能力同时具有较小的模型复杂度,本文自适应Transformer块的数量设置为2。

3 结束语

本文提出了一种基于自适应Transformer 的单幅图像去雾方法,该方法不依赖大气散射模型,可直接生成较为清晰的去雾图像。本文设计自适应Transformer、雾度特征提取器、C-S 跳跃连接有效处理不同浓度的雾,细节处理较好,解决失真问题。从实验可得出去雾性能和几种对比去雾算法相比有所提升。下一步工作发展出一个可以应用于视频去雾的模型。

猜你喜欢
雾度损失卷积
医用聚丙烯雾度性能的不确定度评价*
拉伸工艺对PETG 热收缩膜雾度的影响
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
典型工艺聚烯烃薄膜的雾度与其结构的关系
雾度计(雾度/透射比)示值误差测量结果的不确定度评定
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
一般自由碰撞的最大动能损失