Single image dehazing using improved cycleGAN✩使用改进的cycleGAN进行单图像除雾2021

摘要:雾霾是悬浮在大气中的非常细的、广泛分散的固体和/或液体颗粒的聚集。

在本文中,我们提出了一种用于单幅图像去雾的端到端网络,该网络通过在发生器内引入专门用于去雾的transformer 架构来增强CycleGAN模型。该模型以一种不配对的方式训练清晰图像和模糊图像,不需要对模糊图像和相应的地真清晰图像进行训练。此外,该模型不依赖于对大气散射模型参数的估计。相反,它使用k估计模块作为生成器的transformer ,以完成端到端建模。所提出的生成器模型中引入的特征转换器将编码的特征转换成所需的特征空间,然后将其输入CycleGAN解码器以生成清晰的图像。在提出的模型中,我们进一步修改了周期一致性损失,将SSIM损失和逐像素平均损失包括在内,从而产生了一个针对重建任务的新的损失函数,从而提高了所提模型的性能。该模型即使在NTIRE 2019挑战数据集中提供的高分辨率图像上也表现良好,用于单个图像去雾。此外,我们在NYU-Depth和reside beta 数据集上进行了实验。我们的实验结果表明,与最先进的方法相比,所提出的方法在从输入图像中去除雾霾方面是有效的。

cycleGAN网络基于cycleGAN的架构提出了端到端去雾模型,将感知损失作为损失函数引入到周期一致性损失中[8]。cycleGAN是第一次尝试为雾霾去除提供cycleGAN架构,与最先进的技术相比,在性能上有了显着改善。受cycleGAN成功的启发,该模型旨在通过在cycleGAN的生成器中引入轻量级CNN架构来构建端到端除雾网络。我们使用AOD-Net架构作为生成器模型transformer的轻量级CNN[7],因为它易于与所提出的GAN架构集成,并且在图像去雾方面具有最先进的性能。换句话说,在建议的方法中使用AOD-Net有两个原因。

首先,AOD-Net易于作为生成器架构嵌入GAN网络中。其次,AOD-Net在单幅图像去雾中显示了其功效,提供了最先进的结果。由于真实图像和恢复图像之间的相似性度量已经被证明可以大幅降低所提出模型的误差[11],因此我们在GAN架构中引入了SSIM损失作为损失函数。我们提出了一个考虑SSIM损失和周期一致性损失的新的损失函数

这篇论文有两个主要贡献。

•我们提出了一种简单、浅层和高效的端到端循环GAN架构,用于单幅图像去雾。

•我们引入了一个特定于图像去雾问题的损失函数,以提高所提出模型的性能。

•我们对适用于图像去雾的潜在损失函数进行了广泛的实验。因此,所提出的损失函数有助于提供接近地面真实值的去雾图像,同时强调感知因素,而不是盲目相信地面真实值。

接下来讨论了单幅图像去雾中所做的相关工作。

背景:单幅图像去雾越来越受到计算成像和视觉研究人员的重视[4,6,7,12]。Schechner等人基于悬浮粒子散射的空气光部分极化的直觉,提出了一种基于瞬时偏振的图像去雾模型[13]。文献[14]也采用了类似的方法,利用马尔可夫随机场对单幅图像进行去雾,通过图割、信念传播等多种方法高效地优化成本函数。Fattal在[5]中开发了一种涉及单个图像的清晰图像形成的改进模型,该模型与透射函数有关,可以解释表面阴影。

与[14]不同,Fattal[5]试图区分不相关的场,即物体的阴影和粒子的衰减。Ancuti等人[15]采用了一种基于融合的方法,该方法需要两个定制版本的模糊图像作为输入,并通过特定的地图进行加权,以提供精确的无雾结果。(3)已经提出了各种方法,例如[3,4,16 - 18],用于使用图像深度图以外的一些附加信息来进行图像去雾。Xie等[16]提出了一种基于暗通道先验和多尺度Retinex的图像去雾算法。在[3]中,在去霾之前估计了颜色衰减。在[3]中,使用线性模型重构朦胧图像的深度信息,生成颜色衰减先验,并通过监督模型学习该线性模型的参数。利用重建的深度信息,利用经典的大气散射模型估算透射率并恢复场景辐射。在[4]中,使用暗通道先验(DCP)去除雾霾。DCP是去除雾霾最有效的图像先验之一,是一种室外无雾图像统计方法。DCP的想法是基于这样一个观察:在大多数没有雾霾的户外图像的局部斑块中,至少有一个颜色通道中存在强度非常小的像素。

Colores等[19]采用DCP和Radon变换去除雾霾。然而,对于室内图像和包含天空区域的图像,基于DCP的方法失败了[20]。

除了DCP之外,人们还提出了各种视觉先验来去除图像中的雾霾[5,21,22]。Fattal[5]提出了去雾霾的色线模型。最近非局部总变差(non-local total variation, NLTV)正则化在[21]中被提出,专注于发现图像中过多的信息和深度结构,从而在去雾后减少噪声和伪影。Kumar等人提出了一种颜色校正机制,生成图像清晰(平滑)的透射图,并通过大气散射模型生成无雾霾图像[22]。Borkar等[12]提出将DCP和色线先验相结合,得到无雾透射图。

最近,人们通过对图像的无雾透射图进行最近邻正则化来清除去雾后图像中观察到的伪影[20]。在文献[20]中,提出了自适应滤波器来处理室外图像中的天空区域。在[23]中也做了类似的努力,通过应用自适应滤波器来平滑图像天空区域的大气光。在引入深度学习技术之后,人们提出了几种使用深度网络去除雾霾的方法[6,17,18]。[17] Liu等人分别利用先验和数据中的领域知识和雾霾分布来估计场景亮度。在[18]中,Yang等人提出了一种解纠缠的端到端去雾网络,仅使用非成对监督和多尺度对抗训练来生成逼真的无雾图像。文献[6],Cai等提出了一个可训练的端到端方案,称为DehazeNet用于基于大气散射模型设计的介质传输评估。

基于CNN的技术侧重于估计给定图像的透射图或大气光,在应用平滑操作后,通过(3)所示的大气散射模型恢复干净的图像。[24]提出了一种有效的CNN用于图像去雾,使用三种建筑变体来研究去雾图像质量对参数计数的依赖,并对设计进行建模。在[28]中,提出了一种基数色融合网络来去除单幅图像的雾霾。[24]的前两个版本使用单个编码器-解码器卷积提取器,第三个版本使用编码器-解码器对来估计大气系数和传输图。以上模型的每个版本都使用金字塔图像细化网络来完成最终的去雾图像。[28]采用两阶段网络,利用颜色融合网络实现图像去雾。第一阶段融合朦胧图像中的颜色数据,生成多通道深度图,第二阶段使用多通道多尺度CNN从之前的暗通道估计场景传输图,恢复场景。另一方面,rank -CNN提出增加CNN的结构,使统计和结构中模糊图像的属性可以同时被捕获。文献[25]提出了一种类似U-Net的编码器-解码器深度网络,通过渐进式特征融合,直接学习从观测模糊图像到ground-truth的极度非线性变换函数。在[26]中,以CNN作为质量基准,提出了一种技术,将不同的输出patch与初始模糊版本进行比较,然后选择最好的一个来揭开一个清晰的图像patch。最近,AOD-NET [7] (All-in-One - dehaze Network)提出了一种基于重构(1)的全端到端去雾CNN模型,该模型直接从𝐼(首当其冲)生成𝐽(首当其冲),不需要任何其他中间步骤,如透射图或大气光

AOD-Net的架构由两个部分组成[7]:一个包含五个卷积层的k估计模块,通过𝐼(分)来估计𝐾(分);一个清晰的图像生成模块,通过𝐾(分)和𝐼(分)来估计𝐽(分),使用以下公式:

端到端的学习过程使AOD-NET简单,易于适应任何其他体系结构。密集连接金字塔去雾网络(DCPDN)[29]和门控上下文聚合网络[30]是其他几种图像去雾技术。在[30]中,使用端到端门通上下文聚合网络而不是使用传统的低水平图像先验作为恢复约束对图像进行去雾处理,而在[29]中,使用端到端网络对传输图和大气光进行集体学习。文献[31]提出了使用先验大气光照的多尺度卷积网络(MSCNN)。

尽管在除雾方面已经做出了巨大的努力,但由于缺乏足够数量的真实雾霾对和相应的无雾图像,对除雾过程的验证仍然是一个较少访问的问题。已经创建了几个数据集来解决这个问题,例如live (REalistic Single-Image DEhazing)[32],由合成的和真实的模糊图像组成;I-HAZE[33],由35对朦胧和匹配的无朦胧(地真)室内图像组成;O -HAZE[34],由45个不同的户外场景组成,代表无雾图像中收集的相同视觉材料;Dense-Haze[35],一个以厚重均匀的雾霾场景为特征的数据集,包括33对真实雾霾和匹配的不同室外场景的无雾霾图片;在[36]中实现了1449张RGBD图片的数据集,捕获了464种不同的室内场景,并进行了全面的注释。

生成式对抗网络(GANs)是一种深度架构,受到了与机器学习相关的不同领域[37]研究人员的关注,具有模仿任何数据分布的潜力。

已经有人尝试将gan应用于单幅图像去雾[38,39]。Zhang等人在[38]中提出了一种多任务技术,包括通过gan进行地图评估、模糊特征提取和图像去雾三个模块。使用结合感知损失和欧几里得损失的损失函数对所有模块进行训练。增强型Pix2pix去雾网络(Enhanced Pix2pix Dehazing Network, EPDN),无需依赖物理散射模型即可生成无雾图像[40]。

EPDN架构集成在GAN中,随后是一个精心设计的增强器。人们已经努力应用条件氮化镓(cGAN)[41]来去除雾霾。在[9]中,清晰图像是通过可训练的端到端cGAN架构来估计的。在[10]中,使用梯度惩罚来训练GAN来实现Lipschitz限制,以了解基于雾霾的清晰图像的概率分布如何影响图像。

由于来自不同领域的组合信息在大多数情况下难以定位,cycleGAN提供了无监督的训练能力。CycleGAN是在[42]中使用循环一致对抗网络实现的,用于非配对图像到图像的翻译。这在训练过程中难以获得成对图像的图像去雾等应用中很有帮助。Disentangled Dehazing Network (DDN)在[8]中实现,通过联合使用三个生成器来估计场景亮度、地图传输和全局光大气。这些技术在训练阶段涉及大气散射模型的参数估计,这与所提出的技术不同。

受cycleGAN在雾霾去除方面的成功启发,我们提出了一种改进的cycleGAN结构,该结构采用编码器-解码器(ED)结构作为发生器。为了使用端到端系统生成清晰的图像,我们将AOD-NET体系结构[7]放入ED体系结构中。接下来,我们将详细讨论所提出的方法。

模型构建:

我们提出了一种改进的CycleGAN架构,用于图像的端到端去雾,并进行了两个主要修改。首先,我们用AOD-NET架构替换CycleGAN特征转换器部分。

其次,我们应用一个特定于除雾问题的损失函数。在本节中,我们首先概述AOD-Net体系结构,然后描述拟议的cycleGAN体系结构。最后讨论了所提出的损失函数

AOD-NET架构

我们使用AOD-NET[7]作为CycleGAN架构[42]生成器中的特征转换器。AOD-NET包括一个估计模块𝐾,该模块有5层卷积来估计𝐾(分),以及许多元素明智的乘法层和加法层来检索清晰的图像。k估计模块由五层卷积组成,其中“concat1”层结合了“conv1”和“conv2”层的特征。同样,“concat2”层将“conv2”和“conv3”层的特征结合在一起。类似地,“concat3”结合了“conv1”、“conv2”、“conv3”和“conv4”层的特征。使用k -估计模块是为了完整的端到端建模,以恢复干净的图像。

在本文提出的方法中,我们对传统的AOD-NET体系结构做了一些修改,使所提出的模型对称,从而可以适应CycleGAN中生成器模型的对称体系结构。修改仅与特征尺寸有关,以符合CycleGAN发生器的输入-输出特征尺寸。修改后的AOD-NET架构如图2所示。

使用AOD-NET的主要原因是它可以与其他深层模型(如CycleGAN的生成器)无缝集成,形成一个在朦胧上用一种含蓄的方法进行高级功能的图片去雾管道。此外,AOD-NET架构[7]在提取与雾霾相关的图像特征方面也有良好的记录。AOD-NET在室外图像除雾方面具有良好的泛化效果。

 提议的CycleGAN架构

所提出的CycleGAN架构如[8],因为该架构在单幅图像去雾中产生了令人印象深刻的结果。然而,在[8]的生成器模型中,我们在编码器和解码器架构之间包含了一个遵循AOD-NET架构的特征转换器。该网络的发生器由编码器transformer解码器组成。该编码器用于从模糊图像中获取潜在特征。特征转换器feature transformer用于将从编码器获得的给定图像的潜在特征理想地转换到不同的特征空间中,以获得相应的无雾图像的潜在特征。最后使用解码器从发生器的transformer部分获得的变换特征生成清晰图像。

图3显示了所提出的CycleGAN模型中使用的生成器架构。我们使用3个卷积层用于编码器部分,2个反卷积层用于解码器部分。AOD-Net中转换层的权值使用预训练权值进行初始化,预训练权值是通过使用[7]中的超参数设置训练AOD-Net获得的。

我们使用AOD-NET架构作为生成器内部的特征转换器,将从所提出的CycleGAN架构的编码器部分获得的特征转换到所需的特征空间,并馈送到CycleGAN的生成器架构的解码器中,以生成去噪图像的建议。

所提出的除雾架构如图4所示,由两个发生器A和B以及两个鉴别器DA和DB组成。[8]中的CycleDehaze架构受益于使用周期一致性损失和对抗性损失,从而有利于清除/添加雾霾。因此,该架构必须保持输入图像纹理数据,并产生独特的无雾输出。循环一致性损失使我们能够训练一个不特别需要成对的清晰和模糊图像实例的模型。然而,我们在组合损失函数中加入了SSIM损失,以增强地面真值与无雾图像之间的相似性。接下来讨论所提出的损失函数。

损失函数

所提出的CycleGAN架构的目标函数(损失函数)是基于CycleDehaze[8]中提出的损失函数,它是对抗性损失和周期一致性损失的结合。生成器A的对抗损失(即最小二乘损失)

其中A(xi)是A生成器A生成的图像,xi是X域的图像,Dy是鉴别器。同样地,生成变量B的对抗损失

 

因此,总体对A𝐿)为:

周期一致性损失是逐像素平均误差(𝑀),它使用一个假设来证明当我们使用图像上的函数变量变量将样本从域𝑋转换为𝑌,然后使用逆函数变量变量变量变量将样本映射回𝑋时,我们是多么接近于返回到原始模型。同样,当样本从𝑌转换到𝑋再转换回𝑌时所造成的损失,可以用P𝑀E来估计,如下所示,这是原始图像和重建图像之间逐像素的误差 

其中𝑚为批处理大小。因此,[8]中使用的损失函数为:

 

其中控制循环一致性丢失的影响。因此,对生成器A和B的更新如下:

 

我们尝试通过分别使用生成器A或B来优化这个损失函数,以尝试产生清晰/模糊的图像。 

除了上述所示的循环一致性损失函数外,本文还考虑了一个额外的SSIM损失函数,以提高生成的清晰图像的相似度指数。这种SSIM损失以及像素级损失有助于更好地恢复处于杂乱或较暗背景中的对象。引入SSIM损失是为了使生成的图像更具视觉吸引力。SSIM损失函数定义如下:

其中,𝐼1和𝐼2两幅图像之间的𝑠𝑠-𝑚(𝐼1,𝐼2)通过标准差为多项式的高斯滤波器计算得到。使用该滤波器计算两幅图像的每个像素的均值和标准差,最后使用以下公式计算像素i处的ssim

 

其中,在11 × 11高斯滤波下,为图像在像素i处的均值,为图像在像素i处的标准差。常数C1和C2用来防止损耗值趋于∞。C1和C2的考虑值分别为0.0001和0.0004,为控制循环一致性损失和对抗性损失的影响,使用10的值。

最后,提出的模型的损失函数可以写成

 

上式中的PME表示逐像素平均误差,现在上式中的第二部分是新考虑的循环一致性损失。这里𝜆1用于平衡像素平均损失和循环一致性损失中的SSIM损失的总体影响。通过使用不同的𝜆1值进行实验,得到的最佳值为0.84,增加了ssim损失的权重,使得该算法更加注重权重的学习,能够更明显地从模糊图像中恢复细微结构。接下来,我们将描述所提出方法的实现细节。 


实现细节

我们在NVIDIA TITAN X GPU上使用TensorFlow框架训练所提出的模型。每个实验模型训练100个epoch, batch size为1,每个考虑模型的平均训练时间为3天。使用学习率为0.0001的Adam Optimizer进行训练。当GAN训练用于生成大尺寸的图像时,它是不稳定的,这限制了我们将图像大小设置为256 × 256的固定分辨率。

该生成器结合了AODNET体系结构的优点,利用它将特征从一个空间转换到另一个空间,生成高视觉质量的清晰图像。在训练和测试期间,我们将图像随机裁剪为256 × 256大小,

图像被降采样到256 × 256的大小。该模型使用1的批处理大小进行训练,以便生成器可以以更好的方式从每个图像中捕获更多的鲁棒特征。

我们的动机是用AOD-Net作者提出的模型取代原始的循环GAN变压器,这是一种单幅图像去雾的方法。AOD-Net的超参数已经在流行的图像去雾数据集上进行了训练。经过微调后,我们对提出的方法进行了实验,但结果并没有得到改善。因此,我们没有考虑在与GAN的生成器结合后调整AOD-Net中的超参数。

结论:我们提出了一个端到端的循环gan网络,用于单幅图像去雾,在不估计大气散射模型参数的情况下,从输入的雾霾图像中产生无雾的图像。

此外,我们的网络还提供对朦胧和地面图像的非配对训练。我们通过将雾霾专用transformer网络整合到GAN发生器中来增强标准CycleGAN网络,以保持生成的透明图像的视觉质量。其次,我们提出了一种针对单幅图像去雾问题的损失函数,将加权SSIM损失添加到传统的去雾损失函数中。我们的实验表明,在CycleGAN架构的生成器中包含特定雾霾的transformer网络可以提高图像的去雾性能。此外,在网络的损失函数中引入SSIM损失,提高了所提模型的性能,保留了图像的微小纹理。观察到SSIM损失有助于产生更接近地面真实的图像的能力,在未来,SSIM损失还可以用于其他一些应用,如图像去噪、去雨或图像到图像的转换。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: GAN(Generative Adversarial Networks)是一种通过对抗生成的神经网络模型,可以用于生成高保真度的新图像、视频以及音频等。github上有很多GAN的代码,因此可以通过搜索和阅读这些代码来学习和理解GAN的实现原理和应用方法。 在github上,我们可以找到很多GAN的代码示例,例如基于Tensorflow的DCGAN、WGAN、CGAN等实现。这些代码中,通常包含了整个网络的搭建过程、训练过程以及评估指标等内容。通过仔细阅读这些代码,我们可以了解GAN网络的实现细节,以及调试和优化GAN的方法。同时,我们还可以借鉴代码中的技巧和优秀的实现方式,来提高自己的机器学习水平。 总之,在github上学习GAN网络的代码是一种相对高效和实用的方法,可以帮助我们深入理解GAN的内部机制,学习到实践经验,并加速我们在GAN方向的研究进展。 ### 回答2: GAN网络代码可以在GitHub上找到,这是一个公开的代码库,开发者可以在其中找到各种GAN网络的实现代码和文献。GAN网络是一种深度学习模型,其能够生成与训练数据有相似分布特征的新数据,被广泛应用于图像生成、风格转换、文本生成等领域。 在GitHub上,GAN网络代码的数量众多,其中包括DCGAN、WGAN、Pix2Pix、CycleGAN等常用的GAN网络实现。这些代码基于不同的深度学习框架,包括TensorFlow、PyTorch等。开发者可以根据自己的需要选择不同的GAN网络实现。同时,GitHub上也有许多GAN网络的预训练模型供使用。 GitHub的GAN网络代码库也提供了很好的学习资源,开发者可以通过研究代码实现来深入了解GAN网络的原理和实现过程。并且,开发者还可以贡献自己的代码或者进行修改和改进,共同推动GAN网络领域的发展。 总之,GAN网络代码库是深度学习领域中一个非常有价值的资源,可以帮助开发者更好地掌握GAN网络的使用和实现细节,促进该领域的快速发展。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值