1. 引言
图像中蕴藏了大量的信息,在大数据时代的背景下,图像是人类不可或缺的传递信息的媒介。伴随着工业的发展,大气污染愈发的严重,导致了雾霾天气的频繁出现。在雾霾天气下,由于光的反射作用以及空气中雾霾颗粒的存在,使光在传入图像采集设备时能量衰减,导致采集的图像色彩暗淡、模糊不清、对比度低,大量的信息因为雾霾被掩盖。利用图像去雾技术消除雾霾,可以在一定程度上恢复图像的信息。图像去雾作为计算机视觉领域的低层次视觉任务,对后续的语义分割、目标识别等视觉任务具有重要影响。
目前国内外的去雾方法研究方向主要分为三类:基于图像增强的方法、基于物理模型的方法以及基于深度学习的方法。第一类基于图像增强的方法能够很好地改善图片的对比度信息、恢复图片的色彩信息,但是普遍对细节的处理较差,例如Pizer等在文献 [1] 中提出的自适应直方图均衡化的方法,Adelmann在文献 [2] 中提出的图像同态滤波的方法,Finlayson在文献 [3] 中提出的单尺度Retinex图像增强算法。第二类基于物理模型的方法,这里的物理模型主要指Narasimhan等在文献 [4] 中提出的大气散射模型,这类算法的关键在于依据一定的先验知识估计大气散射模型中的两个未知参数透射率和大气光照值,例如何凯明等在文献 [5] 中提出的暗通道先验去雾算法。第三类基于深度学习的方法近年来得到了越来越多的重视,该类方法主要通过搭建深度学习模型来实现图像去雾。蔡博仑等在文献 [6] 中提出了首个用于图像去雾的卷积神经网络模型Dehaze-Net。Dehaze-Net将先验信息融入网络模型的特征提取层中,通过卷积层和激励层提取图像信息,输出图像的透射率图,再根据大气散射模型恢复无雾图像。此外,基于深度学习的图像去雾方法近几年也得到了发展,Ren等在文献 [7] 中设计了一种多尺度卷积神经网络模型MSCNN用于图像去雾,Li等在文献 [8] 中提出了首个端到端的卷积神经网络模型AOD-Net。
Dehaze-Net模型在图像去雾中表现了良好的性能,经该模型去雾后的对比度高,无明显噪点,较为符合人眼的感知;且Dehaze-Net模型结构小巧,运行仅需占用很少的内存,方便移植到小型的设备。但在复杂的场景中,Dehaze-Net模型对边界信息的提取并不充分,去雾后图像的细节略有瑕疵;且在大面积的天空区域,一些去雾后的图片出现了颜色失真现象。本文针对这些问题,改进了Dehaze-Net,提出基于金字塔池化模块 [9] 改进的Dehaze-Net (Pyramid pooling Dehaze-Net, PD-Net)模型。PD-Net模型添加了金字塔池化模块(Pyramid Pooling Module, PPM)并额外引入了残差块。添加的PPM增强了模型聚合图像的全局信息的能力;引入的残差块抑制了梯度消失现象,使模型更快的达到收敛。实验结果表明,PD-Net模型去雾后的图像在大面积的天空区域更能保留原本的色彩,整体更符合人眼的感知。
2. 模型背景
2.1. 大气散射模型
在图像去雾领域,雾天图像的成像原因一般通过大气散射模型 [4] 来解释,大气散射模型具体地表示为:
, (1)
其中,
为在雾天采集到的图像在位置
处的像素值,
为未经过空气中雾霾粒子散射的真实图像在位置
处的像素值,A为大气光照值,
为场景透射率,可以表示为:
, (2)
其中
是大气散射系数,
为场景的深度。
将大气散射模型进行变换,可以得到逆大气散射模型:
。 (3)
由逆大气散射模型(3)可知,图像去雾的关键就是求得两个未知参数大气光照值A以及场景透射率
的值,带入公式即可恢复无雾清晰图像
。对于逆大气散射模型中三个未知数一个方程的情况,一般情况下只需求
的值,而A值可以先验理论进行估计,再对无雾清晰图像
进行求解。
2.2. Dehaze-Net模型
随着深度学习的发展,基于传统去雾算法中的先验特征,Cai等人 [6] 提出了Dehaze-Net模型。该模型用于估计场景透射率
,再通过暗通道先验理论 [5] 估计大气光照值A,将估计的A和
带入逆大气散射模型即可恢复无雾清晰图像。
Dehaze-Net由多层卷积层和池化层组成,在其中一些层后采用了适当的非线性激活函数。Dehaze-Net采用特征提取,多尺度映射,局部极值和非线性回归估计场景透射率
,具体结构如图1。
Dehaze-Net的第一层特征提取层采用了Maxout激活函数,Maxout激活函数从通道方向进行最大值滤波,通过提取最大值形成新的特征;受GoogLeNet [10] 中inception架构的启发,Dehaze-Net的第二层多尺度映射层使用不同大小的卷积核进行并行卷积运算,用于提取信息;根据卷积神经网络(Convolutional Neural Networks, CNN) [11] 的经典架构,使用最大池化可以增强模型鲁棒性,此外,最大池化与透射率局部一致的假设性一致,故Dehaze-Net的第三层采用最大池化运算;由于模型的输出为估计的透射率
,应该控制在(0, 1),为此,提出了BReLU激活函数(图2)作为Dehaze-Net的最后一层。

Figure 1. The architecture of Dehaze-Net
图1. Dehaze-Net结构图

Figure 2. Bilateral rectified linear unit
图2. 双向修正线性单元图
Dehaze-Net模型的训练数据使用无雾图像合成的有雾图像,模型使用学习的合成有雾图像与透射率之间的映射关系,对真实有雾图像的透射率进行估计,再根据暗通道先验理论以及逆大气散射模型恢复无雾清晰图像,Dehaze-Net模型去雾的一般流程见图3。

Figure 3. Process of using Dehaze-Net to remove fog
图3. Dehaze-Net去雾流程图
3. 本文模型
本文以Dehaze-Net为基础进行改进,提出PD-Net模型。PD-Net在Dehaze-Net的第一层特征提取层和第三层局部极值池化层之间通过跳跃连接加入残差块结构;将Dehaze-Net的第二层多尺度映射层的张量填充替换为反射填充;在第四层激活层之前加入金字塔池化模块。本章第一节介绍金字塔池化模块,第二节介绍残差块,第三节介绍PD-Net模型。
3.1. 金字塔池化模块
PPM [9] 可以进一步减少不同子区域间空间信息的丢失,它多尺度的池化操作,能够聚合不同尺度、不同子区域间的信息。在Zhao等 [9] 提出的金字塔场景解析网络(Pyramid Scene Parsing Network, PSPNet)中,PPM就表现出了良好性能。金字塔池化生成的不同层次的特征图最终被拼接起来,送入后续的网络以进行进一步的信息提取。金字塔池化模块的具体结构见图4。
3.2. 残差块
在残差块提出之前,梯度消失一直是深度学习里一个难以解决的问题。随着网络层数的增加,一些复杂的模型出现了梯度消失现象,导致模型的拟合效果反而不如简单的模型,严重时甚至无法训练模型。因此,神经网络的层数一直较少。直到何凯明提出了ResNet [12],神经网络的层数达到了152层。ResNet [12] 基于VGG19 [13] 网络进行了修改,并通过跳跃连接加入了残差块结构,残差块结构如图5。残差块的跳跃连接抑制了在深层网络中最容易出现的梯度消失现象;当网络出现退化现象时,跳跃连接能够使网络更容易学习到恒等映射。
3.3. PD-Net
对针对Dehaze-Net在复杂场景中对全局信息的提取不充分问题,本文提出了PD-Net。PD-Net在Dehaze-Net的基础上加入了PPM [9] 并额外添加了残差块 [12] 结构。PPM聚合了图像不同区域间信息,使模型能够更充分的提取图像全局信息。残差块结构有效的抑制了梯度消失和网络退化现象,减小了模型的训练难度。在Dehaze-Net的第二层多尺度映射层中使用反射填充替换0值填充;加强了边界信息的提取。
具体的结构见图6,各层的输入及输出见表1。

Table 1. The parameter settings of the PD-Net
表1. PD-Net各层结构表
PD-Net模型使用合成有雾图片进行训练。训练数据集包括加雾后的室内及室外的清晰无雾图片,使用大气散射模型对图片加雾,对每张图片分别加十次雾,将(0, 1)平均分为十个区间,每次加雾的
从十个区间里随机取值。模型的训练步骤如下:
第一步:制作数据集、构造PD-Net模型、构建损失函数和优化器。
第二步:将数据集中的合成带雾图片输入模型。
第三步:初始化模型参数,计算第二步中得到的输出与真实的
之间的损失函数。
第四步:根据损失函数,使用反向传播算法计算模型各参数的梯度,通过优化器更新模型的参数。返回第二步,直至损失函数最小。

Table 2. Quantitative results on RESIDE in terms of full-reference image quality assessment
表2. 全参考图像质量评估指标在RESIDE数据集上的定量结果

Figure 7. Defogging results on indoor synthetic dataset
图7. 室内合成带雾图片上的去雾结果图
4. 实验结果和分析
本文所有的算法及模型是在GPU型号为MX450、显存为2GB,系统为Windows10 x64的笔记本电脑上,通过Anaconda平台的Python语言,使用PyTorch、OpenCV、Numpy等第三方库实现的。
在本章中将通过定量的分析来验证PD-Net模型在图像去雾上的性能。本章使用的评估指标包括全参考图像质量评估指标PSNR和SSIM [15],PSNR可以表示为:
, (4)
其中MSE指原图像与处理后图像之间的均方误差。
此外,本文还将PD-Net与其他去雾方法应用到RESIDE数据集,并对去雾结果进行比较,分析各个算法的优劣性,包括基于对比度受限的自适应直方图均衡化去雾算法(Contrast Limited Adaptive Histogram Equalization, CLAHE) [15],基于单尺度retinex去雾算法(Single Scale Retinex, SSR) [3],基于暗通道先验的去雾算法(Dark Channel Prior, DCP) [5] 以及基于深度学习的Dehaze-Net去雾模型。

Figure 8. Defogging results on the outdoor real fog picture
图8. 室外真实有雾图片上的去雾结果图
表2展示了去雾方法的平均PSNR值和SSIM值,图7展示了各方法以及PD-Net模型在RESIDE数据集中的室内合成带雾图片上的去雾效果。从表2可以看到,PD-Net模型在实验数据集上得到了良好的平均SSIM值和PSNR值,仅次于DCP算法,但从实际效果上看,PD-Net模型的去雾效果明显优于DCP算法。从图7(c)可以看到,经过CLAHE算法去雾后的图片中的墙体和桌面存在大量噪声,图片不清晰;从图7(d)可以看到,经过SSR算法去雾后的图片整体偏白,去雾并不彻底,并且有过度曝光现象;从图7(e)可以看到,经过DCP算法去雾后的图片对比度低,在图中的墙体处有颜色失真现象,并在图中的柜门处存在噪声;从图7(f)可以看到,Dehaze-Net模型去雾后的图片细节恢复不错,但也存在颜色失真现象。通过放大观察图7(g)的细节,可以看到经PD-Net模型去雾后的图片细节更加完美,并且图片清晰明亮,没有明显的颜色失真现象,更加符合人眼的感知。
为了进一步分析PD-Net模型的去雾效果,本文还对RESIDE数据集中的室外真实有雾图片进行了去雾,见图8。可以看到,CLAHE算法去雾后产生了许多噪声;SSR算法导致了图片中出现了大量的空白区域;DCP算法对大面积的天空区域的处理效果不好,有颜色失真现象;Dehaze-Net模型和PD-Net模型的效果较好,但Dehaze-Net模型去雾后图片中的部分天空区域也出现了颜色失真现象。综上所述,PD-Net模型去雾效果的优势是明显的。
5. 结语
本文以Dehaze-Net为基础,引入金字塔池化模块及残差块,构造了PD-Net。实验证明,PD-Net模型对天空区域和边缘细节的处理效果较好,处理后的图片清晰明亮,质量高。经对比实验证明,PD-Net模型去雾效果较Dehaze-Net模型有明显的提升,并优于其余算法。
致谢
感谢胡建成老师在研究中提供的帮助,也感谢匿名的审稿人提出的宝贵意见。
基金项目
本研究由国家自然科学基金项目11901065资助。