张 骞, 陈紫强, 姜弘岳, 赵玖龙
(桂林电子科技大学信息与通信学院,广西 桂林 541004)
在雾、霾等恶劣的天气条件下,室外拍摄设备获得的图片质量会受到不同程度的影响,不利于室外视觉处理,如自动驾驶,交通监控等高级计算机视觉任务[1]。图像去雾算法通常分为基于先验信息的去雾方法和基于深度学习的去雾方法。基于先验信息的去雾方法旨在利用先验知识对大气散射模型中的介质传输矩阵和大气光值进行求解,获得去雾后的图像[2]。He等[3]提出了一种基于暗通道先验原理(Dark Channel Prior,DCP)的去雾方法,通过引导滤波细化透射率恢复图像。Zhu等[4]提出一种基于颜色衰减先验(Color Attenuation Prior,CAP)的图像去雾算法。张竞阳等[5]提出了一种采用暗态点光源模型的夜间去雾算法,结合改进的大气散射模型得到去雾图像。何惜琴等[6]提出一种基于YUV颜色模型和导向滤波的图像去雾算法。尽管基于先验信息的去雾方法取得了一定的成功,但不能适应所有的实际场景,部分情况下甚至会出现颜色失真的情况[7]。
随着人工智能领域的不断发展,基于深度学习的图像去雾算法引起了更多人的关注。Cai等[8]提出了Dehaze-Net去雾网络,该模型根据大气散射模型输出无雾图像。Li等[9]提出了一个轻量级、多尺度融合的去雾网络(All-in-One Network,AOD-Net),对变换的大气模型参数进行估计,计算得到去雾后的图像。Qin等[10]提出了一种结合注意力机制的残差网络(Fusion Feature Attention Network,FFA-Net),将提取的特征传递到重建部分和全局残差学习部分,输出去雾后的图像。由于AOD-Net网络本身的结构设计,无法充分提取图像的特征进行学习,导致去雾后图像的质量偏低。
本文提出了一种改进的AOD-Net去雾算法,在保持快速去雾的同时,提高网络整体的去雾能力。对部分卷积层的激活函数进行位置归一化(Positional Normalization,PONO),引入一种矩连接函数(Moment Shortcut,MS)[11]。在网络的特征增强部分中加入注意力模块,对不同的通道特征进行加权操作,最终实现图片的快速去雾。
大气散射模型常被用来生成含雾图像[12-13]:
式中:x表示图像像素点;I(x)表示含雾图像;J(x)表示无雾图像;A是全局大气光值;t(x)表示介质传输矩阵,
β表示大气散射系数;S(x)表示成像设备与物体之间的距离。
文献[9]中使用具有单变量和偏差的非线性变化对大气散射模型进行描述,将介质传输矩阵t(x)与全局大气值A统一到一个方程中进行求解,式(1)可重写为
式中,b为常数,默认取1。通过联合估算透射系数和大气光值,可以避免由于白色区域或天空区域的影响而导致大气光值估算较大的问题[14]。
AOD-Net由K值估计模块和图像复原模块两部分组成,如图1所示。
图1 AOD-Net算法流程图
AOD-Net网络将有雾图像输入K值估计模块,即通过一系列的卷积层提取图像中的特征信息,对式(4)中的K(x)进行估计;然后通过式(3)计算,得到无雾图像J(x)。
AOD-Net根据大气散射模型,采用基于卷积神经网络的网络架构,设计多尺度的卷积层,并对图像的特征信息进行拼接融合,网络结构如图2所示[9]。
图2 AOD-Net网络结构
图2中:Input代表输入图像;Conv和k*k*N分别表示卷积层和卷积核的相关参数,其中k表示卷积核的大小,N表示卷积核的个数;Concat表示特征拼接操作,Output表示去雾后的图像。AOD-Net分别使用5个大小不同的卷积核进行卷积操作,提取多尺度的特征信息。Concat1连接了来自Conv1和和Conv2的特征,类似地,Concat2连接了Conv2和Conv3的特征,Concat3对Conv1,Conv2,Conv3和Conv4的特征进行拼接。随后,使用Conv5估计K值,代入式(4)中计算得到去雾后的图像。
本文提出的改进AOD-Net去雾网络如图3所示,该网络包含特征提取模块、特征增强模块和图像恢复模块3个部分。输入1张有雾图像,依次经过3个部分,获得去雾后的清晰图像。
图3 改进的AOD-Net网络结构
特征提取部分由多个卷积层和拼接层组成。由于归一化操作可以提高网络的收敛速度,改善数据分布不集中的问题[15],本文在Conv1和Conv2的位置进行PONO-MS处理,对通道中每个位置上的激活函数进行独立的归一化,并保留计算得到的统计信息,输入到后续的网络层Conv3和Conv4,作为重构变换的参数进行处理。特征增强部分由金字塔注意力(Pyramid Squeeze Attention,PSA)模块[16]组成,在该模块中,将输入的特征图分为4个分支,使用不同尺寸的卷积核进行卷积操作,然后提取不同尺度比例的权重信息,计算得到加权融合特征图。随后,经过图像恢复部分,对K值进行估计,根据改进的大气散射模型恢复无雾图像。
位置归一化通过提取特征图的平均值与标准差,对通道上每个位置的激活函数进行独立的归一化,有利于提高网络模型的鲁棒性和收敛速度[11]。对神经网络中的特征图X∈RB×C×H×W进行归一化,其中R为实数空间,B为图像每个批次的数量,C为图像通道数,H为图像高度,W为图像宽度,则有:
式中:μ和σ分别表示该层图像的均值和标准差;γ和β分别表示该层可学习的仿射变换参数缩放和偏移;ε是一个极小的常数(默认ε=10-5)。
为避免网络对通道矩信息的重复学习,选择保留提取的矩信息,并输入到后续的网络层,如图4所示。由式(6)和(7)计算得到(μ,σ),输入后续的网络层F(x)作为重构变换中的(γ,β),来重构还原归一化的分布,最后得到输出
图4 PONO-MS结构图
文献[16]中提出一种轻量级、高效的注意力模块PSANet,是基于SENet[17]的一种改进模型,可用于抑制不太重要的特征信息,使得模型可以自适应地关注上下文中的重要区域。PSA模块的结构信息如图5所示。该模块包括以下步骤:
图5 PSA结构图
(1)采用多分支并行的方式提取特征信息。利用多尺度卷积核提取每个通道的空间信息
式中:n为分支个数;ki为卷积核的尺寸;Gi为每个分支的通道数;X为输入的特征信息。
(2)计算通道的权重向量。利用SENet从空间信息Fi中提取不同尺度比例的特征信息,计算得到面向通道的注意力权重向量
(3)计算通道权值。利用Softmax函数对通道注意力向量进行计算,获得每个通道对应权值Ai,以串联的方式拼接融合计算式如下:
(4)输出加权特征信息。将权值与对应的通道进行点乘运算,得到加权后的多尺度信息特征图
(1)数据集。本文使用合成雾图数据集RESIDE[18]中的OTS(Outdoor Training Set)数据集,SOTS(Synthetic Objective Training Set)数据集和HSTS(Hybrid Subjecive Testing Set)数据集。从OTS中随机选取15000张有雾图像,按照0.95∶0.05的比例划分训练集和验证集。测试时使用SOTS数据集(Outdoor)和HSTS数据集。其中,Outdoor包含500张合成雾天图像,HSTS包含10张真实雾天图像。
(2)实验环境。实验在GPU为NVIDIA Quadro P2000环境,操作系统为Windows10,采用Pycharm编译器,Pytorch深度学习框架。
(3)参数设置。使用随机梯度下降和反向传播算法,学习率初始化为1×10-4,使用批尺寸为4的Adam优化器,其中动量参数β1和β2分别设置为0.9和0.999,使用均方误差(MSE)损失计算误差,迭代次数为15次。
在实验部分,使用峰值信噪比[19](Peak Signal-to-Noise Ratio,PSNR)和结构相似性[20](StructuralSIMilarity,SSIM)2个指标来衡量结果的有效性。PSNR的值取决于原始雾图与清晰图像对应像素的误差,其值越大,代表恢复的无雾图像清晰度越高。SSIM从亮度、对比度和结构3个方面对图像的相似度进行评估,其值越大,代表图像失真越小。
为了验证所提出模型的有效性,本文选择一些具有代表性的DCP[3]、CAP[4]、Dehaze-Net[8]和AODNet[9]传统图像去雾方法和本文基于深度学习的轻量级去雾方法进行比较。表1是各个算法在SOTS(Outdoor)数据集上的客观评价结果。
表1 客观评价结果
从表1可以看出,本文的算法相比于其他的算法在SOTS(Outdoor)测试集上的客观评价指标更优异。DCP和CAP均为传统去雾算法,去雾效果一般,本文算法嵌入了注意力模块,增强了提取特征的能力,使得图像更加还原。
从测试集SOTS和HSTS中选取部分室外含雾图片进行主观质量评价。由图6可见:DCP算法的去雾结果中部分存在光晕现象,复原后的图像更倾向于变暗;CAP算法去雾的过程中,出现了颜色不均匀的现象;AOD-Net去雾后的图像有些许的烟雾残留,不能很好地复原图像;Dehaze-Net在雾较浓的条件下,会出现一定的颜色偏差;本文算法基于AOD-Net,部分图片仍存在去雾不彻底的问题,但在亮度方面有所提高。
图6 不同算法对去雾结果对比
图7展示了真实雾天场景下的去雾效果图,由图可见:DCP算法去雾后的图像仍有少许雾残留,去雾效果不佳;CAP算法得到的图片出现了色差的现象;AOD去雾后的图片存在残留的雾,无法彻底去雾;Dehaze-Net去雾后的图片天空部分出现了光晕;本文算法去雾后的图片整体清晰,没有出现颜色失真等现象,相比于其他轻量级的去雾算法,整体的去雾效果较好,证明了本文方法的有效性。
图7 不同算法对真实雾图去雾效果对比
实验中,上述几种算法与本文算法的模型大小和在测试集的平均处理时间进行了统计和对比,结果如表2所示。表2中,不计算DCP和CAP传统方法的模型大小,可见本文的方法由于加深了网络结构,牺牲一定的内存空间,模型相比于其他算法有所增加。在推理时间方面,本文方法略低于AOD-Net,平均推理时间为4.3 ms,优于其他的算法,满足实际应用对去雾实时处理的需求。
表2 不同算法的耗时和模型大小对比
本文提出改进AOD-Net的轻量级图像去雾模型,在采用位置归一化、矩连接函数和对不同的通道进行加权操作方法,并在RESIDE数据集上的大量实验表明:本方法在单幅图像去雾的平均时间为4.3 ms,PSNR和SSIM分别达到了25.955和0.950,均优于对比方法。同时,本模型的轻量级特性可以使其作为图像预处理模块嵌入到目标检测等神经网络中,从而更广泛应用于高级计算机视觉任务如:行人检测、红绿灯识别和车辆检测等。