摘要
(1)先前工作出现的问题:现有的大部分方法都是在合成雾图上训练去雾模型,由于 域偏移 (domain shift) (或者说是域间差异),它们对真实雾图的泛化能力较差。
(2)该文提出的方法:提出了一种域适应范式 (domain adaptation paradigm),它由一个图像转换模块和两个图像去雾模块组成。
(3)具体实现:首先采用双向变换网络,通过将图像从一个域变换到另一个域,以弥补合成域和真实域之间的差距。然后,使用变换前、后的图像来训练所提出的两个图像去雾网络 (采用一致性约束)。在此阶段,通过利用清晰图像的特性 (如暗通道先验和图像梯度平滑) 将真实雾图纳入到去雾训练中,以进一步提升域适应性。通过端到端的方式训练图像变换和去雾网络,可以获得更好的图像变换和去雾效果。
1.Introduction
1.1 单图像去雾(Single image dehazing)的目的是从朦胧的输入中恢复干净的图像, 根据物理散射模型,通常将雾化过程公式被定义为:
I
(
x
)
I(x)
I(x) =
J
(
x
)
t
(
x
)
+
A
(
1
−
t
(
x
)
)
J(x)t(x) + A(1 - t(x))
J(x)t(x)+A(1−t(x))
其中,
I
(
x
)
I(x)
I(x)和
J
(
x
)
J(x)
J(x)分别表示雾化图像和干净图像,A是全球大气光照(global atmosphere light),
t
(
x
)
t(x)
t(x)是透射图(transimission map)。 透射图可以表示为
t
(
x
)
t(x)
t(x)=
e
−
β
d
(
x
)
e^{-\beta d(x)}
e−βd(x),其中
d
(
x
)
d(x)
d(x)和β分别表示场景深度和大气散射参数。 给定一个模糊的图像
I
(
x
)
I(x)
I(x),大多数除雾算法都尝试估计
t
(
x
)
t(x)
t(x)和A。
1.2 从有雾图像估计透射图(transimission map)通常是不适定的问题(ill-posed problem)。 早期的基于先验的方法试图通过利用清晰图像的统计特性来估计透射图,例如暗通道先验和色线先验。 不幸的是,这些图像先验很容易与实践不一致,这可能导致不正确的透射近似。
不适定问题就是:一个输入图像会对应多个合理输出图像,而这个问题可以看作是从多个输出中选出最合适的那一个。
1.3 为解决ill-posed problem问题:已通过使用CNN来估计transimission map,或直接预测清晰的图像。但是,基于深度学习的方法需要依靠大量真实的有雾图像及其对应的无雾图像进行训练。
存在的问题:通常,在现实世界中获取大量真实的图像是不切实际的。
因此大部分模型都依靠合成的有雾数据集进行训练。
1.4 为解决利用合成的有雾数据集进行训练问题:作者提出了一种用于单图像去雾的域自适应框架(Domain adaptation framework)。
- 该框架包括两个部分,即图像翻译模块和两个与域相关的除雾模块(一个用于合成域,另一个用于真实域)。 为了减少域之间的差异,我们的方法首先使用双向图像翻译网络将图像从一个域转换为另一个域。由于图像混浊(带雾的图像)是一种噪声,并且十分不一致地取决于场景深度,因此作者将深度信息合并到转换网络中,以指导将合成图像转换为真实的有雾图像。
- 然后,与域相关的除雾网络将该域的图像(包括原始图像和翻译后的图像)作为输入以执行图像除雾。 此外,我们使用一致性损失来确保两个除雾网络生成一致的结果。在此训练阶段, 为了进一步提高实际域中网络的泛化能力,我们将真实的有雾图像纳入训练中。我们希望真实的有雾图像的去雾结果能够具有清晰图像的一些特性,例如暗通道先验和图像梯度平滑。我们以端到端的方式训练图像转换网络和除雾网络,以便它们可以彼此改进。
1.5 该篇文章的贡献:
- 作者提出了用于图像去雾的端到端的域自适应框架,该框架有效地弥合了合成雾霾图像和真实世界中雾霾图像之间的差距。
- 作者证明将真实的有雾图像纳入训练过程可以提高除雾性能。
- 作者对合成数据集和真实世界的有雾图像进行了广泛的实验,这表明所提出的方法与最新的除雾方法相比具有良好的性能。
2.Related Work
2.1 Single Image Dehazing
2.1.1 Prior-based methods:
基于先验的方法基于清晰图像的统计信息来估计透射图和大气光强度。 具体来说,
-
Tan提出了一种对比度最大化的图像去雾方法,因为它观察到清晰的图像往往比其有雾的图像具有更高的对比度。
-
He利用暗通道先验(DCP)来估计传输图,该图基于以下假设:无雾斑块中的像素在至少一个颜色通道中接近于零。后续工作提高了DCP方法的效率和性能。此外,采用了衰减先验来恢复模糊图像形成的深度。
-
Fattal使用色线假设来恢复场景传输,该场景断言小图像块的像素呈现一维分布。
-
同样,Berman假设数百种不同的颜色可以很好地逼近清晰图像的颜色,然后根据此先验图像进行去雾处理。
尽管已经证明这些方法对于图像去雾是有效的,但是由于假定的先验并不适合于所有真实世界的图像,因此它们的性能固有地受到限制。
2.1.2 Learning-based Methods:
许多方法直接利用深度CNN来估计transimission map 和 atmospheric light,然后根据退化模型恢复干净的图像。
-
蔡等人提出了端到端的除雾模型DehazeNet,以根据模糊图像估计transimission map。
-
任等人利用从粗到细的策略来学习有雾输入和transimission map之间的映射。
-
Zhang和Patel 提出了一个密集连接的金字塔网络来估计transimission map。
-
Li等人提出了一种AOD-Net来估计重新构造的物理散射模型的参数,该模型将传输和大气光整合在一起。而且,已经提出了一些端到端方法来直接恢复干净图像,而不是估计transimission map 和 atmospheric light。
-
任等人采用门控融合网络直接从有雾的输入中恢复干净的图像。
-
Qu等人将图像去雾问题转化为图像到图像转换问题,并提出了一种增强的pix2pix去雾网络。
但是,由于合成数据与真实数据之间存在领域差距,因此在应用于实际域时,在合成图像上训练的基于CNN的模型往往会出现明显的性能下降。
-
为此,李等人提出了一种半监督除雾模型,该模型在合成和真实雾度图像上均经过训练,因此在合成和真实雾度图像之间享有领域适应性(domain adaptivity)。
-
但是,仅将真实的雾度图像应用于训练并不能真正解决域偏移问题。 与上述方法不同,作者的模型首先应用图像转换网络将图像从一个域转换为另一个域,然后使用转换后的图像及其原始图像(合成图像或真实图像)在合成域和实域上执行图像去雾处理 )。 所提出的方法可以有效地解决域移位问题。
2.2 Domain Adaptation
-
域自适应(domain adapatation)旨在减少不同域之间的差异。现有工作可以执行功能级别或像素级别的适应(feature-level or pixel-level)。 特征级适应方法旨在通过最小化最大平均差异或在特征空间上采用对抗性学习策略来调整源域和目标域之间的特征分布。 另一研究领域集中在像素级自适应。 这些方法通过应用图像间转换学习或样式转换方法来增加目标域中的数据,从而解决了domain shift问题。
-
作者利用CycleGAN的优势使真实的模糊图像适应了在合成数据上训练的除雾模型。 此外,由于深度信息与图像雾度的形成密切相关,因此作者将深度信息合并到翻译网络中,以更好地指导真实的有雾图像的翻译。
3. Proposed Method
3.1 Method Overview
-
给定合成数据集 X S X_S XS = { \{ { x s x_s xs, y s y_s ys } s = 1 N l \}^{N_l}_{s = 1} }s=1Nl 和真实模糊图像集 X R X_R XR = { \{ { x r x_r xr } l = 1 N u \}^{N_u}_{l = 1} }l=1Nu,其中 N l N_l Nl和 N u N_u Nu表示合成和真实有雾图像的数量。 我们旨在学习一个可以从真实的有雾图像中准确预测清晰图像的图像去雾模型。 由于域移位(domain shift),仅在合成数据上训练的除雾模型无法很好地推广到真实的模糊图像。
-
为了解决这个问题,作者提出了一种域自适应框架,它由两个主要部分组成:图像转换网络 G S → R G_{S→R} GS→R和 G R → S G_{R→S} GR→S,以及两个除雾网络 G S G_S GS和 G R G_R GR。图像转换网络将图像从一个域翻译到另一个域,以弥合它们之间的鸿沟。 然后,除雾网络使用翻译后的图像和源图像(例如合成图像或实物图像)执行图像除雾。
-
如图一所示,所提出的模型将真实的有雾图像 x r x_r xr和合成图像 x s x_s xs及其对应的深度图像 d s d_s ds用作输入。我们首先使用两个图像转换器获得相应的转换图像 x s → r x_{s→r} xs→r = G S → R ( x s , d s ) G_{S→R}(xs,ds) GS→R(xs,ds)和 x r → s = G R → S ( x r ) x_{r→s} = G_{R→S}(x_r) xr→s=GR→S(xr)。然后,我们将 x s x_s xs和 x r → s x_{r→s} xr→s传递给 G S G_S GS,将 x r x_r xr和 x r → s x_{r→s} xr→s传递给 G R G_R GR进行图像去雾。
3.2 Image Translation Module
- 图像转换模块包括两个转换器:合成到真实(synthetic to real)网络 G S → R G_{S→R} GS→R和真实到合成(real to synthetic)网络 G R → S G_{R→S} GR→S。 G S → R G_{S→R} GS→R网络以( X s X_s Xs, D s D_s Ds)作为输入,并生成与真实有雾图像相似样式的翻译图像 G S → R G_{S→R} GS→R( X s X_s Xs, D s D_s Ds)。另一翻译器 G R → S G_{R→S} GR→S反向执行图像翻译。由于深度信息与雾度公式高度相关,因此我们将其合并到发生器 G S → R G_{S→R} GS→R中,以在实际情况下生成具有相似雾度分布的图像。
- 作者采用空间特征变换(SFT)层将深度信息合并到翻译网络中,该网络可以有效融合深度图(depth map) 中的特征并合成图像。如图二所示,SFT层首先应用三个卷积层以从深度图(depth map) 提取条件图φ。 然后,将条件图馈送到其他两个卷积层以分别预测调制参数γ和β。最后,我们可以通过以下方式获得输出移位特征:
⊙ ⊙ ⊙是按元素乘法。 在图像转换器 G S → R G_{S→R} GS→R中,我们将深度图(depth map) 作为引导,并使用SFT层来变换倒数第二卷积层的特征。
翻译后,合成图像相对更接近真实世界的有雾图像, 如图三所示。
3.3 Dehazing Module
- 作者的方法包括两个除雾模块 G S G_S GS和 G R G_R GR,分别对合成和真实域进行图像除雾。 G S G_S GS将合成图像 x s x_s xs和转换后的图像 x r → s x_{r→s} xr→s用作输入以执行图像去雾。 G R G_R GR在 x r x_r xr和 x s → r x_{s→r} xs→r上训练。这两个图像除雾网络都使用(带有跳过连接和侧输出的)标准的编码器解码器架构。
- 每个域中的除雾网络共享相同的网络体系结构,但具有不同的学习参数。
3.4 Training Losses
3.4.1 Image translation Losses.
- 翻译模块(Translate module)的目的是学习图像翻译器 G S → R G_{S→R} GS→R和 G R → S G_{R→S} GR→S,以减少合成域 X S X_S XS和真实域 X R X_R XR之间的差异。对于翻译器 G S → R G_{S→R} GS→R,我们希望 G S → R ( x s , d s ) G_{S→R}(x_s,d_s) GS→R(xs,ds)与真实的有雾图像 x r x_r xr相似,以至于不能区分。因此,采用图像级鉴别器(image-level discriminator) D R i m g D^{img}_R DRimg和特征级鉴别器(feature-level discriminator) D R f e a t D^{feat}_R DRfeat,通过对抗性学习方式进行minmax游戏。
-
D
R
i
m
g
D^{img}_R
DRimg目的是对齐真实图像
x
r
x_r
xr和转换后的图像
G
S
→
R
(
x
s
,
d
s
)
G_{S→R}(x_s,d_s)
GS→R(xs,ds)之间的分布。 判别器(discriminator)
D
R
f
e
a
t
D^{feat}_R
DRfeat帮助对齐
x
r
x_r
xr的feature map和
G
S
→
R
(
x
s
,
d
s
)
G_{S→R}(x_s,d_s)
GS→R(xs,ds)之间的分布。 对抗损失定义为:
- 类似于 G S → R G_{S→R} GS→R,翻译器 G R → S G_{R→S} GR→S具有另一个图像级对抗损失(image-level adversarial loss)和特征级对抗损失(feature-level adversarial loss),分别表示为 L G a n i m g ( X S , X R , D S i m g , G R → S ) L^{img}_{Gan}(X_S,X_R,D^{img} _S,G_{R→S}) LGanimg(XS,XR,DSimg,GR→S), L G a n f e a t ( X S , X R , D S f e a t , G R → S , G S ) L ^{feat}_{Gan}(X_S,X_R,D^{feat}_S,G_{R→S},G_S) LGanfeat(XS,XR,DSfeat,GR→S,GS)。
- 另外,通过利用循环一致性损失来规范翻译网络的训练。具体来说,当将图像
x
s
x_s
xs依次传递到
G
S
→
R
G_{S→R}
GS→R和
G
R
→
S
G_{R→S}
GR→S时,我们期望输出应该是相同的图像,对于
x
r
x_r
xr反之亦然。
即, G R → S ( G S → R ( x s , d s ) ) ≈ x s G_{R→S}(G_{S→R}(x_s,d_s)) ≈ x_s GR→S(GS→R(xs,ds))≈xs,和 G S → R ( G R → S ( x r ) , d r ) ≈ x r G_{S→R}(G_{R→S}(x_r),d_r) ≈ x_r GS→R(GR→S(xr),dr)≈xr。 循环一致性损失可以表示为:(思路来源于cyclegan)
- 最后,为了鼓励生成器在输入和输出之间保留内容信息,我们还利用了一个身份映射损失,表示为:(思路来源于cyclegan)
- 翻译模块的总体损失函数如下:
3.4.2 Image dehazing Losses.
- 现在我们可以将合成图像
X
S
X_S
XS和相应的深度图像
D
S
D_S
DS传输到生成器
G
S
→
R
G_{S→R}
GS→R,并获得一个新的数据集
X
S
→
R
=
G
S
→
R
(
X
S
,
D
S
)
X_{S→R} = G_{S→R}(X_S,D_S)
XS→R=GS→R(XS,DS),其样式与真实的有雾图像相似 。 然后通过半监督的方式在
X
S
→
R
X_{S→R}
XS→R和
X
R
X_R
XR上训练图像去雾网络
G
R
G_R
GR。 对于监督分支,我们应用mseloss以确保预测图像
J
S
→
R
J_{S→R}
JS→R接近清晰图像(clean images)
Y
S
Y_S
YS,可以将其定义为:
- 在无监督的分支中,利用总变分损失(total variation loss)和暗通道损失(dark channel loss)正规化除雾网络,以产生具有与清晰图像相似的统计特征的图像。 总变分损失(total variation loss)是预测图像
J
R
J_R
JR上的L1-正则化梯度:
- 其中∂h表示水平梯度算子,∂v表示垂直梯度算子。此外,最近的工作提出了暗信道的概念,可以表示为:
- 其中x和y是图像I的像素坐标,
I
c
I^c
Ic表示I的第c个颜色通道,N(x)表示以x为中心的局部邻域。 He等人,暗通道图像的大多数强度为零或接近零。 因此,作者应用以下暗通道(Dark Channel, DC)损失以确保预测图像的暗通道与干净图像的暗通道一致:
- 此外,作者还在
X
S
X_S
XS和
X
R
→
S
X_{R→S}
XR→S上训练了一个互补的图像去雾网络
G
S
G_S
GS。 同样,作者应用相同的监督损失和非监督损失来训练除雾网络
G
S
G_S
GS,如下所示:
- 最后,考虑到两个除雾网络的输出对于真实的有雾图像应该是一致的,即
G
R
(
X
R
)
G_R(X_R)
GR(XR) ≈
G
S
(
G
R
→
S
(
X
R
)
)
G_S(G_{R→S}(X_R))
GS(GR→S(XR)),我们引入以下一致性损失:
3.4.3 总体损失函数(Overall Loss Function)
总体损失函数为:
其中
λ
m
λ_m
λm,
λ
d
λ_d
λd,
λ
t
λ_t
λt和
λ
c
λ_c
λc是权衡权重。