介绍

图像翻译(Image Translation):将一个域图像映射到另一个域中。

0.png

Motivation:

  • 之前的方法根据两个域之间的shape和texture需要改变的程度,性能有所差异。

    • successful: photo2vangogh, photo2portrait...
    • unsuccessful: selfie2anime, cat2dog...
  • 之前的方法不能使用相同的网络结构和超参数来同时进行需要保持shape的图像翻译任务(如horse2zebra)和需要改变shape的图像翻译任务(如cat2dog)。

Key point:

  • Attention module
  • Adaptive Layer-Instance Normalization (AdaLIN)

方法

模型由两个生成器和两个判别器组成:

  • $G_{s\rightarrow t}: X_s\rightarrow X_t, G_{t\rightarrow s}: X_t\rightarrow X_s$
  • $D_s, D_t$

1.png

生成器

2.png

输入 $x\in \{X_s, X_t\}$

generator $G_{s\rightarrow t}$ = encoder $E_s$ + decoder $G_t$ + auxiliary classifier $\eta_s$

  • $E_s: x\rightarrow E_s(x)$ ($n$ 个feature map)
  • $\eta_s: \eta_{s}(x)=\sigma\left(\Sigma_{k} w_{s}^{k} \Sigma_{i j} E_{s}^{k_{i j}}(x)\right)$,通过辅助二分类器训练attention权重 $w_s$
  • $E_s(x)\rightarrow a_s(x): a_{s}(x)=w_{s} * E_{s}(x)=\{w_s^k E_s^k(x)|1\leq k \leq n\}$
  • $G_t:a_s(x)\rightarrow G_t(a_s(x))$

最终,我们有 $G_{s \rightarrow t}(x)=G_t(a_s(x))$

Class Activation Mapping (CAM)

CAM 的意义就是以热力图的形式告诉我们,模型通过哪些像素点得知图片属于某个类别。

特征图经过 GAP 处理后每一个特征图包含了不同类别的信息,权重 w 对应分类时的权重。绘制热力图时,提取出所有的权重,往回找到对应的特征图,然后进行加权求和即可。

10.png

AdaLIN

$\mu_I, \mu_L$ 和 $\sigma_I,\sigma_L$ 分别是 IN 和 LN 的均值和方差,$\gamma,\beta$ 是由全连接层输出的参数。

$$ \hat{a_{I}}=\frac{a-\mu_{I}}{\sqrt{\sigma_{I}^{2}+\epsilon}}, \hat{a_{L}}=\frac{a-\mu_{L}}{\sqrt{\sigma_{L}^{2}+\epsilon}}\\ \operatorname{AdaLIN}(a, \gamma, \beta)=\gamma \cdot\left(\rho \cdot \hat{a_{I}}+(1-\rho) \cdot \hat{a_{L}}\right)+\beta\\ \rho \leftarrow c l i p_{[0,1]}(\rho-\tau \Delta \rho) $$

在IN较为重要的任务中,$\rho$ 接近1;在LN较为重要的任务中,$\rho$ 接近0。

AdaLIN结合了AdaIN和LN的优点:前者可以保持图像内容,后者更关注于全局信息。

判别器

3.png

输入 $x \in\left\{X_{t}, G_{s \rightarrow t}\left(X_{s}\right)\right\}$

discriminator $D_t$ = encoder $E_{D_t}$ + classifier $C_{D_t}$ + anxiliary classifier $\eta_{D_t}$

  • $E_{D_t}:x\rightarrow E_{D_t}(x)$
  • $\eta_{D_t}$:辅助二分类器,训练attention权重 $w_{D_t}$
  • $E_{D_t}(x)\rightarrow a_{D_t}(x):a_{D_{t}}(x)=w_{D_{t}} * E_{D_{t}}(x)$
  • $C_{D_t}$:二分类器

最终,我们有 $D_t(x)=C_{D_t}(a_{D_t}(x))$

损失函数

Adversarial loss

用于使翻译后的图像分布与目标域图像分布相匹配。

$$ L_{gan}^{s\rightarrow t}=\mathbb{E}_{x\sim X_t}[(D_t(x))^2]+\mathbb{E}_{x\sim X_s}[(1-D_t(G_{s\rightarrow t}(x)))^2] $$

Cycle loss

用于缓解模式崩塌(mode collapse)问题。

$$ L_{cycle}^{s\rightarrow t}=\mathbb{E}_{x\sim X_s}[|x-G_{t\rightarrow s}(G_{s\rightarrow t}(x))|_1] $$

Identity loss

用于保证输入图像和输出图像的颜色分布接近。

$$ L_{identity}^{s\rightarrow t}=\mathbb{E}_{x\sim X_t}[|x-G_{s\rightarrow t}(x)|_1] $$

CAM loss

辅助分类器的分类损失,用于训练注意力权重。

$$ L_{cam}^{s\rightarrow t}=-\mathbb{E}_{x\sim X_s}[\operatorname{log}(\eta_s(x))]+\mathbb{E}_{x\sim X_t}[\operatorname{log}(1-\eta_s(x))]\\ L_{cam}^{D_t}=\mathbb{E}_{x\sim X_t}[(\eta_{D_t}(x))^2]+\mathbb{E}_{x\sim X_s}[\operatorname{log}(1-\eta_{D_t}(G_{s\rightarrow t}(x)))^2] $$

Full objective

$$ \min_{G_{s\rightarrow t}, G_{t\rightarrow s}, \eta_s, \eta_t}\max_{D_s, D_t, \eta_{D_s}, \eta_{D_t}}\lambda_1 L_{gan}+\lambda_2L_{cycle}+\lambda_3L_{identity}+\lambda_4L_{cam} $$

实验

4.png

5.png

KID(Kernel Inception Distance):

计算真实图像和生成图像之间的平方最大平均差异(squared Maximum Mean Discrepancy),值越小表示真实图像与生成图像之间有更多视觉相似性,图像翻译的效果越好。

6.png

7.png

8.png

参考文献

  1. U-GAT-IT: Unsupervised Generative Attentional Networks with Adaptive Layer-Instance Normalization for Image-to-Image Translation
  2. Learning Deep Features for Discriminative Localization
  3. An empirical study on evaluation metrics of generative adversarial networks
Last modification:August 11th, 2019 at 11:08 pm
如果觉得我的文章对你有用,请随意赞赏