基于通道先验损失的无监督图像去雾算法
2022-08-19张莉莉
张莉莉
(安徽粮食工程职业学院,安徽省合肥市 230011)
0 引言
雾是一种自然的大气现象,会阻碍室外场景的清晰度,导致图像对比度差和细节的丢失.此外,它引入了一个额外的环境光组件,称为空气灯,这导致了清晰图像上的“面纱效应”.模糊图像的形成通常被描述为清晰场景辐射和空中光线的像素级别线性组合,每个组件的效果由透射图控制.为了解决约束不足的雾生成模型,许多研究人员提出了手工设计的图像先验,为模糊与清晰图像的转换[1-9]提供了更多的信息.这些基于先验的方法通常将去雾问题转换为能量最小化任务,其中获得每个图像的解被称为“推理”,需要特殊的优化方案.随着图像去雾作为许多计算机视觉任务的基础操作(例如,目标检测、自动驾驶导航),大规模的基于学习的技术已经被用来解决这个问题[10-14].然而,这些方法需要成千上万的输入和输出示例.由于很难获得完全相同场景和照明条件的清晰和模糊图像对,基于学习的方法通常采用创建的合成数据集进行训练.给定干净的图像和相应的深度图,可以计算透射图并使用雾生成模型来获得具有不同雾量和空气光分量的模糊图像.这些模糊而清晰的图像对随后在深度神经网络的监督训练中作为输入.然而,室外的深度信息非常不精确.当处理真实世界的室外图像时,不可避免的还会产生域偏移.本文借助神经网络的表征学习能力,只使用真实世界的模糊图像以无监督的方式进行训练.通过最小化无监督损失函数来优化网络的权重,即暗通道先验能量函数.通过早期停止优化,在结果上有了显著的提升,意味着从网络结构和学习过程中产生了额外的正则化.该方法基于上下文聚合的网络结构[15,16],可以实现从头开始进行端到端训练,除了原始模糊图像之外,不依赖任何外部数据.且把预测的透射图作为输出,从该输出可以容易地重建去模糊后的图像.实验结果表明,由网络提供的附加正则化减少了基于先验的方法的常见伪影,例如过饱和以及高对比度等现象.
1 方法介绍
本节将描述所提出的图像去雾方法,包括用于网络训练的无监督能量函数,即暗通道先验损失.框架结构示意图如图1所示.
图1 框架结构示意图Fig.1 Overview of framework
1.1 雾生成模型
常见的雾生成模型[17]如下:
I(x)=t(x)J(x)+(1-t(x))A,t(x)=e-βd(x)
(1)
观测到的模糊图像I(x)∈N×3,是清晰无雾场景的辐亮度J(x)和大气光分量A的凸线性组合,称为空气光;在RGB空间中通常表示为一个恒定的三维矢量,A=(Ar,Ag,Ab).透射图系数t(x)∈N是关于观察者的场景深度d(x)的函数,控制图像中每个像素中每个分量的相对力x∈N.图像去雾的目的是获得清晰无雾的场景亮度J(x).然而,首先需要解一组包含3N个方程的方程组(只给定I(x)),包含4N+3个未知数(J(x),t(x),A).因此,需要额外的先验知识来提供监督信号.
1.2 暗通道先验
暗通道先验是一种图像的统计特性,表明在无雾室外图像中的小块区域,所有颜色通道中最暗的像素接近于零.图像的“暗通道”定义为:
(2)
其中,Ω(x)是图像的一个小块,以x为中心.这种观察是由出现在室外图像中的三个因素造成的:(1)由汽车、建筑物和树木引起的阴影;(2)彩色物体.其中一个颜色通道占主导地位,而其他颜色通道接近于零,例如,红色的花,绿色的叶等;(3)黑暗的物体.例如树干和岩石等.
(3)
1.3 软抠图
(4)
其中第一项用来提升图像抠图的质量,第二项则用来提升对暗通道方案的保真度.λ用来权衡两者的权重,设置为0.000 1[3].矩阵L类似拉普拉斯矩阵,多用于图像抠图[18]:
(5)
其中i,j是像素n周围的小图像块pn内的两个像素;|pn|表示图像块的大小,为3x3=9;μn∈3和∑n∈3×3为图像块的均值和协方差;U3是单位矩阵;∈是一个平滑系数,设置为0.000 001.
1.4 损失函数
通过公式(5)中给出的权重,使用已知的拉普拉斯矩阵的分解,重写了公式4中的能量函数:
(6)
其中,对得到的透射图t中N个像素周围的所有重叠的图像块以及给定3×3图像块中像素i,j的所有可能组合进行求和.最大组合数为3^2x3^2=81.可以将该项和数据保真度一起进行矢量化:
(7)
图2 损失函数模块Fig.2 Loss function module
其中⊙表示元素乘法;k∈[1..81]对3×3图像块中所有可能的像素对进行索引,W∈N×81是权重的矢量化形式.TI,TJ∈N×81是对输出透射图的重复.
以上是该方法用来训练网络的损失函数,其预测的透射图由tθ进行参数化.通过在模糊图像的训练集上最小化公式7中的损失函数来优化调整参数θ:
(8)
其中M是图像的数量.损失函数的输入和输出示意图如图2所示.
1.5 计算场景亮度
网络完成训练之后,模糊图像的透射图tθ(x)可以通过前向传递操作获得.这用于通过公式(1)中的雾生成模型来恢复场景辐射J:
(9)
其中t0用于防止除以接近0的数字,被设为0.1.为了恢复丢失的空气光组件,首先在模糊图像的暗通道中选择0.1%最亮的像素.然后,从这些位置中,选择模糊图像中最亮的像素I,作为最终的大气光A.
1.6 结构
如图1所示,为本文采用的全卷积“膨胀残差网络”.受上下文聚合网络[15]的启发,它在密集预测任务中展现出了不错的结果.与CAN类似,保持所有层的分辨率不变,即输入和输出的分辨率相同.为了获得准确的预测,该方法避免了池化和上采样层,而是通过膨胀卷积以指数增长的膨胀因子来增加感受野.与[15]相反,在每个膨胀卷积之间,额外添加两个常规的卷积层,以生成更丰富的非线性表示.
因此,该网络是由6个膨胀残差块级联而成;每一个块分别由两个常规的卷积组成,接着是一个单独的膨胀卷积.每一个块之间,膨胀因子增加2的幂次倍.所有卷积层(除输出层之外)的滤波器大小和宽度为3×3×32.所有常规卷积之后是批处理归一化[19]和ReLU激活函数,所有膨胀卷积之后接着批处理归一化.最后一层是到输出维度为1×1×1透射图的线性变换.为了改善梯度流并将更精细的细节传播到输出,在每个块的输入和输出之间加入了额外的跳跃连接.跳跃连接是每个块的输入到输出的简单加法.
2 实验
2.1 数据集
为了训练和评估该网络的性能,本文使用了大规模RESIDE数据集[16].RESIDE的训练集称为“ITS”,包括13990幅合成的室内图像,由NYU2和Middlebury立体数据集创建.测试集包括室内和室外两部分,分别称为“SOTS室内”和“SOTS室外”,每个部分分别包含500幅合成图像.此外,还有一个由20幅室外图像组成的小测试集,叫做“HSTS”.
HSTS混合了10幅合成图像和10幅真实世界的图像.所有合成的模糊图像都是通过收集标注的真实干净图像及其相应的深度图,并应用公式1中不同α,β参数配置的雾生成模型来创建.RESIDE还提供了一个额外的由4 322幅真实世界图像组成的集合,这些图像是从网络上爬取下来的,称为“RTTS”.根据这些真实世界图像来训练该方法提出的网络.为了在训练过程中评估PSNR(峰值信噪比)和SSIM(结构相似性)标准,本文使用了来自RESIDE的“OTS”第一部分随机选取的合成室外训练集中的500幅图像作为验证子集.
2.2 实现细节
为了丰富RTTS训练集,本文进行了数据扩充.第一个数据增强操作是简单地使用双线性插值将原始模糊图像的大小调整到128×128.并随机对每个图像分别进行水平翻转或保持原样;随机裁剪为256×256或512×512;并以0、45、90或135度进行旋转.然后,所有增强的图像都被调整到128×128的尺寸.因此,最终的训练图像数量是:4 322×4=17 288幅.
损失函数的参数λ=104,ω=0.95,t0=0.1,ε=106,DCP的图像块大小为:15×15,软抠图图像块大小为:3×3.并使用批量大小为24的Adam优化器.学习率大小为0.000 3,每3个迭代周期进行0.96倍的指数衰减.使用均值为零、方差为0.1来随机初始化网络的权重.在GTX Titan-X Nvidia GPU上进行模型的训练和测试.30个迭代周期共花费了8 h.对于SOTS室外数据集,训练了27个迭代周期,而对于SOTS室内数据集,训练了30个迭代周期.
2.3 定量评价
分别在SOTS室内、SOTS室外和HSTS测试集上评估了本文方法的性能.这些测试集是合成创建的,因此既有清晰的图像,也有对应的模糊图像.本文根据PSNR和SSIM指标来衡量解决方案的质量.本文主要与以下基于先验的方法分别进行比较,例如:DCP[3],BCCR[8]和NLD[7],以及以下数据驱动方法:CAP[6],MSCNN[12],DehazeNet[11],AOD-Net[10]和GFN[13]等.
实验结果见表1所示.在较大的SOTS室外测试集中,该方法的PSNR和SSIM得分最高,在较小的HSTS测试集上,该方法的SSIM得分最高.该方法利用神经网络来提取丰富的表示,并经过训练以适应大量图像,与基于先验的方法相比,获得了更好的结果.具体来说,与DCP相比,该方法尽可能去近似相同能量函数的解,且在达到绝对最小值之前停止它,以便获得进一步的正则化.这一点在SOTS室外图像中尤为明显,DCP方法在这类图像上经常使天空过度饱和.图3、图4分别为PSNR指标和SSIM指标上不同方法在多个数据集上的结果对比曲线,可以直观看出该方法与其他方法的性能差异.
图3 与其他方法在三个数据集上的PSNR指标对比Fig.3 Comparison of PSNR indicators with other methods on three data sets图4 与其他方法在三个数据集上的SSIM指标对比Fig.4 Comparison of SSIM indicators with other methods on three data sets
关于数据驱动的方法,该方法取得高分归因于本文是在真实的室外图像上进行训练的事实,而方法[10,12-13]集中在合成的室内图像上,并且在处理室外数据时遭受一定的域偏移.此外,合成的模糊和清晰图像对是从粗略的深度数据中创建的,对这些数据的训练产生了对数据驱动方法的负面偏见.“ITS”中的室内训练图像示例如图7所示.透射图中粗糙的错位边缘,这些边缘后来转化为不准确的模糊图像.事实上,就室外数据的表现结果而言,本文方法的结果与DehazeNet[11]方法最为接近.这种方法是在室外场景的大量干净图像块上训练的,与在“ITS”上训练的方法相比,它更加鲁棒.
图5 合成图像及预测的透射图结果Fig.5 Composite image and predicted transmission diagram results
该方法同样测试了在SOTS室内测试集上的结果,与其他数据驱动的方法甚至DCP相比,得分较低.这主要是因为本文方法是在室外图像上进行训练的,在室内和室外场景之间的性能表现上做了一个折衷.至于DCP方法,它在室内图像上表现得更好,因为室内图像更符合雾生成模型的结果,并且不包括天空区域.
2.4 定性结果
如图6所示,展示了在HSTS测试集上的定性结果.在图6的顶部,可以看到该方法保持了原始图像的真实颜色,而DCP[3]、BCCR[8]和NLD[7]倾向于产生夸张的天空区域.该方法的结果与CAP[6]产生的结果相似,更接近于图像标注中的真实颜色.在图6的下半部分,提供了基于深度学习的方法的比较.在大多数图像中,本文保持了真实的对比度和颜色,而MSCNN[12]和GFN[13]提供了更多的对比度增强图像.在某些图像上,会稍微改变天空的颜色,这是因为该方法是无监督进行训练的,在任何阶段都无法看到清晰的图像.如图7所示,可以看到与基于先验和数据驱动的方法的真实图像比较.在27个迭代周期和30个迭代周期之后可视化该网络的输出,输出的结果图像更类似于DCP方法的结果.可以看到,在27个迭代周期之后,并没有消除所有的雾,这可能表明RESIDE中的室外图像没有现实世界中的模糊图像那么模糊.在30个迭代周期之后,该方法的结果更加饱和,对比度更高.
图6 在HSTS测试集上去雾结果的定性对比Fig.6 Qualitative comparison of fog results in HSTS test set图7 在真实世界图像上的去雾定性结果Fig.7 De-fogging qualitative results on real-world images
2.5 运行时间比较
推理过程主要由两部分组成:在训练好的网络上向前传递以获得预测的透射图,以及使用公式(9)进行图像的重构,将本文方法与软抠图DCP[3]的Matlab实现进行对比,表示为“Slow-DCP”,和引导图像滤波器DCP,表示为“Fast-DCP”.“Fast-DCP”是“Slow-DCP”的近似,虽然非常有效,但效果较差.为了公平比较,该解决方案分别测试了使用GPU和英特尔i7-5930k 3.5 GHz CPU的运行时间.在表2中,记录了在SOTS室外500幅图像的平均运行时间,这些图像的宽度均为500像素.与显式优化过的“Slow-DCP”所花费的时间相比,该方法的前馈推理要快得多(×30 GPU和×12 CPU).该方法的性能与“Fast-DCP”不相上下(GPU更快,CPU更慢).但该方法提供了更好的可视化质量,在PSNR指标上增加了9.5 dB.本文方法还可以通过在训练期间对t,A的联合估计来进一步加速.总之,尽管DCP显式方案可能已经很有效,但它缺乏本文方法所能带来的额外正则化.
3 分析与讨论
3.1 暗通道先验
在模型训练期间,该网络努力逼近DCP的能量函数.因为它对整个图像的语义损失进行优化,所以它可以输出与DCP不同的结果[3].然而DCP一次只对一个图像运行,但该网络学习到了一个更“通用”的解决方案,适用于多个图像.此外,随着训练过程的进行和损失值的降低,该方法的结果越来越接近DCP的结果,如图7中最右边的三列所示.在训练初期,输出图像仍然包含大量的雾,而在训练后期,大部分雾被去除,但是颜色看起来更加饱和,甚至不真实.本文寻找一个折衷,使得大部分薄雾被去除,以至于人们可以看到细节,但是颜色和对比度仍然是现实的或者是物理上有效的.在到达更深的最优值之前停止的好处在天空区域尤为明显,此时DCP会输出一个夸张的天空版本,而本文方法则会产生一个更自然的颜色.在图7的例子中,这个“最佳点”是在训练数据经过27个迭代周期之后达到的.尽管如此,该方法可以继续训练几个迭代周期,以获得更生动的结果.
3.2 无监督训练机制
虽然本文的训练过程是完全无监督进行的,但该方法仍然需要一个停止标准,因为达到损失函数的最小值在视觉和定量结果方面并不总是最优的.为此,本文通过评估平均损失值,以及在OTS的500幅图像组成的一个小监督集合上分别计算PSNR和SSIM的值.结果表现是平均损失逐渐减少,PSNR和SSIM的指标逐渐增长,达到最大值后开始降低.该方法选取了在OTS验证集上表现最佳的模型.类似的技术同样被用于进行学习参数的选择.
4 结语
本文提出了一种用于图像去雾的深度神经网络无监督训练方法.该方法依赖于众所周知的暗通道先验(DCP)[3]进行改进.除了在室外场景中表现出最好的性能,该方法还消除了对合成训练集的依赖.虽然本文主要以DCP为主展开对比实验,该方法同样可以结合任何其他验证有效的能量函数,使用它作为本文的无监督损失.