钱旭淼,段 锦,2,刘 举,陈广秋,刘高天,梁丽平
(1.长春理工大学 电子信息工程学院,长春 130022; 2.长春理工大学 空间光电技术研究所基础技术实验室,长春 130022)
图像去雾技术作为一项基本的低层次视觉任务目前已受到计算机高级视觉任务的关注,逐渐成为该领域的研究热点.受雾霾、沙尘、雨、雪等恶劣天气影响,成像设备拍摄的图像通常存在对比度低、清晰度差、色彩失真等质量退化问题,从而直观影响人眼的视觉感受,而且降质图像的输入会导致一些高级视觉任务如分类、跟踪和目标检测[1]等变得更困难.
传统图像去雾方法大多数是基于大气散射模型进行的,该方法并不能直接测量客观重建误差,即当先验条件和假设不成立时,会导致对透射率图和大气光强的估计不准确,从而严重影响清晰图像的恢复,故传统方法不能很好地发挥作用.随着深度学习技术的发展,基于卷积神经网络(CNN)[2-7]的方法被用于图像去雾中,直接或间接的恢复无雾图像.但通过现有的网络(如DenseNet[8],U-Net[9]等)直接估计清晰图像,常会出现雾气残留、颜色失真、细节丢失等问题.因此,针对去雾问题合理对网络进行优化非常必要.
本文针对去雾任务设计一种基于注意力特征融合的图像去雾算法,该算法比现有算法在图像去雾方面效果更好,尤其是在图像细节和保真度的恢复方面.本文工作主要贡献如下:
1) 为解决以往雾气残留、颜色失真的问题,本文结合通道注意力和像素注意力设计一种特征融合模块,该模块利用不同通道方向的特征所包含的加权信息不同,以及雾霾在不同图像像素上的分布不均匀的特点,从内容和风格两方面关注图像的重要信息,为处理不同浓度的雾气提供了灵活性;
2) 为解决去雾后图像细节丢失问题,本文在解码器中加入增强模型,设计一个新的解码器作为图像恢复模块,通过“增强-操作-减去”(strength-operation-subtract,SOS)的策略,使恢复的图像细节更明显;
3) 本文采用混合损失函数的形式,将平滑L1损失和结构相似性(SSIM)损失相结合,从像素角度和图像结构本身进行网络参数的训练,从而恢复出更高质量的图像.
在图像应用于高级视觉任务前,需要先对图像进行增强等预处理操作,而图像去雾的目的是从模糊的图像中恢复一个干净的场景,因此,对图像去雾技术的研究非常必要.根据雾图的成像原理,现有方法[2-3,10]通常通过大气散射模型对模糊图像I进行建模,用公式表示为
I(x)=J(x)t(x)+(1-t(x))A,
(1)
其中J(x)表示无雾场景的图像,A表示环境光强度的全球大气光强,t(x)表示透射率图像,x表示像素位置.该模型表明了在不确定大气光强A和透射率图t(x)准确值时,图像去雾是一个不适定的问题.
传统方法通常使用强先验[11-14]或通过附加约束恢复透射率图像、全球大气光强和场景半径[11-15].Fattal[11-12]设计了一种通过最大化局部对比度的方法恢复出清晰的图像,假设无雾图像的对比度高于有雾图像,从而利用表面阴影信息估计透射率图像; He等[13]提出一种假设,对于无雾图像总会有且至少一个通道的像素值极低,故设计了暗通道先验的图像去雾方法; 由于给定的RGB空间中像素通常是非局部的,Berman等[14]在图像去雾前设计了一种有效的非局部路径,由于这些先验和假设是针对特定场景和相应大气条件提出的,因此当先验和假设不成立时,这些去雾方法效果极不理想.
为解决这些问题,目前已提出了许多基于深度学习的去雾方法[2-6,16-18],如Cai等[2]提出了一种端到端的去雾网络DehazeNet,该方法将有雾图像作为输入,输出其透射率图,最后利用大气散射模型恢复清晰图像; Li等[3]提出了AOD-Net方法,该方法重新推导大气散射模型,可直接通过一个轻量级的CNN生成去雾后的图像; Ren等[4]提出了MSCNN方法,该方法首先使用大尺度网络估计整体传输图,然后用小尺度网络进行细化,在一定程度上避免了图像细节丢失的问题; Zhang等[5]提出了DCPDN方法,该方法是一种密接连接金字塔去雾网,用来联合估计大气光、透射率图和无雾图像,但由于大气光反照率的模糊性,当估计的大气光或透射图不准确时,恢复的图像会出现去雾不完全、颜色失真等问题; 还有的算法是基于一些通用领域的网络体系结构,未做出明显修改.但如果一个深度的去雾网络,只是简单地堆叠更多层或使用更宽层对显著的性能增益没有效果.因此,为图像去雾问题量身定制网络模型具有重要意义.
本文基于注意力机制和增强策略对U-Net[19]网络进行改进,由于U-Net网络没有全连接层,故下采样过程会导致空间信息丢失.为解决该问题,本文提出一种结合注意力机制的特征融合模块,该模块可以保留网络浅层的特征信息并将其传递到深层.而且该模块可自适应地学习获得权重,然后根据特征图的重要程度赋予不同的权重,比直接指定权重的网络效果更好.同时,将图像增强策略[20-22]应用于图像去雾,在网络的解码器中加入增强模型作为网络的图像恢复模块,通过逐步细化上一次迭代的中间结果对去雾后的图像进行增强.实验结果表明,本文提出的网络可以在保留高分辨率特征空间信息的同时,利用非相邻特征进行图像去雾,并且效果表现良好.
本文提出一种类似U-Net网络结构的图像去雾算法,将注意力机制[23]和“增强-操作-减去”增强策略[22]加入到网络中.该算法的网络结构如图1所示.由图1可见,该算法的网络结构仍是“编码器-解码器”形式,整体由3个模块组成,分别是编码器模块、特征转换模块和解码器模块.在本文算法中,首先使用卷积神经网络提取图像中多个尺度的特征图,采用跳跃连接的方式将不同尺度的特征图进行融合,使最终得到的特征图中既包含深层特征,又包含浅层特征,从而提高算法对特征的表达能力.同时,在网络中加入由通道注意力子模块和像素注意力子模块组成的特征融合模块,使网络更关注不同浓度图像的重要信息通道.此外,本文还重新设计了网络的解码器,加入了SOS增强模型,对恢复图像的纹理细节有更好的效果.
图1 本文算法网络结构Fig.1 Network structure of proposed algorithm
如图1所示,该网络编码器模块包含4个卷积层和4个下采样层.在第一个卷积层中,滤波器大小设置为11×11像素,其余卷积核大小为3×3,步长为1,该尺寸的卷积核可在有效提取特征的同时,减少网络参数,从而提高网络的执行效率.每执行一次操作后通道数c将变为前一层特征图的2倍,此外,在每个卷积操作后都添加了一个ReLU激活函数.在下采样过程中,采样核的大小为2×2,即特征图经过一次下采样操作后,特征图的宽W和高H均变为原来的1/2,相当于一个核大小为2×2的平均池化操作.特征转换模块由18个两层的残差块组成,卷积核大小均为3×3,卷积的步长始终保持为1,激活函数仍为ReLU.解码器模块类似于编码器结构,该卷积层的大小仍然为3×3,步长为1,且通道数变为原来的1/2.解码器与编码器操作相反,解码器的上采样层顺序恢复图像细节,最终得到去雾后的清晰图像.
由于大多数图像去雾网络对图像的特征未做出明显区分,因此不能很好地处理雾霾分布不均匀和加权通道的特征图像.本文根据注意力机制原理设计了一个特征融合模块,该模块由通道注意力(channel attention,CA)和像素注意力(pixel attention,PA)组成,二者顺序连接、分级处理,如图2所示.该方法不仅扩展了卷积神经网络的表达能力,而且从通道和信息两个维度进行考虑,为处理不同浓度的雾气提供了额外的灵活性,关键是可以按照特征图的重要程度生成不同的权重.由图2可见: 通道注意力模块包含一个平均池化层Pooling、两个卷积层Conv、两个非线性激活函数ReLU和Sigmoid; 像素注意力模块包含两个卷积层Conv、两个非线性激活函数ReLU和Sigmoid.
图2 注意力特征融合模块Fig.2 Attention feature fusion module
2.2.1 通道注意力模块
通道注意力模块主要关注不同通道特征的不同加权信息.首先,利用全局平均池法将全局空间信息引入到信道描述符中:
(2)
其中Xc(i,j)表示第c个通道Xc在(i,j)处的值,Hp为全局池化函数.其次,特征图的大小从C×H×W到C×1×1,为得到不同通道的权值,特征通过两个卷积层激活函数Sigmoid和ReLU:
CAc=σ(Conv(δ(Conv(gc)))).
(3)
最后,按元素顺序将输入Fc与通道CAc的权值进行对应元素相乘:
(4)
2.2.2 像素注意力模块
考虑到雾霾在不同图像像素上的分布不均匀,本文加入了像素注意力模块,使网络更关注雾霾的像素及高频图像区域等信息特征的位置.
与通道注意力相同,本文使用激活函数ReLU和Sigmoid将输入F*(CA的输出)直接输入到两个卷积层中,形状由C×H×W变为1×H×W:
PA=σ(Conv(δ(Conv(F*)))).
(5)
(6)
SOS增强模型是一种增强算法的变体.经实验证明,该算法在相同场景的图像上有更好的信噪比,同时减少了噪声.因此,本文将该原理应用于图像去雾中,主要原理是根据 “增强-操作-减去”的方法进行图像去雾[20-22],即基于之前估计的特征图像对当前要增强的图像进行细化处理,使最终去雾后图像中雾的浓度更小,图像细节更明显.综上,对于图像去雾,增强模型可表示为
(7)
本文将解码器视为无雾图像的恢复模块,逐步完善从特征转换模块中输出的特征图.将提出的增强模型引入解码器中,基本结构如图3(A)所示.该方法是在第n级增强模型中根据上一级上采样特征图jn+1,用编码器下采样过程中得到的特征图in加强它,并且通过细化单元生成增强特征jn,用公式表示为
(8)
为保证算法的完整性,本文将3种替代模型与本文增强模型进行对比.模型1[20]如图3(B)所示,用公式表示为
(9)
与本文增强模型相比,该细化单元未充分利用特征图in,与上采样特征(jn+1)↑2相比,该特征包含了更多的结构和空间信息.模型2[24]如图3(C)所示,该模型来自特征金字塔网络(FPN)的金字塔模块,用公式表示为
(10)
该模型忽略了细化单元对上一级的上采样特征(jn+1)↑2.模型3[19]如图3(D)所示,本文评估了原始U-Net网络的解码器模块,该模块连接了上采样增强特征图(jn+1)↑2和模块中潜在特征图in,用公式表示为
(11)
图3 4种不同增强模型Fig.3 Four different enhancement models
本文在训练过程中采用混合损失的形式训练网络参数,由于当前处理的是图像去雾任务,故选择平滑L1损失和结构相似性损失.平滑L1损失通过定量描述有雾图像与真实图像之间的差异,可有效防止梯度爆炸,其定义为
(12)
(13)
由于平滑L1损失由像素的角度降低去雾图像的误差,考虑到恢复图像的细节,因此在训练时引入了结构相似性损失函数.SSIM损失函数衡量了去雾图像与清晰图像的结构误差,其定义为
LS=1-SSIM(Ide,Igt),
(14)
L=α1L1+α2LS.
(15)
本文实验是在图形工作站上实现的,采用Python编程语言设计系统模型,实验平台采用Intel (R) Xeon CPU E5-2620 v4 @2.10 GHz,GPU为NVIDIA Geforce RTX 2060.实验中采用Adam优化器作为模型训练的优化算法,其中β1和β2分别采用默认值0.9和0.999,批处理大小为32.对于每次迭代,初始学习率设为10-4,并采用余弦淬火函数调整学习率.
从真实世界中采集大量的无雾图像及相对应的有雾图像通常非常困难.因此,本文算法采用公开数据集RESIDE[25]进行训练,在数据集RESIDE中选择9 000个室外模糊/清晰图像对和7 000个室内图像对作为训练集.为扩充实验训练数据,在[0.5,1.0]内用3个随机比例调整每对图像的大小.测试部分是在RESIDE测试集的子集SOTS上进行,包含了500张室内和室外的有雾图像.为进行比较,所有对比算法均在RESIDE训练集上进行训练,在SOTS测试集上进行评估.
由于主观的判断不能完全说明本文算法的有效性,为与现有的去雾方法进行性能对比,本文采用峰值信噪比(PSNR)、结构相似性和图像信息熵(information entropy)量化去雾图像的恢复质量.
峰值信噪比是目前使用最普遍的一种图像客观评价指标,用来评价一张图像在压缩后和原始图像相比质量的好坏.PSNR值越大,表明效果越好,即去雾后图像越接近于无雾图像.结构相似性是分别从两张图像的亮度、对比度、结构三方面度量图像的相似性,SSIM值越大,表明去雾图像的失真程度越小.图像信息熵用来衡量图像信息量的多少,图像的细节越丰富,所得到的信息熵越大,表示去雾图像效果越好,细节越明显.
为验证本文算法的有效性,将本文去雾算法与4种目前比较流行的去雾算法进行定性和定量的比较,对比算法包括DCP[13],MSCNN[4],GCA-Net[25]和DehazeNet[2]算法.为公平地进行比较,所有算法均采用与本文算法相同的环境进行训练,然后在数据集SOTS以及真实雾图上测试各算法的性能.
3.4.1 主观分析
1) 在合成数据集上实验.首先,将本文算法与DCP,MSCNN,GCA-Net和DehazeNet 4种不同的去雾算法在数据集SOTS上进行定性对比,实验结果如图4所示.
图4 不同算法在数据集SOTS上的去雾效果Fig.4 Dehazing effect of different algorithms on SOTS dataset
图4中上面三行是室内结果,下面三行是室外结果.由图4可见: DCP算法在图像天空区域较大时无法准确估计透射率和大气光强,使去雾后的图像比真实图像暗,且产生了严重的色彩畸变; MSCNN算法保留了图像原有颜色的同时,在图像表面也留了一层薄雾,不能完全去除雾霾,因此去雾后结果图像亮度较低; GCA-Net算法恢复的图像与真实场景图像相比,亮度过于明显且图像表面仍存在残留的雾气; 而DehazeNet算法对纹理、边缘和蓝天等高频细节信息处理的效果不好,出现了失真情况; 相比之下,本文算法中加入了由通道注意力和像素注意力组成的特征融合模块,可以区别处理不同的通道和像素信息,从内容和风格两个维度进行处理,更好地保留了图像原有的颜色,同时对图像中的重要信息赋予更多的关注,且本文算法的解码器部分加入了增强模型,能较好地利用下采样得到特征图对恢复的图像进行增强,同时清晰地保留了图像中的细节,减少了颜色失真.
2) 在真实雾图上实验.为验证本文算法在真实场景中的去雾效果,将本文算法与上述4种对比算法在真实场景有雾图像上进行定性对比,实验结果如图5所示.通过选取不同算法针对真实有雾图像处理后的同一位置进行比较.由图5可见,结果与合成数据集上的结果基本一致.DCP算法在先验知识估计不准确时仍会产生严重的颜色扭曲,如天空和女孩的脸; 对于MSCNN,GCA-Net,DehazeNet这3种算法,去雾的结果仍然是雾霾去除不完全,有残留的雾气,图像亮度过亮或者过暗,主要原因是算法平等的对待图像中的通道和像素信息.图6为不同算法对真实有雾图像去雾细节的对比.由图6可见,相比之下,本文算法结果中可以发现第一行图像深处隐现的塔,并且第二行图像路面纹理也更清晰.这也更好地证明了本文算法加入注意力机制和增强模型的有效性,使得该算法可以有效去除不同浓度的雾,同时又可以保留图像细节,较好地保持图像的色彩不失真,视觉效果良好.
图5 不同算法对真实有雾图像的去雾效果Fig.5 Dehazing effect of different algorithms on real foggy images
图6 不同算法对真实有雾图像去雾细节的对比Fig.6 Comparison of dehazing details of different algorithms on real foggy images
3.4.2 客观分析
将本文算法与DCP,MSCNN,GCA-Net,DehazeNet 4种算法在数据集SOTS上进行定量对比实验,并对得到的PSNR值取平均,实验结果列于表1.由表1可见,根据3个评价指标PSNR,SSIM和图像信息熵,本文算法和其他4种算法对比效果都是最好的.DCP算法表现不佳,而另外3种使用深度学习CNN恢复无雾图像的方法在未正确估计大气光时效果较差,相对比深度学习端到端的网络在直接恢复无雾图像时较间接恢复的方法可以产生更好的效果.但上述方法没有很好地针对去雾问题进行优化,相比之下,本文算法将注意力机制和增强策略相结合更适合去雾任务.
此外,本文将RESIDE训练集按照不同百分数输入网络进行试验,并绘制了PSNR和SSIM的曲线,结果如图7所示.该曲线反映了在训练集不充足时5种算法的去雾结果,由图7可见,训练集数量越多算法的处理效果越好,但在初始训练集较少时,本文算法仍是5种算法中效果最好的.
表1 不同算法在相同评价指标上的对比结果
图7 5种算法在控制训练集数量时的对比结果Fig.7 Comparison results of five algorithms when controlling number of training sets
为进一步验证本文算法的优越性,对本文的注意力特征融合模块和增强模型进行消融实验,其中基线方法都是与本文算法在相同配置下进行训练的.
本文进行两项消融实验,第一项消融实验是验证本文增强模型的有效性,将本文2.3节中提到的3种增强模型与本文算法在数据集RESIDE上进行评估,结果列于表2.由表2可见,模型1网络性能最差,模型2和模型3的PSNR值较接近,相比于模型1的结果约提高了1 dB,而本文增强模型相比于其他模型性能明显提高,是4种增强模型中效果最好的,表明本文增强模型更适合去雾问题.
表2 不同增强模型的对比实验
第二个消融实验是验证本文算法相对于基准算法的有效性,将带有编码器-解码器结构的PFFNet网络作为本文的基准算法进行消融实验,结果列于表3.其中,P表示PFFNet,S表示增强模型,A表示注意力特征融合模块.由表3可见,通过对比实验1,2和3,4表明,引入本文算法中的增强模型进行改进后,相比于原算法PSNR值分别提高了1.76 dB和1.26 dB,从而再次验证了本文引入增强模型的有效性; 通过对比实验1,3和2,4表明,引入注意力机制对算法进行改进后,相比于改进前的算法PSNR值分别提高了2.87 dB和2.37 dB,从而验证了本文设计的注意力特征融合模块的有效性,且适合图像去雾任务.实验结果表明,本文算法相比于基准算法在图像去雾问题上更有效.
表3 不同配置在数据集SOTS上的测试结果对比
综上所述,为改善恶劣环境下雾霾天气对成像质量的影响,本文提出了一种基于注意力特征融合的图像去雾算法.该算法在跳跃连接过程中引入注意力机制原理,通过结合通道注意力和像素注意力设计了一种新的融合策略,可以更好地针对特征图的重要程度进行处理,同时在本文网络解码器中引入增强模型以更好地恢复图像细节特征.本文采用混合损失函数的形式在公开的数据集RESIDE上对模型进行了训练,并且利用训练好的模型测试数据集SOTS.实验结果表明,本文算法在图像细节和颜色保真度的恢复方面具有较大优势,且优于一些目前较先进的算法,恢复后的图像为后续一些高级视觉任务如目标分类、识别等提供了便利条件.