本文提出了一种从模糊图像中直接恢复清晰图像的算法。这个问题是高度不适定的,大多数现有的算法往往使用手工制作的特征,如暗通道,颜色差异,最大对比度。与此相反,我们基于条件生成反求网络(cGAN)来解决这一问题,其中清晰图像由端到端的可训练神经网络来估计。与基本cGAN中的生成网络不同,我们提出了一种编码器和解码器结构,使其能产生更好的结果。为了生成逼真清晰的图像,我们进一步修改了基本的cGAN格式,引入了VGG特征和L1正则化梯度先验。我们还合成了一个包括室内和室外场景的模糊数据集来训练和评估所提出的算法。大量的实验结果表明,该方法在综合数据集和真实世界的模糊图像上都优于现有的方法。
去雾过程可以表示为:
其中I(x)和J(x)分别表示模糊图像和场景亮度。A为全局背景光线,t(x)为介质透射图。如果模糊是均匀的, the transmission map 可以表示为 t(x) = e−ρd(x),其中ρ是介质消光系数和d (x)是场景深度。x是图像中的像素。由于只有观测到的图像I(x)是已知的,恢复场景亮度J(x)是高度不适定的。
近年来,我们在图像去雾方面取得了重大进展,这主要是由于使用手工制作的特征来估计transmission maps和atmospheric lights [1、3、4、10、11、19、20、22、40]。广泛应用的手工制作的特征主要是基于颜色、纹理和对比度特性。然而,基于这些特性的方法在某些情况下并不适用,因为对这些特性的假设并不总是成立。近年来,一些基于深度学习的图像去雾方法被提出。这些方法首先利用卷积神经网络对transmission map进行估计,然后按照传统的方法对atmospheric lights进行估计,得到清晰的图像。然而,如果transmission map没有很好地估计,它们将相应地干扰atmospheric lights的估计。因此,最终恢复的图像通常包含颜色失真或伪影。由于现有的算法大多是分别对transmission map和atmospheric lights进行估计,因此对两者进行联合估计具有重要的研究意义。
我们的端到端可训练网络是基于cGAN的,其中的生成器包含一个编码器和解码器架构,这样它可以捕获更多有用的信息并生成更好的输出。判别器用于区分来自生成器的输出是否为假。为了保留生成器输出的细节,我们使用预先训练的VGG特征作为perceptual loss。由于生成器的最终输出通常包含artifacts,我们进一步提出了一个L1正则化梯度,以便在删除artifacts的同时保留重要的细节。
这项工作的贡献如下:
在[9]中,Goodfellow等人提出了GAN框架,通过对抗学习从随机噪声中生成逼真的图像。然而,GAN在训练过程中并不稳定,常常会在合成图像中产生噪声、颜色偏移等伪影。在GAN中加入条件信息可以更有效地学习[32]。
与原始的GAN[9]不同,cGAN算法通过优化以下目标函数,学习从输入图像I和随机噪声z中生成清晰的图像J。
该生成器的作用是从输入的模糊图像中生成清晰的图像。因此,它不仅要保留输入图像的结构和细节信息,而且要尽可能地去除雾。在“ResNet”[14]和“U-Net”[25]的启发下,我们引入对称层的跳跃连接,突破解码过程中的信息瓶颈。我们采用求和的方法来获取更多有用的信息,而不是简单地将对称层的所有通道连接起来。连接和求和的区别在5.1节中讨论。如图2(a)所示,生成器包含一个编码过程和一个解码过程。编码过程主要基于下采样操作,并提供解码过程对称层的特征映射。解码过程主要采用上采样操作和非线性空间传输。生成器结构和参数设置的详细信息如表1所示。
判别器用于辨别图像是真还是假。与[39]中的网络相似,我们开发了一个神经网络,其基本操作是卷积、 batch normalization 和 LeakyReLU 激活。对于判别器的最后一层,我们对特征图应用一个sigmoid函数,使概率得分可以归一化为[0,1]。判别器的结构如图2(b)所示。判别器结构和参数设置的详细信息包含在表2中。
令{Ii,i = 1,2,…,N}和{Ji,i = 1,2,…,N}表示模糊图像和对应的清晰图像。训练生成网络的一种直接方法是直接利用(2)中的原始cGAN公式,可以表示为
但是我们发现使用这个函数的cGAN算法并不能很好地除雾,并且在生成的图像上产生了一些伪影和颜色失真。为了恢复真实图像,我们引入了基于预先训练的VGG特征的perceptual loss来约束生成器,定义为
这里,Fi表示在ImageNet[26]上预先训练的VGG网络[31]第i层的特征映射。 perceptual loss 的影响已经在超分辨率、图像恢复等相关领域得到了证明[2,15,17]。与这些应用不同的是,我们发现使用(4)可以帮助恢复细节和去除雾霾,但它也相应地在恢复的图像中引入了伪影。这不可避免地降低了恢复图像的质量。
为了去除伪影,保留细节和结构,我们在生成器输出之前引入了L1正则化梯度和基于内容的像素级损失,定义为
||∇G(Ii)||1表示 total variation regularization,||G(Ii)−Ji||1是基于内容的pixel-wise损失,λ是正规化权重。这个loss function 能够删除伪影并保留细节。
最后,结合 adversarial loss、 adversarial loss、L1正则化梯度先验和基于内容的像素级损失对生成网络进行正则化,定义为
α,β和γ是正权重,生成器G通过最小化(6)进行训练。
在得到中间生成器G后,对判别器D进行更新:
……
该网络的详细结构和参数设置如表1所示。编码过程的每一层由卷积、 batch normalization和LeakyReLU组成。解码过程的每一层由deconvolution(fractionallystrided convolution[38])、batch normalization和ReLU组成。生成器的输入输出尺寸设置为256×256×3。将判别器的输入尺寸设置为256×256×6,输出尺寸为256×256×1。在训练过程中,我们根据经验设置α= 1,β= 150,γ= 150,λ= 10-5。学习速率设置为2×10−4。将生成器G和判别器D的更新比率设置为1。我们使用Adam优化方法[16]来训练我们的网络。该算法是在一台装有Nvidia Titan-X GPU的计算机上用Torch7实现的。
我们在合成数据集上评估了我们的算法,并将其与几种最先进的单图像去噪方法进行了比较,使用峰值信噪比(PSNR)和结构相似度指数(SSIM)。我们还使用相同的参数设置对原始cGAN进行了重新训练,以便进行公平的比较。定量评价结果如表3所示。与其他算法相比,该方法具有更高的PSNR和SSIM值。
在图4中,我们展示了来自合成测试数据集的三个示例。heet al.[11]的去雾结果显示,当场景对象与 atmospheric light 相似时(如第二行图像中红色框内的部分),存在一定的颜色畸变和遮挡伪影。这主要是由于不准确的 transmission maps 。Ren等人基于深度学习的[24]和Cai等人基于CNN[3]的方法 transmission maps,在一定程度上克服了[11]的局限性。因此,与He等人相比,去雾处理的伪影更少。然而,在估计的图像中仍然存在一些模糊残差。Li等人的方法[18]用CNN联合估计了的 transmission map和 atmospheric light 。然而,除雾结果仍然含有一些模糊残差。原始cGAN的除雾结果含有一些伪影和颜色失真。相比之下,我们提出的去雾方法生成的图像更清晰,伪影更少,细节更好。此外,与基线法(如cGAN)相比,我们提出的方法引入了新的损失函数。结果表明,新的损失函数能够较好地解决图像去雾问题。
该方法对图像噪声具有较强的鲁棒性。为了评价该方法的鲁棒性,我们在所有测试样本中加入了噪声水平在0.5%到3%之间的随机噪声。图8显示了几种最先进的方法在合成测试数据集上的量化结果。即使在噪声水平增加的情况下,我们的方法也能很好地工作。
该方法学习模糊图像到对应的清晰图像的映射函数,并基于合成数据集进行训练。然而,如果模糊模型不适用于模糊图像,则该方法将无法生成清晰的图像。从图9可以看出,本文提出的方法对光照模糊图像和夜间模糊图像效果不佳。这可能是因为我们的训练数据集不包含类似的样本。因此,模糊模型不能学习相应的映射函数。我们将致力于收集更全面的雾霾样本,优化模型,解决这些问题。