APP下载

一种改进条件生成对抗网络的图像去雾算法

2023-06-09薛子豪王忠美伍宣衡龙永红

湖南工业大学学报 2023年4期
关键词:卷积损失函数

薛子豪,王忠美,伍宣衡,李 敏,龙永红

(湖南工业大学 轨道交通学院,湖南 株洲 412007)

1 研究背景

电子设备在室外采集图像的过程中,经常会遇到雾霾天气,导致采集到的图像存在颜色偏移、模糊和失真等问题,限制了目标识别、视频监控、自动驾驶等技术的发展。因此,研究图像去雾技术具有重要的现实意义。

近年来,涌现出许多图像去雾算法,大致可以分为基于图像增强的去雾算法、基于大气散射模型的去雾算法和基于深度学习的去雾算法。

基于图像增强的去雾算法主要是从人眼视觉出发,增强图像的色彩、亮度和对比度,以改善图像的整体效果[1]。当前典型的基于图像增强的算法有直方图均衡化[2]、Retinex 理论算法[3]、同态滤波[4]和小波变换[5]等。

基于大气散射模型的去雾算法主要是研究雾霾图像成像过程和去雾的本质,从雾霾图中推导出对应的无雾图像,该类算法包括暗通道先验算法及基于偏微分方程的算法。其中,He K. M.等[6]提出了暗通道先验的去雾算法,即先依据大气散射模型求出暗原色图像后粗略估计透射率,再细化透射率,最后估计出大气光值逆向复原无雾图像。由于暗通道先验算法无须借助额外的信息约束,所以后续大量研究人员[7-9]在此基础上进行改进。

随着卷积神经网络取得了较为明显的进展,许多学者开始研究基于深度学习的去雾算法。如Cai B. C. 等[10]提出了端到端的网络DehazeNet,它基于传统的大气散射模型,但是首次利用卷积神经网络估计透射率。Li B. Y.等[11]设计的AOD-Net(all-in-one network)通过一个轻量级的神经网络联合估算透光率和大气光。Chen D. D.等[12]在网络中采用了平滑扩张技术,消除了由膨胀卷积引起的网格伪影,无需先验,建立了GCANet(gated context aggregation network) 模 型 去 雾。I. J. Goodfellow等[13]提出的生成对抗网络(generative adversarial network,GAN)被用于图像生成中,取得了很大的突破,在GAN 的基础上涌现了一些端到端的去雾算法[14-15]。但这些去雾算法存在去雾不完全、去雾图像和真实图像色差较大,以及存在伪影等问题。

基于上述研究,本文提出一种基于条件生成对抗网络(conditional GAN,CGAN)的去雾算法。首先,设计了新的生成器结构,主要采用含对称层跳跃连接的深度卷积网络,实现了输入输出图像特征的共享,同时保留了图像的底层纹理信息和高级语义信息,并用卷积层和反卷积层代替池化层,实现降采样和上采样操作;其次,引入了L1 损失函数和感知损失函数对网络加以约束,减少了生成图像的色差,使生成图像更加接近真实图像。

2 基于改进条件生成对抗网络的去雾算法

条件生成对抗网络(CGAN)[16]是GAN 的扩展,是在原始GAN 上添加条件变量来生成想要的特定数据,使得网络能够更好地被应用于跨模态问题。所添加的条件变量可以是任何信息,比如图像、类别信息,以及其他模态的数据。

利用CGAN 进行去雾处理时,先将雾霾图像输入生成器,生成器处理后输出去雾图像,之后将雾霾图像与去雾图像一起输入判别器,得到一组判断结果。判别结果中只包含0~1 的值,表示判别器认为去雾图像是真实的无雾图像的概率。然后将有雾图像与真实的无雾图像一起输入判别器,输出另一组结果。将前后两组结果进行比较,用它们的差优化生成器与判别器的参数,帮助网络训练。

本文在CGAN 网络的基础上进行了改进,引入了含对称层跳跃连接结构的生成器,并且设计了新的损失函数,以解决现有图像去雾方法存在的信息失真和去雾效果不自然等问题,图1 为本文设计的网络结构示意图。

2.1 生成器

生成器的功能是从输入的有雾图像中直接生成一个清晰图像,而无需估计中间参数。为了实现这一目标,生成器应该保存图像内容,并尽可能多地恢复细节,同时消除雾霾。本文设计的生成器中,引入了含对称层的跳跃连接打破解码过程中的信息瓶颈。

生成器的结构如图1 所示,其包含一个编码过程和一个解码过程,编码过程利用卷积实现降采样操作,图像尺寸不断变小,可以使训练速度加快,但是仍然保留了大部分信息。解码过程主要基于反卷积操作,在解码过程中图像的尺寸不断恢复。每一个卷积和反卷积操作后还有批量归一化(batch normalization,BN)和LeakyReLU 激活函数。

另外,为了能更好地保留输入图像的结构,并且能够在浅层和深层特征之间共享信息,在编解码过程中引入了跳跃连接,向解码过程的对称层提供特征映射,两层特征信息做相加运算。跳跃连接一般在深层CNN 中使用,主要解决反向传播中梯度消失的问题,本文设计的生成器有11 层,加入跳跃连接可以使梯度传播更方便。编解码过程中每层卷积核的大小为4×4,padding 为0,步长为2。

2.2 判别器

判别器用于判断输入图像的真假。本文判别器的结构一共5 层,前4 层中每层的基础操作是卷积、BN 和LeakyReLU 激活函数。加入BN 层可以避免梯度消失和爆炸,为了增加网络的非线性,强化学习能力,在BN 层后加入了LeakyReLU 激活函数。图像输入后先经过4 次卷积提取特征,在最后一层将提取的特征输入Sigmoid 函数,使结果可以映射到0~1 之间。前4 层中每个卷积核的大小为4×4,步长为2。

2.3 损失函数

本文的损失函数由原始CGAN 损失、L1 损失和VGG(visual geometry group)感知损失组成。LCGAN为原始CGAN 损失,可写为

式中:y为有雾图像;G(y,z)为生成图像。

CGAN 是学习将输入的y和噪声z映射到输出G(y,z),每次迭代都会更新生成器和判别器。

L1 损失能捕捉图像的低频信息,减少图像模糊,因此为了减少生成图像上产生的伪影和颜色失真,在原始CGAN 损失的基础上引入了L1 回归损失,目标图像x和生成图像G(y,z)之间的L1 损失为

J. Johnson 等[17]发现CNN 深层特征之间的差异最小化可以使输出图像更加接近真实图像,有助于保留生成图像的细节和语义信息,这种损失被称为感知损失。VGG 的网络结构较深,可以提取更加丰富的细节与高级特征,为了帮助恢复生成图像的细节信息,引入了基于预训练VGG 网络的感知损失:

式中φ(x)为预训练VGG 网络的第19 层特征图。

综上所述,本文网络的总体损失函数为

式中a、b、c分别为各个损失的权重。

3 实验

3.1 数据集

真实单图像去雾(real single image defogging,RESIDE)[18]数据集由合成雾图和真实雾霾图像组成,包括室内训练集(indoor training set,ITS)、混合主观测试集(hybrid subjective testing set,HSTS)、综合目标测试集(synthetic objective testing set,SOTS)、户外训练集(outdoor training set,OTS)和现实世界任务驱动测试集(Real-world task-driven testing set,RTTS)5 个子集,本实验选择ITS 作为训练集,ITS 包含1 399 张清晰图像和13 990 张雾图,雾图由相应的清晰图像利用大气散射模型合成。测试集选择HSTS 和SOTS。SOTS 从NYU2 数据集中选择了500 张室内图像,同样通过大气散射模型合成有雾图像,大气光A从[0.7, 1.0]之间均匀地选择,beta从[0.6, 1.8]之间均匀地选择。HSTS 采用同样的方式合成了10 张室外雾图,同时包含10 张真实世界的雾霾图像,两者结合进行主观评价。

3.2 实验设定和评价指标

本实验的软件和硬件详细配置信息如表1 所示。实验参数设置:学习率设为1e-3,batchsize设为4,采用Adam 优化器,epoch设为100。根据损失函数权重,对比试验设置a为2、b为100、c为10。

表1 软硬件版本配置信息Table 1 Hardware and software version configuration information

本文选择峰值信噪比(peak signal to noise ratio,PSNR) 和结构相似性指数(structure similarity index,SSIM)作为去雾效果的有参评价指标,以及A. Mittal 等[19]提出的自然图像质量评估器(natural image quality evaluator,NIQE)作为无参评价指标。PSNR 是目前使用最普遍的一种图像客观评价指标,值越大代表图像质量越好,其计算公式为

式中:MSE为图像的均方差;MAX1为图像的最大像素值。

SSIM 用于判断图像之间的相似度,值越大说明图像保留了越多的细节信息,其计算公式为

式中:L为图像之间的亮度比较;C为图像之间的对比度比较;S为图像之间的结构比较。

NIQE 的值越低,去雾图像的生成质量越好。

3.3 实验结果

首先通过实验选择出损失函数的权重,其次为了验证本文算法的有效性,设计了3 组实验,选择暗通道先验去雾(dark channel prior,DCP)、多尺度视网膜增强算法(multi-scale retinex with color restoration,MSRCR)、GCANet 和AOD-Net 作为对比算法,在SOTS 和HSTS 数据集上进行测试,从主观评价和客观评价两个角度分析;再次针对提出的损失函数做消融实验,分为3 组验证损失函数的有效性;最后通过YOLOv3(you only look once)验证去雾前后的检测精度是否有提升。

3.3.1 损失函数权重对比

为了选择合适的损失函数权重,针对不同权重做对比实验,所得结果如表2 所示。由此可以设置权重a为2、b为100、c为10。

表2 损失函数权重对比Table 2 Loss function weight comparison

3.3.2 主观评价和客观评价结果对比

表3 和表4 为不同算法对合成雾图的去雾结果,由两表中图片可以看到,经过MSRCR 算法处理后,图像的颜色存在严重的偏移现象,同原图相比,是所有算法中去雾效果最差的。

表3 合成室外雾图的去雾结果Table 3 Results of synthetic outdoor haze images

从表3 中的第二行可以看出,当场景对象与大气光相似时,DCP 算法处理的结果会存在一些颜色畸变和伪影现象。同时该算法依赖颜色信息,容易造成图像整体偏暗、局部饱和度过高等现象。从表4中第二行可以看出,AOD-Net 去雾后还是会残留薄雾,并且颜色发生了一定的偏移。在室内场景下,GCANet 的去雾效果比前3 种都要好,和原图非常接近,但是在室外场景下还是有一些颜色异常,对天空的处理有些过曝。相比之下,本文提出的算法可以产生更自然的结果,同时具有更清晰的纹理和更好的颜色保真度,在视觉上更接近原图。

图2 是真实雾图及不同算法处理后的实验结果,由图可见:DCP 对天空的处理最差,图像上产生了网格和伪影,并且物体边缘会有光晕;MSRCR 处理植物时会出现颜色失真;GCANet 去雾后的图像会残留一些薄雾;AOD-Net 去雾后植物整体颜色偏暗。综合来看本文所提出算法的效果最好。

不同算法去雾结果的客观评价如表5 所示。

表5 PSNR 和SSIM 结果对比Table 5 Comparison between PSNR and SSIM results

可以看出MSRCR 和DCP 在两个数据集上的所有指标都表现较差,AOD-Net 的结果略好于GCANet的,相比之下,本文提出算法不论是有参评价指标(PSNR、SSIM)还是无参评价指标(NIQE)都优于其他算法的对应值,在SOTS 和HSTS 数据集上都有较好的表现,从而验证了所提出算法的有效性。

3.3.3 损失函数消融结果对比

为了证明所提出损失函数的有效性,对涉及的损失函数进行消融实验,在CGAN 损失的基础上逐步添加L1 损失和感知损失,并比较其性能,为了进行公平地比较,除了对损失函数进行修改,其余都保持了相同的网络架构和训练设置。不同损失函数的消融结果对比如表6 所示,从表中数据可以得出,加入L1 损失后可以产生更高的PSNR值,感知损失可以改善图像的SSIM值,从NIQE值也可以看出,采用复合损失函数可以使3 个指标均有所提升。

表6 不同损失函数的消融结果对比Table 6 Comparison of ablation results of different loss functions

3.3.4 去雾前后对目标检测的影响

为了判断本文所提出的算法是否可以提升雾天环境下目标检测的精度,在RTTS 数据集上进行了检测实验,RTTS 是一个已经标注的真实雾天数据集,包含4 322 幅自然雾天图像,标注了5 个类别,分别是人、自行车、汽车、公共汽车和摩托车。采用提出算法进行去雾后,基于YOLOv3 算法进行检测,验证提出算法的有效性。

去雾前后检测的mAP和召回率对比结果如表7所示,可知经过去雾预处理后,YOLOv3 的mAP提升了2.51%,召回率提升了4.31%,从而验证了提出算法在雾天环境下目标检测的有效性。

表7 去雾前后目标检测结果对比Table 7 Comparison of the target detection results before and after defogging

4 结语

为了解决现有去雾算法效果不好的问题,提出了一种带跳跃连接的CGAN 网络去雾算法。首先设计了含对称层跳跃连接结构的生成器,可以在特征图中更好地保留结构和纹理信息,实现特征共享;其次引入VGG 感知损失和L1 损失对网络进行约束,改善了生成图像颜色偏移和细节丢失的问题。最后通过实验,主观和客观地比较了提出算法和现有去雾算法的处理结果,并采用YOLOv3 验证了提出算法在提升雾天环境下目标检测精度上的有效性。实验结果表明:相比其他算法,提出算法在合成有雾图像和真实雾霾图像上均有较为优秀的结果,生成的图像具有更好的视觉效果和更少的颜色失真。但是,生成器采用了深度神经网络,在训练上耗费时间较多,如何设计出参数量少并且高效的网络是下一步要思考的问题。

猜你喜欢

卷积损失函数
二次函数
基于3D-Winograd的快速卷积算法设计及FPGA实现
第3讲 “函数”复习精讲
胖胖损失了多少元
二次函数
函数备考精讲
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
一般自由碰撞的最大动能损失