基于双向转换网络的域自适应单幅图像去雾方法
2023-01-12汤永恒潘斌
汤永恒,潘斌
(辽宁石油化工大学计算机与通信工程学院,辽宁 抚顺 113001)
随着社会的发展,环境污染也更加严重,近年来雾霾现象变得愈发的普遍,这给光学设备的成像造成了极大的影响,尤其是航海航天、道路交通、目标跟踪、目标识别等领域。因此,如何排除雾霾天气对实际工作的干扰变得越来越重要,图像去雾也成为了计算机视觉领域的热点问题。目前,图像去雾的方法大致分为基于图像增强和基于物理模型的图像复原两种方法。基于图像增强的方法包括直方图均衡化、小波曲波变换、Retinex算法、基于局部方差等[1]。基于物理模型的图像复原方法主要包括基于深度关系雾天图像复原、基于先验信息雾天图像复原等。这些方法都是根据雾天图像退化模型进行图像去雾,雾天图像退化模型可表示为:
式中,I(x)为光学设备获取的有雾图像;x为像素坐标;J(x)为处理后的无雾图像;A为常数,表示大气光值;A[1-t(x)]为大气光主要成分项;t(x)为透视率,透射率随场景深度变化呈指数式衰减。
基于先验信息的雾天图像复原工作率先由R.T.Tan[2]提出。该方法针对单幅彩色或灰度图像去雾,去雾后的图像对比度大大提高,但是颜色过于饱和且有光晕伪影。R.Fattal[3]通过求取图像景物反射率估计值的方式推导出去雾图像,这种方法仅适用于薄雾条件,如果变成浓雾,处理效果变差。K.M.He等[4]提出了基于暗原色的单一图像去雾方法,去雾效果有了较好的提升但是计算代价大,处理时间长。D.Berman等[5]假设数百种近似于清晰图像的不同颜色,然后根据先验信息图像去雾的方法进行了图像去雾。上述方法在合成数据去雾方面都取得了一定的效果,但是在进行图像信息先验时容易产生误差,从而与实际数据不匹配,导致t(x)的计算出现错误,使其在处理真实环境下的雾天图像时效果不太理想。
随着深度学习技术的发展,人们开始研究基于深度学习的图像去雾算法。例如由H.Zhang等[6]提出的DCPDN图像去雾网络,采用的生成对抗网络增加了一个反向验证的过程,同时加入一致性损失,使转换后的效果强于其他生成对抗网络。深度学习的方法通过构建多层卷积神经网络得到估计值,从而可以直接预测去雾后的清晰图像,相对于基于物理的去雾方法,在峰值信噪比(PSNR)[7]、结构相似度(SSIM)[8]等指标上也有较大提升。但是,该方法需要大量的雾天图像和无雾图像进行训练,而在现实生活中收集大量真实雾天图像数据是非常困难的。因此,目前基于深度学习的去雾算法,大多是采用人工合成的有雾图像对深度神经网络模型进行训练,而人工合成雾天图像与真实世界的雾天图像存在一定差别,人工合成雾天图像的雾是均匀分布且没有深度,真实雾天图像的雾是随机分布且雾的深浅不一,因此该类方法针对真实世界的雾天图像去雾时效果都不太理想,究其原因就是产生了域转移的问题[9]。
本文提出了基于双向转换网络的域自适应单幅图像去雾算法。该方法包含一个由Cycle-GAN网络组成的图像域转换模型和一个由卷积神经网络组成的图像去雾模型。通过双向转换网络实现图像在合成域与真实域之间的转换,减少不同域之间的差距,然后将转换后的图像作为输入数据训练去雾网络模型。为了提高模型对真实雾天图像的处理能力,本文在人工合成的雾天图像基础上,增加了真实雾天图像作为训练数据,提高了模型的泛化能力。大量的实验结果表明,此方法对人工合成雾天图像和真实雾天图像都有较好的去雾效果,在峰值信噪比、结构相似度等方面均有提高。
1 图像去雾方法
1.1 深度学习方法
近年来,在计算机视觉领域基于深度学习卷积神经网络进行图像去雾的方法受到了很大的关注,图像去雾也成为了计算机视觉领域一个重要的研究方向。用卷积神经网络进行图像去雾的方法,大多都是首先通过卷积神经网络计算转换图和大气光值,然后利用雾天退化模型反推出无雾图像。B.Cai等[10]提出了一种基于端到端的DehazeNet图像去雾模型,用去雾网络根据有雾图像计算出转换图,然后反推出清晰图像。W.Q.Ren等[11]提出了多尺度卷积神经网络图像去雾方法,先用粗尺度的卷积神经网络得到粗略的透视率图,然后通过细尺度卷积神经网络得到精细化的透射率图,最后得到去雾后的图像。H.Zhang等[12]提出了一个通过密集金字塔网络进行图像去雾的方法,通过该网络估计出转换图,然后反推出清晰图像。这些基于深度学习卷积神经网络的去雾方法都是利用合成的有雾图像进行训练,对真实雾天图像进行去雾处理时效果差,原因在于没有解决域转移问题,模型的泛化能力不够。本文算法首先利用双向转换网络对图像进行域转换,将图像从一个域转换到另一个域,有效地解决了域转移的问题,然后用转换后的图像作为训练集对去雾模型进行训练。实验结果表明,该方法对合成有雾图像和真实雾天图像都有较好的去雾效果,尤其是在合成雾天图像的去雾效果较以往方法有显著提高。
1.2 域自适应方法
域自适应的目的是减小不同域之间的差异,有效地解决训练样本和测试样本之间概率分布不一致的学习问题。当前域自适应在计算视觉领域得到了广泛的运用,如图像分类、语义分割、视频分析等方法都是利用转换网络将数据从一个域转换到另一个域以达到域自适应。域自适应是通过转换学习和风格迁移的方法去重新创建新的目标域的数据,常见域自适应可以分为基于对抗、重建的域自适应。基于对抗的域自适应通过对抗网络(GAN)生成合成目标数据,然后根据合成数据训练模型;基于重建的域自适应是使用辅助重建任务为每个域创建共享表示。这些域自适应执行特征级的域自适应或像素级域自适应。特征级域自适应主要是通过最小化最大平均值差异或对抗学习来调整源域和目标域之间的特征差异。像素级域自适应主要是采用转换网络将一个图像从一个域转换到另一个域,从而达到像素级域自适应。常用的图像转换网络有Cycle-GAN、Pan等。
2 本文算法
2.1 双向转换模块
本文采用的双向转换网络为Cycle-GAN网络,其网络配置如图1所示。图1中,Conv表示卷积层;Res4-12表示残差模块;Upconv表示上采样层;SFT表示空间特征变换层;Tanh表示非线性层,采用Tanh激活函数。
图1 Cycle-GAN网络配置
双向转换网络可以将合成雾天图像数据转换为真实雾天图像数据,也可以把真实雾天图像数据转换为合成雾天图像数据。为了使由合成雾天图像数据转换而来的图像更符合实际,本文将图像深度信息融入到网络中;为了将图像深度信息融入到网络中,采用空间特征变换层(Spatial Feature Transform Layer)[13]。通过本文算法经过多次实验得到的图像都与真实雾天图像更加相似,图像转换结果如图2所示。从图2可以看出,域转换后的图像更加接近于真实雾天图像。
图2 基于本文方法的图像转换结果
2.2 图像去雾模块
图像去雾模块包括合成雾天图像处理的网络模型和真实雾天图像处理的网络模型。将真实雾天图像输入到双向转换网络得到合成雾天图像,并将其作为输入放入合成雾天图像处理模型中进行图像去雾处理;将合成雾天图像输入到双向转换网络得到真实雾天图像,并将其作为输入放入真实雾天图像处理模型中进行图像去雾处理。两个去雾网络的结构是相同的,只不过初始化参数不同。图像去雾模块流程如图3所示。
图3 图像去雾模块流程
2.3 损失函数
在整个域自适应图像去雾框架中,损失函数包含双向转换网络的损失函数和图像去雾网络的损失函数。在双向转换网络定义图像级对抗性损失LimgGan、特征级对抗性损失LfeatGan,其表达式见式(2)及式(3)。
式中,XR为真实域;XS为合成域;ςR为真实雾天图像去雾模块;DimgR为图像级鉴别器,其有助于对齐真实图像与转换后图像GS→R(xs,ds)特征图之间的分布;DfeatR为特征级图像鉴别器,其有助于对齐真实图像与GS→R(xs,ds)特征图之间的分布;DS为相应深度图像;xs为输入的合成图像;xr为输入的真实图像。
另外,定义Cycle一致性损失,其表达式为:
为促使生成器保留输入与输出之间的内容信息,定义特征映射损失为:
因此,最终的双向转换网络的损失函数表达式为:
去雾后图像质量损失包含真实域去雾模型和合成域去雾模型损失两个部分。为确保预测图像JS→R更加接近清晰图像YS,在基于真实域去雾网络中采用均方差损失函数为:
为了使去雾网络正则化,引入了全变分和暗通道损失,全变分损失函数表达式为:
暗通道表达式为:
暗通道DC损失表达式为:
此外,合成域去雾模型损失函数表达式与之类似,可以表示为:
最终图像去雾网络的损失函数为:
综合双向转换网络损失和图像去雾网络损失,定义整个域自适应去雾框架损失函数:
式中,λm、λd、λt、λc为权重。
3 实验部分
实验在64位ubuntu操作系统中进行,使用pytorch框架对网络进行训练,CPU为Intel Xeon(R)Platinum 8160,内 存256 GB DDR4,GPU为NVIDIA P100。
3.1 实验步骤
本文算法训练网络模型使用的数据来自RESIDE[14]数据集,从RESIDE数据中随机抽取数据用于网络模型的训练工作。RESIDE数据被划分为室内训练集(Indoor Training Set)、室外训练集(Outdoor Training Set)、合成图像测试集(Synthetic Object Test Set)、未标签真实雾天图像(Unannotated Real Hazy Images)、真实雾天图像测试集(Real Task-driven Testing Set)五大部分。随机抽 取Indoor Training Set和Outdoor Training Set各3 000张作为实验合成雾天图像数据集,随机抽取Unannotated Real Hazy Images1 000张作为真实雾天图像数据集。在训练时,把所有实验用图像都裁剪为256×256,每幅图像的像素值转为[-1,1]。开始时,用训练图像来训练图像转换模块即训练双向转换网络(Cycle-GAN),将训练参数设置为50~100次,学习率设置为(5.0~6.0)×10-5。经过大量实验验证,最终确定训练次数为90次、学习率为5.5×10-5时模型最优。利用转换后的合成雾天图像数据训练合成雾天图像去雾网络,用转换后的真实雾天图像数据训练真实雾天图像去雾网络,两个去雾网络的训练次数最初设置为50次,但是处理图像效果不佳,于是将训练次数范围设为50~150次,学习率设置为(0.5~1.5)×10-5。经过大量的实验,当训练次数为90次、学习率为1.0×10-5时处理效果最佳。再用前面的训练数据训练整个基于双向转换网络的域自适应去雾网络,分别生成用于合成数据的域自适应去雾模型和用于真实雾天图像的域自适应去雾模型。模型训练次数匹配前面模型的训练次数,同样设定为90次。当训练次数设置小于或大于90次时,处理结果均较训练90次有所下降。测试阶段用合成雾天图像和真实雾天图像测试用于合成雾天图像域自适应的模型和用于真实雾天图像域自适应模型。测试阶段用的合成雾天图像数据来自Synthetic Object Test Set,真实雾天图像数据来自Unannotated Real Hazy Images。
3.2 实验结果
为了验证本文算法的有效性,分别采用合成雾天图像数据和真实雾天图像数据,对基于双向转换网络的域自适应图像去雾模型进行了检验,并结合PSNR、SSIM等指标与其他算法进行了比较分析。PSNR越大,说明经去雾处理后图像保留的特征信息越明显,更加接近真实图像,图像的失真较少;SSIM值越大,说明去雾处理后特征信息保留完好,一般SSIM值不超过1.00。
基于本文算法的真实雾天图像去雾处理结果如图4所示。从图4可以看出,经过处理的去雾图像较原始雾天图像更加清晰。
图4 基于本文算法的真实雾天图像去雾处理结果
基于不同算法的真实雾天图像去雾效果如图5所示。从图5可以看出,本文算法的处理结果较其他算法更加清晰且图像失真更少。
图5 基于不同算法的真实雾天图像去雾效果
基于不同算法的合成雾天图像去雾效果如图6所示。从图6可以看出,本文算法去雾效果更好,图像失真少。
图6 基于不同算法的合成雾天图像去雾效果
合成雾天图像测试结果如表1所示。从表1可以看出,本文算法的峰值信噪比、结构相似度平均值均高于其他算法。
表1 合成雾天图像测试结果
测试结果表明,本文提出的基于双向转换网络的域自适应图像去雾方法对真实雾天图像和合成雾天图像都有较好的去雾效果;相比于其他算法,本文算法去雾效果更好,图像失真少,处理后的图像与清晰无雾的图像结构相似度更高。对本文算法的峰值信噪比、结构相似度等指标与其他几种去雾方法进行了比较,结果都有一定程度的提升,整体优于其他算法。
4 结论
本文所提算法有效地解决了域转移问题,其合成有雾图像去雾效果有很大的提升,真实环境下的雾天图像的去雾效果也有一定的提升。基于双向转换网络的域自适应单幅图像去雾方法包含两个模块,即图像转换模块和图像去雾模块。首先,用图像转换模块实现图像在合成域与真实域之间的相互转换,以此来减少域之间的差异;然后,把转换得到的图像输入到图像去雾网络中进行图像去雾。为了提高模型对真实雾天图像的去雾能力和泛化能力,在实验中加入了真实雾天图像来训练模型。大量实验结果表明,该方法在处理合成雾天图像和真实雾天图像上都有较好的效果,峰值信噪比(PSNR)和结构相似度((SSIM)较其他方法都有很大的提升。