一种基于多尺度卷积神经网络和分类统计的图像去雾霾方法
2020-05-07齐永锋李占华
齐永锋,李占华
(西北师范大学 计算机科学与工程学院,甘肃 兰州730070)
0 引言
雾霾中的悬浮颗粒具有散射和吸收的作用,使得室外图像呈现出较低的对比度和有限的可见性,从而导致在雾霾天采集到的图像质量较低,限制了图像在智能识别、目标监控、目标追踪等方面的应用。为使计算机系统能更好地识别和提取相关的图像特征,去雾霾技术成为计算机视觉领域的研究热点[1-5]。
目前图像去雾霾的方法大致分为两种:基于自适应对比度增强的方法[6-7]和基于透射率估计的方法[8-13]。前一种方法又分为全局增强的方法和局部化增强的方法,其中全局化增强的方法包括全局直方图均衡化[14]、Retinex[15]等。而局部化增强的方法包括局部直方图均衡化[16]、局部对比度增强方法[17]等。自适应对比度增强的方法虽然可以排除图像中的部分干扰信息,但未对雾霾天图像的成像原理进行分析,只是通过增强对比度去除雾霾,因而对雾霾严重的区域无法特殊处理。透射率估计的方法依据大气散射模型,从光学成像的本质上去除雾霾,通过图像退化基理和先验知识恢复无雾霾图像,去雾霾效果较好,因而得到了广泛的研究和应用。根据图像先验知识估计大气透射率,例如暗通道先验(dark channel prior,DCP)方法[8],利用先验知识初步估计大气透射率,再用软抠图细化透射率,最终根据大气光物理散射模型恢复无雾霾的图像。该方法假设在清晰图像中的暗通道值接近于零,然而当场景中的物体与大气光相似时该假设并不成立,同时由于软抠图计算复杂,因此该算法复杂度高、耗时大。
基于大气散射模型的方法由于估计透射率成本较高,Tang等人[18]将机器学习算法应用到去雾霾算法中,以各种先验特征为输入,通过随机森林模型估计透射率,从而降低透射率的估计成本,但该方法对雾度分布不均匀的图像去雾霾效果并不是很理想,且存在明亮区域内去除雾霾时颜色被过度增强的问题。Meng等人[19]应用透射函数固有的边界约束,将该约束与加权L1范数的上下文正则化相结合,估计图像的透射率,该方法往往产生锐利的边缘和高度对比的颜色。Cai等人[20]以卷积神经网络(convolutional neural networks,CNN)架构为基础,提出可训练的端到端系统进行透射率的估计,根据大气散射模型从清晰图像生成雾霾图像的数据库,该方法通过大气散射模型的逆运算计算清晰图像,去雾霾效果会受到模型其它参数的影响。
Ren等人[21]提出了多尺度卷积神经网络(multi-scale convolutional neural network,MSCNN)估计大气透射率,该方法在真实雾霾图像中的主观评估结果较好,但合成室内图像的峰值信噪比(peak signal to noise ratio,PSNR)和结构相似性(structural similarity index,SSIM)结果较低,其在场景识别中对天空、白云和明亮区域的识别性能也较低。针对以上算法的不足,本文提出了一种新的改进算法。在多尺度卷积神经网络模型中将粗尺度网络估计的透射率的输出作为附加特征图传递到精细尺度网络后,通过分类统计的方式确定明亮区域的像素值,该统计方法实现了像素的运算,不仅减弱了阴影的影响而且避免了明亮区域被过度增强的现象,并进一步采用高斯滤波器提高图像质量,通过平滑所求的场景辐射度得到最终无雾霾图像。
1 基本理论
1.1 大气散射模型
图像去雾霾算法中广泛使用的退化模型是McCartney等人[22]提出的大气散射模型,其表达如式(1)所示:
式中:I(x)和J(x)分别表示为观察到的雾霾图像和无雾霾图像的场景辐射度;A表示全球大气光;t(x)是场景的透射率,即光线透过媒介透射到视觉系统没有被散射的部分,t(x)表示为:
式中:β是大气中的介质消光系数;d(x)是场景深度。由于给定的雾霾图像存在多种解决方案,显然这个问题是病态的。若能直接得到图像大气透射率t(x)和全球大气光A,那么在雾霾图像已知的情况下,根据式(1)恢复原始无雾霾图像。为获得大气透射率t(x),本文结合多尺度卷积神经网络和分类统计的方法估计大气透射率t(x),先用多尺度卷积神经网络进行t(x)值的初步计算,再对所计算的t(x)值进行分类统计。
1.2 多尺度卷积神经网络的模型体系结构
为实现图像透射率t(x)的初步估计,采用了多尺度卷积神经网络模型[23],该模型分为2部分:粗尺度网络和精细尺度网络。
多尺度卷积神经网络模型如图1所示。一个粗尺度的网络首先对透射率进行整体的估计,然后通过一个精细的网络在局部区域内对其进行修改。这两个组成部分都运用原始雾霾图像作为输入。此外,粗尺度网络的输出作为附加特征图传递到精细尺度网络,通过这种方式,精细尺度网络能够细化粗尺度网络。
1.2.1 粗尺度网络
粗尺度网络的目标是用场景的全局视图预测图像的整体透射率,粗尺度网络由4部分组成:卷积,最大池化,上采样,线性组合。
卷积:该模型将RGB图像作为输入,卷积层由与输入特征图卷积的滤波器组组成,每个卷积层表示为:
式中:fml和fnl+1分别表示为当前层l的特征图到下一层l+1的特征图;k表示卷积核,索引(m,n)表示从当前层第m个特征映射到下一层第n个特征的映射;*表示卷积;函数σ(·)表示滤波器上的修正线性单元,所有隐藏层都使用修正线性单元进行激活;b表示的是偏置单元。
最大池化:在每个卷积层之后使用降采样因子为2的最大池化层,保留了更多的纹理信息。
上采样:在卷积中由于输入雾霾图像与输出透射率的大小是一样的,而特征图的大小在最大池化层之后将会减小。因此,在最大池化层后增加了一个上采样层[24],以确保输入雾霾图像和输出透射率的大小相等。上采样层紧随池化层之后将恢复子采样特征的大小,同时保持网络的非线性。每个上采样层被定义为:
该函数将位置(x,y)处的像素值从最大池化特征复制到紧随其后的上采样层中大小为2×2的块上,因为上采样层中的每个块由同样大小的值组成,这个层的反向传播规则就是反向的平均池化层,其尺度因子为2。每个上采样层中2×2的块函数被定义为:
线性组合:在粗尺度卷积网络中输出层通过线性组合[23]将来自最后一个卷积块的特征通道组合在一起。然后用sigmoid激活函数产生最终输出。sigmoid函数表示为:
用sigmoid激活函数产生最终的输出:
式中:tc在粗尺度网络中表示场景透射率的输出;n是特征映射通道的索引;s(·)是sigmoid激活函数;fnp表示输出透射率前的倒数第二个特征映射;ω和b分别是线性组合的权重和偏置单元。
1.2.2 局部精细网络
考虑了整个图像预测粗场景透射率之后,用一个精细的网络进行细化,除了第一和第二个卷积层之外,精细尺度网络堆栈的架构与粗尺度网络相似。精细尺度网络的结构如图1的下半部分所示,粗输出透射率用作附加特征图。根据设计,粗尺度预测的大小与第一个上采样层的输出大小相同,将这两者连接在一起,并使用预测的粗透射率与精细尺度网络中的学习特征图相结合来重新修正透射率。
为进一步确定天空、白云和明亮区域等特定区域内的像素值,对多尺度网络估计的透射率t(x)进行分类统计。
1.3 透射率的分类统计
在估计大气透射率t(x)后,为了准确地分类统计确定天空、白云和明亮区域的像素值,在此用了Huang等人[25]分类统计的方法,该方法表明天空、白云和明亮区域的暗通道先验值几乎都必须大于160像素。
根据公式(8)精确估计特定区域内雾霾图像的大气透射率t(x):
式中:ω取值为0.75。
图1 多尺度卷积神经网络模型Fig.1 Model diagram of multi-scale convolution neural network
1.4 大气光的估计
为了恢复清晰的图像除了需要估计透射率t(x)外还需要估计大气光A,由(1)式可知,当t(x)→0时I(x)=A。由于在室外图像中出现的物体可能远离观察者,所以深度d(x)的范围为[0,+∞),并且当d(x)→∞时有t(x)=0。因此在透射率t(x)中通过选择0.1%暗像素来估计大气光A。现已得到图像大气透射率t(x)和全球大气光A,那么在雾霾图像已知的情况下,根据式(1)恢复原始无雾霾图像,得到无雾霾图像场景的辐射度J(x)。
1.5 无雾霾图像场景的辐射度
在估计t(x)和A后,用式(1)恢复无雾霾图像,为了避免更多噪声的影响,对t设置一个下限t0为0.1,这样处理后图像较自然,因此最终的无雾霾图像场景的辐射度为:
得到无雾图像场景的辐射度J(x)后,然后采用高斯滤波器进行平滑处理。
1.6 高斯滤波平滑无雾霾图像场景的辐射度
利用低通高斯滤波器平滑上述得到的无雾霾图像场景的辐射度,精化辐射轮廓V(x)表示为:
式中:Wg是以像素x为中心的邻域区块的整体权重。
式中:G是高斯函数,并且参数σ表示用于平滑像素的区域的大小,高斯传播的标准偏差确定为标量或正值的3分量矢量。根据低通高斯滤波器精化场景辐射度,使靠近聚焦像素x的像素将获得相当大的权重。
图像去雾霾算法流程如下所示:
输入:雾霾图像I(x)
输出:无雾霾图像场景的辐射度J(x)
Step 1:用11×11×5的三维卷积核对原始输入层进行卷积,通过最大池化和上采样实现色差、纹理和对比度特征的提取,输出雾霾图像的整体透射率t(x)。
Step 2:将Step 1的输出作为附加特征图传递给精细网络进行细化,估计透射率t(x)。
Step 3:分类统计特定区域内雾霾图像的大气透射率t(x)。
Step 4:估计全球大气光A。
Step 5:根据式(1)得无雾霾图像的场景辐射度J(x)=[I(x)-A]/max[t(x),0.1]+A。
Step 6:用高斯滤波器平滑Step 5所得的结果J(x)。
2 实验
2.1 实验数据
训练集:通常情况下不可能捕捉到同样视觉场景下有雾霾和无雾霾而其它所有环境条件都相同的的图像。所以只能用无雾霾图像合成雾霾图像得到训练集。用公开的indoor training set(ITS)和outdoor training set(OTS)[26]数据集,ITS室内合成训练集中包含110000张图片,OTS室外合成训练集中包含313950张图片。为了控制训练的数据量同时保证训练模型的泛化能力,本文分别从ITS和OTS中选取1100张和3100张图片组成混合训练集。为了适应多尺度网络模型的尺度,所有的训练图像都被调整为320×240像素的标准尺寸。
测试集:为了验证本文模型的实际性能表现,从synthetic objective testing set(SOTS)和hybrid subjective testing set(HSTS)数据集[26]的50幅图像生成雾天图像测试集。利用峰值信噪比和结构相似性作为评价结果的量化标准。
2.2 实验设置
实验中粗尺度网络和精细网络均由3个卷积层构成,在粗尺度网络中前两层分别用了5个大小为11×11和9×9的卷积层,最后一层是由大小为7×7的10个滤波器组成。在精细网络中,第一个卷积层是由大小为7×7的4个滤波器组成,最后两层分别由大小为5×5的5个滤波器和3×3的10个滤波器组成,粗尺度网络和精细尺度网络都是用具有0.9动量的随机梯度下降法训练,实验使用了100幅图像(320×240个像素)的批量大小,初始学习速率设置为0.001,每迭代20次初始学习速率为原来的0.1倍,迭代次数设置为70次。如图2(a)第一、第二和第三个尺度网络之间的比较表示更大规模的网络不会带来更好的效果。图2(b)更多层的CNN和提出的多尺度CNN之间的比较表示多尺度CNN训练效果比多层的CNN好。
3 实验结果与分析
3.1 定量分析
为了更加客观地评价方法的有效性,首先在合成数据集上定量评估所提出的透射率估计性能的方法。利用峰值信噪比和结构相似性将所提出的算法与其他的去雾霾方法[8,13,21]进行了比较。表1给出了本文的方法和其他方法的比较结果。
3.2直观效果分析
为了直观验证提出的方法去雾霾的有效性,分别在室内合成图像和室外真实图像上对所提方法和目前常用的去雾霾方法进行直观效果分析对比。首先用室内合成的雾霾图像比较各算法的去雾霾效果。如图3所示,DSPP[13]的算法能够增加图像细节并增强图像的可见性。但是,恢复的图像中仍有颜色扭曲,如第2幅图像的桌面部分。而DCP[8]的方法高估了雾的厚度并产生较暗的结果,如第3幅图的桌面部分和第4幅图的地面部分。MSCNN[21]的方法总体去雾霾效果较好,但会显著增强图像明亮区域。相比之下,图3(f)的去雾霾效果基本接近于真实无雾图像,这表明本文的方法去雾霾效果较好。图4中DSPP[13]提出的方法存在图像丢失细节、过度
其次比较各算法在室外真实雾霾场景中的效果。增强图像明亮区域的问题。如第1、2幅图的白云部分。此外,第3幅中也增强了蓝天、白云的亮度。DCP[8]去雾霾效果较好,但颜色仍然比实际情况更暗。相比之下,MSCNN[21]的方法和本文所提出的方法在真实雾霾场景中关于天空、白云和明亮区域的主观评估结果差异不大,因而本文将在3.3节用场景的识别做进一步对比分析。
3.3 场景识别中结果分析
在3.2节室外真实雾霾场景直观效果分析中MSCNN算法和本文算法直观效果难以区分。为了进一步证明本文提出的算法去雾霾结果在场景识别中的性能,用GoogleVisionAPI(https://cloud.google.com/vision)测试真实雾霾图像增强之后是否提高场景识别能力。对比MSCNN和本文算法在场景识别性能上的表现,结果如图5所示。可以看出,本文算法在雾霾图像增强之后的场景识别中比MSCN N算法识别效果更好,尤其是在天空、白云和明亮区域表现更佳。如图5GoogleVision API识别结果示例中显示,本文方法在雾霾图像增强之后会增加主要对象检测的分数。如(c)中天空和白云的分数较(a)和(b)都有较大提升。
图2 各尺度网络以及多层网络之间的比较Fig.2 Comparis ons between sc ale networksa nd multi-layer networks
表1 合成数据集的平均PSNR 和SSIMTable 1 Average PSNR and SSIMof thesy nthesized data set
图3 室内合成成图像去雾霾结结果对比Fig.3 Comparrisons of indoorr synthetic imagges dehazy resuults
图4 真真实图像去雾霾霾结果对比Fig.4 Commparisons of reaal image dehazyy results
图5 MSCNN算法和本文算法识别结果对比Fig.5 Comparisonsbetween MSCNNalgorithm and the recognition result of the algorithm
4 结论
本文结合多尺度卷积神经网络和分类统计的方法改善原有算法在透射率计算上的问题,通过调整算法中参数并且给出相应参数的合适范围,确保最终的去雾霾效果。通过定量和直观效果分析的结果对比,本文算法能够有效地解决特定区域内颜色失真、颜色扭曲及过度增强等问题,且在合成的雾霾图像和真实的雾霾图像中都有较好的效果。在接下来的研究中,如何提高去雾霾图像的分辨率将是一个重点,以期进一步提高去雾霾图像的分辨率。