概述:
使用增强循环一致对抗网络的端到端单图像雾去除
本文开发了一个端到端的学习系统,它使用不成对的雾和无雾训练图像、对抗性鉴别器和循环一致性损失来自动构建去雾系统。与 CycleGAN 类似,我们的系统有两条转换路径;一个将雾图像映射到无雾图像域,另一个将无雾图像映射到雾图像域。我们的系统不是单阶段映射,而是在每个转换路径中使用两阶段映射策略来提高除雾效果。此外,我们通过嵌入大气退化原理和天空先验来明确使用网络中的先验知识,将无雾图像映射到有雾图像域。此外,还为去雾研究贡献了第一个真实世界自然无雾图像数据集。我们的多个真实雾图像数据集 (MRFID) 包含 200 个自然户外场景的图像。对于每个场景,有一个清晰的图像和对应的四个不同雾密度的雾图像。在雾到无雾的转换路径中,雾图像被映射到第一个无雾域。由于第一阶段映射的输出可能仍然包含残留雾,它们被传递到第二个映射网络以进一步去除雾。类似地,在从无雾到雾的转换路径中,无雾图像首先被转换到雾图像域,然后将结果传递到第二个转换网络到雾图像域。在构建无雾到雾域转换时,我们将大气退化模型 (1) 明确嵌入到学习过程中。此外,引入了天空先验以减少伪影。我们展示了合成雾和自然雾图像数据集的实验结果,以展示新的去雾技术的有效性。
去雾框架:
图 :Cycle-Defog2Refog 网络的架构。 X 是输入的有雾图像。 G 表示生成器 DefogNet,G(X) 是去雾图像。 Y 是清晰的图像。 R 表示生成器 Refog-Net,R(Y) 是合成的雾图像。 Ed 表示生成器 Enhancer-Defog-Net(E-D-Net),它增强了去雾图像。 Er 表示生成器 Enhancer-Refog-Net(E-R-Net),用于增强合成图像。 Dfog 是用于对真实有雾图像和生成的有雾图像进行分类的对抗性鉴别器。 Dfogfree 是用于区分真实无雾图像和去雾图像的对抗性判别器。
Cycle-Defog2Refog 网络
该网络由两部分组成,一个除雾架构和一个重雾架构,如图2所示。 在除雾体系结构中,我们使用一个Refog网(R)和一个增强器除雾网(ED)来约束具有两个一致性雾损失函数和一个对抗性鉴别器Dfog-free的除雾映射函数,如图2(a)所示。 在Refog结构中,使用一个除雾网(G)和一个增强器Refog网(ER)来监督具有两个一致性无雾损失函数和一个对抗性鉴别器Dfog的refogging映射函数,如图2(b)所示。
Defog-net
除雾网络的详细信息如图 3 所示。对于生成器 G,我们采用 Johnson [14] 的编码器-解码器网络。我们在编码过程中使用 3 个卷积块,在解码过程中使用 3 个反卷积块。在编码器网络中,第一层有 32 个滤波器,内核大小为 7×7,步幅为 1,第二层有 64 个滤波器,内核大小为 3×3,步幅为 2,第三层有 128卷积核大小为 3×3,步幅为 2 的滤波器。解码器网络的每一层与编码器中的对称层具有相同数量的滤波器,但它们的卷积步幅为 1/2。此外,与 CycleGAN 类似,我们使用了 9 个残差块 [12]。
Refog-net
在传统的 CycleGAN 中,我们可以使用 CNN 直接生成有雾的图像来约束去雾映射函数。然而,在实践中,由于各种雾图像内容的多样性和复杂性,仅使用卷积神经网络很难拟合雾图像的分布。相反,我们引入了基于 CNN 的大气退化模型来合成有雾的图像。具体来说,我们使用 CNN 来估计透射图 T,并使用天空先验来估计大气光 A。
refog 网络的详细信息如图 4 所示。我们引入了一个 CNN 来估计传输图 T。该网络的每一层有 64 个滤波器,内核大小为 3×3,步幅为 1。在我们的网络中,我们使用5 层来估计传输 T。
估计A:我们首先从有雾的图像中分割出天空区域,然后将天空区域的平均像素值作为A。图像中天空的深度被认为是无穷大,即
在模型 (1) 中,透射率 T(x) 通常被描述为从物体到达相机的光部分,可以表示如下 [20]:
其中 β 是大气的散射系数,始终假定为常数。 d(x) 是场景点到相机的深度。将(2)式代入(3)式,计算两边的极限:
将等式代入大气散射模型得到:
区域为 A。那么,大气光可以计算为:
其中 是雾中天空区域的颜色通道是有雾图中天空区域的颜色通道,是处理每个 RGB 通道的每个像素 c∈{r,g,b} 的平均滤波器。对于没有天空区域或天空区域很少的雾图像,我们按照He[11]的方法取大气光值A。
E-Net
虽然天空优先策略可以防止伪影,但去雾图像的对比度通常较低,并且可能会因剩余的雾而丢失一些纹理信息。我们引入了增强器网络来提高生成图像的质量。这是我们方法中的另一个重要新功能。我们将此网络称为 E-Net,在实践中,该网络用于分别增强两个生成器 G 和 R 的图像纹理特征。我们在 Defog 架构中将其称为 Enhancer-Defog Net (E-D-Net,Ed)。在 Refog 架构中,我们将其称为 Enhancer-Refog Net (E-RNet,Er)。
一旦生成的图像 G(X) 和 R(Y) 分别被 E-D-Net 和 E-R-Net 增强,损失函数定义如下:
其中 Ed 表示 E-D-Net,Er 表示 E-R-Net。 X 是有雾的图像,Y 是无雾的图像。
Discriminator
判别器的作用是区分图像是真还是假。在我们的网络中,我们有两个鉴别器。如图2所示,Dfog用于区分输入的有雾图像和R生成的图像;同样,Dfog-free 用于区分 G 生成的图像和输入的清晰图像。对于鉴别器网络,我们使用 5 个卷积块来分类图像是真还是假。每层具有相同的内核大小 4×4,步长为 2,过滤器从低到高分别为 64、128、256、512、1。
Cycle-Defog2Refog 的完整目标
在这项工作中,我们使用混合损失函数。我们首先使用生成对抗损失来监督网络。对于 refog 映射函数 R 及其判别器 Dfog,refog 的对抗性损失定义如下:
其中,R 是图 2 中的 refog 网络,而 Dfog 旨在区分 R(Y) 生成的雾图像和真实的雾图像 X。以类似的方式,去雾对抗性损失定义如下:
在上面的等式中,G 和 R 能够最小化目标,对抗试图最大化目标的对手 和。但是,当我们只使用对抗性损失时,生成的结果中会出现一些伪影。我们还发现,仅使用这种损失函数很难从有雾的图像中去除雾。
为了更好地去除雾并保留更多的纹理信息细节,我们引入了另一个损失函数,定义为 Cycle-Refog 损失。该函数用于最小化有雾图像 X 与其重构的雾图像 R(G(X))、清晰图像 Y 与其重构的清晰图像 G(R(Y)) 之间的目标(如图 2 所示)。我们将此目标表述为:
此外,为了从有雾的图像中学习更多的纹理信息,引入了基于预训练 VGG16 [28] 的感知损失来进一步约束生成器,其定义为:
其中 Pi 表示 VGG16 网络第 i 层的特征图。
最后,结合重雾对抗损失、除雾对抗损失、增强剂损失和循环重雾损失,我们的总损失函数为:
结果
S和R表示雾的浓度
e可见边缘
r对比度恢复质量
δ像素的归一化饱和值