代码:https://github.com/ErinChen1/EPDN
目录
1. 摘要
本文提出了Enhanced Pix2pix Dehazing Network(EPDN),一个不依赖大气散射模型的去雾网络。EPDN包含一个多分辨率生成器,一个多尺度判别器和一个增强器。判别器在粗尺度上监督生成器生成真实的图像,紧接着增强器在细尺度上从生成器的结果中产生真实的无雾图像。
2. 网络结构
EPDN包含一个多分辨率生成器模块,一个增强器模块和一个多尺度判别器模块。该网络的整体结构如图1所示。
2.1 Multi-resolution generator
多分辨率生成器包含一个全局生成器
G
1
G_1
G1和局部生成器
G
2
G_2
G2,
G
1
G_1
G1和
G
2
G_2
G2都包含了一个卷积层作为开端,三个残差块和一个反卷积层作为尾端。
G
1
G_1
G1的输入为原始雾图两倍下采样后的结果。
G
1
G_1
G1嵌入到了
G
2
G_2
G2,即
G
1
G_1
G1的输出和
G
2
G_2
G2开端卷积层得到的特征图进行逐元素相加,相加结果输入到
G
2
G_2
G2的残差块中(详见图1)。
G
1
G_1
G1在粗尺度上生成图像,
G
2
G_2
G2在细尺度上生成图像。结合
G
1
G_1
G1和
G
2
G_2
G2便可生成一个从粗到细的图像。
2.2 Multi-scale discriminator
多尺度判别器包含两个不同尺度的判别器 D 1 D_1 D1和 D 2 D_2 D2。 D 1 D_1 D1和 D 2 D_2 D2拥有相同的框架,并且 D 2 D_2 D2的输入是 D 1 D_1 D1的输入的两倍下采样结果。 D 2 D_2 D2监督生成器在粗尺度上生成全局真实图像,而 D 1 D_1 D1会引导生成器重建细节。
2.3 Enhancer
增强器模块的框架如图2所示。
该框架引入了DCPDN中的金字塔池化模块。该模块能够使不同尺度的特征细节融入到最终的结果。如图2所示,增强器以两个3×3的卷积层作为开端,输出结果经均值池化层下采样为4×,8×,16×和32×四个不同尺寸的特征图。不同尺度的特征图提供不同的感受野,帮助图像在不同尺度上重建图像。之后,不同尺度的特征图由1×1卷积层进行降维。不同尺度特征图上采样到原始图像尺寸大小后,与开端卷积层的输出进行concat,作为最后3×3卷积层的输入。
3. 损失函数
总损失函数包含四个部分,如下:
L
E
P
=
L
A
+
λ
L
F
M
+
λ
L
V
G
G
+
L
F
(1)
L_{E P}=L_{A}+\lambda L_{F M}+\lambda L_{V G G}+L_{F} \tag{1}
LEP=LA+λLFM+λLVGG+LF(1)
其中, L A L_A LA为对抗损失, L F M L_{FM} LFM为特征匹配损失, L V G G L_{VGG} LVGG为感知损失, L F L_F LF为保真度损失。 L A L_A LA和 L F M L_{FM} LFM使GAN模块(即生成器和判别器)学习全局特征以及使用多尺度特征恢复原始图像的结构。 L V G G L_{VGG} LVGG和 L F L_F LF用于增强细节特征和保留原始色彩信息。为了简化模型, L F M L_{FM} LFM和 L V G G L_{VGG} LVGG使用相同的系数。
3.1 Adversarial Loss
考虑到有两个判别器
D
1
D_1
D1,
D
2
D_2
D2,对抗损失公式化如下:
L
A
=
min
G
~
[
max
D
1
,
D
2
∑
k
=
1
,
2
ℓ
A
(
G
~
,
D
k
)
]
(2)
L_{A}=\min _{\widetilde{G}}\left[\max _{D_{1}, D_{2}} \sum_{k=1,2} \ell_{A}\left(\tilde{G}, D_{k}\right)\right] \tag{2}
LA=G
min⎣⎡D1,D2maxk=1,2∑ℓA(G~,Dk)⎦⎤(2)
其中,
ℓ
A
(
G
~
,
D
k
)
\ell_{A}\left(\tilde{G}, D_{k}\right)
ℓA(G~,Dk)为判别器
D
k
D_k
Dk的单对抗损失,定义如下:
ℓ
A
(
G
~
,
D
k
)
=
E
(
X
)
[
log
D
k
(
X
)
]
+
E
(
X
)
[
log
(
1
−
D
k
(
G
~
(
X
^
)
)
)
]
(3)
\ell_{A}\left(\widetilde{G}, D_{k}\right)=E_{(X)}\left[\log D_{k}(X)\right]+E_{(X)}\left[\log \left(1-D_{k}(\tilde{G}(\hat{X}))\right)\right] \tag{3}
ℓA(G
,Dk)=E(X)[logDk(X)]+E(X)[log(1−Dk(G~(X^)))](3)
X X X和 X ^ \hat{X} X^表示Ground-Truth和雾图, G ~ ( X ^ ) \tilde{G}(\hat{X}) G~(X^)为GAN模型中生成器的生成结果,但不是EPDN的最终结果(最终结果由增强器输出)。
3.2 Feature Matching Loss
特征匹配损失定义如下:
L
F
M
=
min
G
~
[
∑
k
=
1
,
2
ℓ
F
M
(
G
~
,
D
k
)
]
(4)
L_{F M}=\min _{\widetilde{G}}\left[\sum_{k=1,2} \ell_{F M}\left(\tilde{G}, D_{k}\right)\right] \tag{4}
LFM=G
min⎣⎡k=1,2∑ℓFM(G~,Dk)⎦⎤(4)
ℓ F M ( G ~ , D k ) = E ( X ) ∑ i = 1 T 1 N i [ ∥ D k ( i ) ( X ) − D k ( i ) ( G ~ ( X ^ ) ) ∥ 1 ] (5) \ell_{F M}\left(\widetilde{G}, D_{k}\right)=E_{(X)} \sum_{i=1}^{T} \frac{1}{N_{i}}\left[\left\|D_{k}^{(i)}(X)-D_{k}^{(i)}(\widetilde{G}(\hat{X}))\right\|_{1}\right] \tag{5} ℓFM(G ,Dk)=E(X)i=1∑TNi1[∥∥∥Dk(i)(X)−Dk(i)(G (X^))∥∥∥1](5)
其中, T T T为特征提取层层数, N i N_i Ni为第 i i i特征提取层提取的特征图的元素数。 D k ( i ) D_k^{(i)} Dk(i)为判别器 D k D_k Dk第 i i i特征提取层。
特称匹配损失,就是将Ground-Truth和生成器生成的结果分别送到判别器中,然后分别提取判别器中每一层的中间结果,对应的计算 L 1 L1 L1损失。
3.3 Perceptual Loss
前面多篇博客都提到了该损失,这里就不再细说。
ϕ
i
(
)
\phi_i()
ϕi()表示VGG网络中第
i
i
i层的激活函数,同时也表示为感知特征。感知损失定义如下:
L
V
G
G
ϕ
,
i
(
Y
^
,
X
)
=
1
C
i
H
i
W
i
∥
ϕ
i
(
Y
^
)
−
ϕ
i
(
X
)
∥
1
(6)
L_{V G G}^{\phi, i}(\hat{Y}, X)=\frac{1}{C_{i} H_{i} W_{i}}\left\|\phi_{i}(\hat{Y})-\phi_{i}(X)\right\|_{1} \tag{6}
LVGGϕ,i(Y^,X)=CiHiWi1∥∥∥ϕi(Y^)−ϕi(X)∥∥∥1(6)
Y ^ \hat{Y} Y^为EPDN的最终输出结果。
3.4 Fidelity Loss
保真度损失就是Ground-Truth和
Y
^
\hat{Y}
Y^的欧式距离(
L
2
L2
L2范式)。定义如下:
L
F
=
∥
X
−
Y
^
∥
2
(7)
L_{F}=\|X-\hat{Y}\|_{2} \tag{7}
LF=∥X−Y^∥2(7)
4. 训练过程
首先,使用
(
2
)
(2)
(2)
(
4
)
(4)
(4)训练GAN模块。具体来说,在训练判别器时,往
(
2
)
(2)
(2)梯度增加的方向更新;在训练生成器时,往
(
2
)
(2)
(2)
(
4
)
(4)
(4)梯度减少的方向更新。之后,使用
(
6
)
(6)
(6)
(
7
)
(7)
(7)训练增强器和多分辨率生成器,即往
(
6
)
(
7
)
(6)(7)
(6)(7)梯度减少的方向更新。训练算法如下:
5. 读后感
本文多处体现了多尺度这个概念。生成器和判别器各有两个,从两种尺度上处理图像。增强块中包含了金字塔池化模块,提取四个尺度上的图像信息。Multi-Scale是一个值得思考的思想。