Bootstrap

论文阅读:Enhanced Pix2pix Dehazing Network

论文题目及作者
代码:https://github.com/ErinChen1/EPDN

1. 摘要

    本文提出了Enhanced Pix2pix Dehazing Network(EPDN),一个不依赖大气散射模型的去雾网络。EPDN包含一个多分辨率生成器,一个多尺度判别器和一个增强器。判别器在粗尺度上监督生成器生成真实的图像,紧接着增强器在细尺度上从生成器的结果中产生真实的无雾图像。

2. 网络结构

    EPDN包含一个多分辨率生成器模块,一个增强器模块和一个多尺度判别器模块。该网络的整体结构如图1所示。
EPDN整体结构

图1 EPDN整体结构

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所示。
增强器框架

图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 minD1,D2maxk=1,2A(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(1Dk(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 mink=1,2FM(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=1TNi1[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=XY^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是一个值得思考的思想。

;