段雅童,许光宇
(安徽理工大学 计算机科学与工程学院,安徽 淮南 232001)
在恶劣的天气条件下,大气中存在的悬浮颗粒物会吸收和散射太阳光,使户外拍摄的照片失去对比度和色彩保真度,降低了场景的真实性,对高级计算机视觉任务产生了极大的不利影响。因此,图像去雾具有重要的现实意义。目前,图像去雾算法可分为3类,即基于图像增强的去雾算法、基于图像复原的去雾算法和基于深度学习的去雾算法。
基于图像增强的去雾算法是通过增强图像对比度和强化图像信息来获得干净图片,其典型的算法有基于Retinex理论的复原法[1]、直方图均衡化法[2]和小波变换法[3]等。但由于该类算法并未考虑图像有雾,恢复后的图像易缺失部分细节信息。
基于图像复原的去雾算法依赖大气物理散射模型和先验知识恢复清晰的图片,其经典算法有基于暗通道先验(Dark Channel Prior,DCP)的图像去雾算法和基于颜色衰减先验(Color Attenuation Prior,CAP)的图像去雾算法[4-5]。DCP算法认为,大多数非天空区域内至少有1个颜色通道的像素强度接近于0,并以此来估计传输图,但其估计雾浓度偏高,且对于含有大量天空区域的有雾图像的去雾效果不理想。CAP算法利用亮度和饱和度之间的差异来估计雾的浓度,雾浓度越大,差异越大,并由此推算出透射率值,再利用大气散射模型实现对有雾图像的去雾处理。
基于深度学习的去雾算法可分为非端到端的去雾算法和端到端的去雾算法。非端到端的去雾算法首先利用卷积神经网络估计大气光值和透射率值,然后依赖大气散射模型恢复清晰图像[6]。多尺度卷积神经网络(Multi Scale CNN,MSCNN)[7-8]由粗尺度卷积网络和细尺度卷积网络组成,实现了传输图由粗到细的估计。多尺度融合的一体化网络(All in One Dehazing Network,AOD-Net)[9]通过使大气物理散射模型变形,将估计大气光值和透射率变为只需估计透射率和大气光照的合并值K。非端到端的去雾算法虽取得了更好的去雾效果,但过于依赖大气散射物理模型和先验知识,会因参数估计不均衡产生累计误差,使得去雾后的图像色彩失真。端到端去雾网络无需依赖大气散射物理模型,直接从有雾图像生成无雾图像。Dong等[10]提出了基于融合鉴别器的生成对抗网络单图像去雾算法(FD-GAN),有效提高了去雾效果,但景深深处处理后的图像会出现颜色突变。Li等[11]提出了增强型Pix2pix网络(Enhanced Pix2pix Dehazing Network,EPDN),去雾效果比清晰图片更亮。Yi等[12]提出的多尺度拓扑网络(Multi-scale Topological Network,MSTN)实现了不同尺度特征的选择和融合,很好地去除了图像的雾霾,但含有浓雾的景深深处会有残雾遗留。
针对以上问题,本文提出一种基于SKNet(Selective Kernel Networks)的增强型Pix2pixHD去雾方法,以生成的对抗网络(Generative Adversarial Network,GAN)为主干网络,并引入SKNet网络作为增强器,对生成器最终输出的图片进行加强,使处理过的图像更接近真实图片。
SKNet网络结构图如图1所示。在受到不同刺激时,其自身的接受域(Receptive Field)会动态调节,对卷积核执行注意力机制,即让网络动态选择合适的卷积核。该网络通过Split,Fuse和Select等操作使神经元能够自适应地调整感受野大小[13]。
图1 SKNet网络结构图
1)Split操作:使原feature map分别通过不同尺度的深度卷积和空洞卷积生成feature map,即U1和U2。
2)Fuse操作:将U1和U2的feature map进行特征相加(Element-wise Summation),以整合所有分支的信息,然后通过全局平均池化嵌入全局信息S,再通过全连接得到向量Z,实现精确和自适应的选择。
式(1)~(2)中,H为特征图的高度;W为特征图的宽度;Fgp为全局平均池化函数;Ffc为全连接层函数;δ为ReLU函数;B为Batch Normalization;w表示d×c维,w∈Rd×c,d表示为d=max(c/r,L),其中r为减速率,L为d的最小值。
3)Select操作:对向量Z进行softmax操作,得到ac和bc,再将a和b与原来的特征U1和U2相乘,并将结果进行特征相加得到V。因为ac和bc的函数值总和为1,实现了对各分支feature map设置权重。
(3)
(4)
Vc=ac·U1c+bc·U2c
(5)
式(3)~(5)中,A,B∈Rd×c;Ac∈R1×d,表示A的第c行;ac表示a的第c个元素;Bc和bc同上。
传统的卷积结构可以定义为:
(6)
式(6)中,p0为输出特征图的每个点,与卷积核中心点对应;pn为p0在卷积核大小范围内的每个偏移量;R为各分块的索引值;w(pn)为权重;x(p0+pn)表示为原始图。
可变形卷积是在公式(6)的基础上,在邻域内的每个点都引入了1个偏移量△pn。△pn是通过端到端的学习进行迭代更新的,初始值是随机数,每次迭代之后产生新的值,具体值不确定。可变形卷积公式为:
(7)
加入偏移量后的坐标位置通常不是整数,并不对应feature map上实际存在的特征点,因此需要使用插值的方法来获得偏移后的特征值。通常采用双线性插值法,其原理是分别在X轴和Y轴方向对图像进行线性插值,得到待采样图像的像素值。
采用GAN作为主干网络,由多尺度生成器和多尺度鉴别器组成基于SKNet的增强型Pix2pixHD网络,其结构图如图2所示。
图2 基于SKNet的增强型Pix2pixHD网络结构图
生成器主要是从有雾图像中恢复出对应的清晰图像,不仅要去除雾,也要保留原有图像的结构以及颜色等细节信息。多尺度生成器采用UNet结构,由局部子生成器G1和全局子生成器G2组成,G={G1,G2}。G1和G2的结构相似,都由卷积层、残差层和反卷积层构成。G2的输入是有雾图像经过卷积层进行2倍下采样的结果,然后经过卷积核为7×7的卷积层,通道数变为32,再经过卷积核为3×3的卷积层,通道数变为512。结果输入残差块,最后再进行卷积核为3×3的去卷积操作,得到通道数为32的低分辨率特征图。G1对有雾图像分别进行卷积核为7×7和3×3卷积操作,通道数依次变为16和32。将G1两次卷积之后的结果与G2得到的结果进行特征相加输入残差块中,最后进行卷积核为3×3的去卷积操作得到生成器生成的高分辨率去雾图像。低分辨率生成器学习全局连续性,高分辨率生成器学习局部精细特征,因此生成的图片将同时具有局部和全局的真实性。
多尺度鉴别器就是将不同尺度的图像作为鉴别器的输入,然后将鉴别结果返回给生成器,依次指导生成器生成更清晰的图片。本文多尺度鉴别器由鉴别器D1和D2组成,鉴别器D1含有5个卷积核为4×4的卷积层,全连接层为1 024,最后使用sigmoid激活函数。D1和D2具有相同的结构,D1的输入为生成器生成的结果和对应的清晰图片,D2的输入是D1的输入在2倍下采样的结果。虽说鉴别器D1和D2有相同的结构,但在粗尺度下工作的鉴别器有大的接受域和更全局的图像视图,可以指导生成器生成全局一致的图像;而在细尺度上工作的鉴别器专门指导生成器产生更精细的细节。
由GAN得到的去雾图像虽然利用了多尺度特征,但仍缺乏细节信息。为了有效解决这一问题,本文引入SKNet网络作为增强器,其结构图如图3所示。增强器使得网络可以对不同尺度的特征进行自适应的选择和融合,且不会带来大量的冗余特征,有利于建立高效、准确的模型。此外,在增强块中还引入2个卷积核为3×3的可变形卷积层,对图像进行特征提取,使采样网格变得更加自由,提高模型的变换能力,从而更好地去雾。
图3 增强器结构图
为了优化网络,使用对抗损失(LA)、特征匹配损失(LFM)、感知损失(LVGG)和保真度损失(LF)作为总体目标损失函数。对抗损失和特征匹配损失使GAN模块学习全局信息,利用多尺度特征恢复原始图像。感知损失和保真度损失用来增强图像的细微特征,保持原始颜色信息。总体目标损失函数可以表示为:
LEP=LA+λLPM+λLVGG+LF
(8)
初始化生成器将有雾图像转换为无雾图像,而鉴别器的目的是区分图像的真伪。考虑到存在双尺度鉴别器D1和D2,将对抗损失表述为多任务学习损失,表示为:
(9)
(10)
通过引入基于鉴别器的特征匹配损失来提高对抗损失,使图像具有真实感。利用这种损失使生成器产生自然的多尺度统计信息,学习中间特征映射,实现真实图像与合成图像的匹配。特征匹配损失函数可以表示为:
(11)
(12)
为了保持感知和语义的保真度,使用感知损失函数来度量有雾图像和去雾图像之间的高度差异,公式为:
(13)
将无雾图像X与最终输出Y之间的欧氏距离作为保真度损失,公式为:
(14)
1)实验设置与数据集。算法的优劣不仅与图像特征的学习能力有关,也跟训练模型所采用的软硬件配置情况有关。在硬件配置方面,均采用型号为Intel CoreTM i9-9900K CPU的处理器、NVIDIA GeForce RTX 3080(10 GB)图像处理器等;在软件配置方面,均是在64位的Windows 10系统下通过CUDA11.0进行GPU加速,深度学习框架为Pytorch。采用批量大小为1的Adam优化器,初始学习率设为0.002,指数衰减率为(β1,β2)=(0.6,0.999),损失函数的超参数设λ=10。实验总共训练了100个epoch,每20个epoch将学习速率降低一半。训练结束时,损失函数下降到0.000 5时认为达到了很好的收敛指标。实验中,初始学习率与损失函数的超参数根据文献[13]设值,对指数衰减率进行多次调参。
本文选取有雾图像RESIDE数据集,由室内训练集(Indoor Training Set,ITS)、室外训练集(Outdoor Training Set,OTS)、综合客观测试集(Synthetic Objective Testing Set,SOTS)、真实有雾图像测试集(Real-world Task-driven Testing Set,RTTS)和混合主观测试集(Synthetic Objective Testing Set,HSTS)5个子集组成。实验选取ITS和SOTS进行训练和测试,并将本文方法与该数据集上的最新方法进行比较。其中,ITS数据集包含13 990张合成有雾图像,由1 399张清晰图像生成,其中设置每个通道大气A在[0.7,1.0]之间、β在[0.6,1.8]之间。SOTS测试数据集共500张室内与500张室外合成图像。采用峰值信噪比(PSNR)和结构相似性(SSIM)作为图像质量评价指标,其值越高图像去雾效果越好。不同指数衰减率对PSNR和SSIM指标结果的影响见表1。
表1 不同指数衰减率对PSNR和SSIM指标结果的影响
2)在合成数据集上实验。在合成数据集上进行测试,并与经典方法进行定量和定性比较。合成有雾图的实验结果如图4所示,去雾网络的PSNR和SSIM指标比较结果见表2。由表2可以看出,本文方法在PSNR和SSIM上都取得了最高值,其中在室内训练集ITS上,PSNR值相较于次高的EPDN提高了1.77 db。
(a) Input (b) DCP (c) AOD-Net (d) EPDN (e) Ours
表2 去雾网络的PSNR和SSIM指标比较结果 db
3)在真实数据上实验。为了进一步验证本算法的有效性,选取RESIDE数据集中的真实有雾图像作为自然雾图测试集,然后在自然雾图测试集上进行比较。真实有雾图的实验结果如图5所示。观察图5可知,DCP方法使天空区域亮度降低,并且出现色彩突变的现象;AOD-Net方法产生的图像边缘会出现伪影且去雾后的图像有较低的亮度;EPDN方法相较AOD-Net方法,去除雾霾效果较好,但仍存在对比度高的问题。相较之下,本文方法得到的去雾图像有更好的色彩效果和较少的伪影。
(a) Input (b) DCP (c) AOD-Net (d) EPDN (e) Ours
基于SKNet的增强型Pix2pixHD图像去雾算法在GAN网络之后引入SKNet网络作为增强器,充分利用了多尺度含有特征信息更全的特点,同时在增强器之前添加了可变形卷积,增强了模型的可变换能力。与经典的图像去雾算法在SSIM和PSNR 2个评价指标下进行比较,本文算法优于传统的经典去雾算法。