UNsupervised Image-to-image Translation

接下来的博客将陆续介绍三篇图像转换相关的工作。以往看过CycleGAN和StarGAN这样的工作,但这三篇工作给出了一个新的思路,很有启发意义。本文先介绍第一篇工作UNIT。

UNIT

UNIT(UNsupervised Image-to-image Translation)发表于NIPS2017。UNIT提出了一个称为共享的潜在空间(a shared-latent space)的假设:处于不同domain的两张对应图像可以映射到共享的潜在空间中的同一个潜在表示(latent representation)。基于这个假设,提出了基于GAN和VAE的UNIT框架。

定义 X 1 X_1 X1 X 2 X_2 X2是两个image domain。在有监督的图像到图像转换中,样本 ( x 1 , x 2 ) (x_1, x_2) (x1,x2)服从联合分布 P X 1 , X 2 ( x 1 , x 2 ) P_{X_1, X_2}(x_1, x_2) PX1,X2(x1,x2);在无监督的图像到图像转换中,样本 ( x 1 , x 2 ) (x_1, x_2) (x1,x2)服从边缘分布 P X 1 ( x 1 ) P_{X_1}(x_1) PX1(x1) P X 2 ( x 2 ) P_{X_2}(x_2) PX2(x2)。没有特殊假设的情况下,我们不能从边缘分布中得出联合分布。

下面给出对共享的潜在空间的假设。如下图所示,给定样本对 x 1 x_1 x1 x 2 x_2 x2,我们可以从一个潜在编码 z z z恢复出这两张图像,也可以从这两张图像得到这个共享的潜在编码。假设存在函数 E 1 ∗ E_1^* E1 E 2 ∗ E_2^* E2 G 1 ∗ G_1^* G1 G 2 ∗ G_2^* G2,满足 z = E 1 ∗ ( x 1 ) = E 2 ∗ ( x 2 ) z=E_1^*(x_1)=E_2^*(x_2) z=E1(x1)=E2(x2)。反过来,满足 x 1 = G 1 ∗ ( z ) x_1=G_1^*(z) x1=G1(z) x 2 = G 2 ∗ ( z ) x_2=G_2^*(z) x2=G2(z)。这样以来, F 1 → 2 ∗ ( x 1 ) = x 2 = G 2 ∗ ( E 1 ∗ ( x 1 ) ) F^*_{1\rightarrow2}(x_1)=x_2=G_2^*(E_1^*(x_1)) F12(x1)=x2=G2(E1(x1))实现了从 X 1 X_1 X1 X 2 X_2 X2的映射, F 2 → 1 ∗ ( x 2 ) = x 1 = G 1 ∗ ( E 2 ∗ ( x 2 ) ) F^*_{2\rightarrow1}(x_2)=x_1=G_1^*(E_2^*(x_2)) F21(x2)=x1=G1(E2(x2))实现了从 X 2 X_2 X2 X 1 X_1 X1的映射。因此,UNIT要实现的就是 F 1 → 2 ∗ F^*_{1\rightarrow2} F12 F 2 → 1 ∗ F^*_{2\rightarrow1} F21。更进一步地,两个函数还满足下面的cycle-consistency constraint: x 1 = F 2 → 1 ∗ ( F 1 → 2 ∗ ( x 1 ) ) x_1=F^*_{2\rightarrow1}(F^*_{1\rightarrow2}(x_1)) x1=F21(F12(x1)) x 2 = F 1 → 2 ∗ ( F 2 → 1 ∗ ( x 2 ) ) x_2=F^*_{1\rightarrow2}(F^*_{2\rightarrow1}(x_2)) x2=F12(F21(x2))。换句话说,UNIT提出的共享的潜在空间假设满足循环一致性假设(the cycle-consistency assumption)。

在这里插入图片描述

为了实现这样一个共享的潜在空间假设,我们进一步假设一个一个共享的中间表示 h h h。这样生成一对对应图像的过程变成了下面这样一种形式:

z → h ↘ x 2 ↗ x 1 z\rightarrow h^{\nearrow x_1}_{\searrow x_2} zhx2x1

因此有了 G 1 ∗ = G L , 1 ∗ ∘ G H ∗ G_1^*=G_{L,1}^* \circ G_H^* G1=GL,1GH G 2 ∗ = G L , 2 ∗ ∘ G H ∗ G_2^*=G_{L,2}^*\circ G_H^* G2=GL,2GH。其中 G H ∗ G_H^* GH是一个高阶的生成函数,用来将 z z z映射到 h h h G L , 1 ∗ G_{L,1}^* GL,1 G L , 2 ∗ G_{L,2}^* GL,2是低阶的生成函数,用来分别将 h h h映射到 x 1 x_1 x1 x 2 x_2 x2。在多domain的图像转换中, z z z可以表示一个场景的紧凑的、高阶的表示(如车在前,树在后的场景), h h h可以看做是 z z z的一个具体的实现(车和树分别占据了对应的像素),而 G L , 1 ∗ G_{L,1}^* GL,1 G L , 2 ∗ G_{L,2}^* GL,2则是每个domain中真实图像的生成函数(“tree in lush green in the sunny domain, but dark green in the rainy domain”)。

上图中的框架是基于VAE和GAN的,由六部分组成:两个domain的图像编码器 E 1 E_1 E1 E 2 E_2 E2,两个domain的图像生成器 G 1 G_1 G1 G 2 G_2 G2,两个domain的对抗判别器 D 1 D_1 D1 D 2 D_2 D2。六部分网络的功能可以从下表中看到。

在这里插入图片描述

VAE. E 1 E_1 E1 G 1 G_1 G1构成了 X 1 X_1 X1 domain的一个变分自编码器 V A E 1 VAE_{1} VAE1。对于一个输入图像 x 1 ∈ X 1 x_1 \in X_1 x1X1 V A E 1 VAE_1 VAE1首先通过编码器 E 1 E_1 E1 x 1 x_1 x1映射到潜在空间 Z Z Z内的一个编码,之后又由生成器 G 1 G_1 G1将这个编码重构成图像 x 1 x_1 x1。另一个变分自编码器 V A E 2 VAE_2 VAE2的作用类似。

Weight-sharing. 基于前面介绍的共享的潜在空间假设,我们通过权重共享将两个VAE联系到一起。具体地,我们让 E 1 E_1 E1 E 2 E_2 E2的最后几层网络共享参数,这几层网络负责从来自两个domain的输入图像中提取到高阶表示。类似地,我们让 G 1 G_1 G1 G 2 G_2 G2的前几层网络共享参数,这几层网络负责解码高阶表示以重构输入图像。

要注意到权重共享这一约束并不能保证两个domain中的对应图像有着同样的潜在编码。在无监督训练中,在两个domain中不存在成对的对应图像能够映射到同一个潜在编码,即成对的对应图像提取到的签字编码通常是不同的。然而通过对抗训练,我们可以看到来自两个domain的对应图像可以由 E 1 E_1 E1 E 2 E_2 E2映射到同一个潜在编码,而这个潜在编码又可以由 G 1 G_1 G1 G 2 G_2 G2分别映射到两个domain中的对应图像。

GANs. 我们的框架中包含了两个生成对抗网络: G A N 1 = { D 1 , G 1 } GAN_1=\{D_1, G_1\} GAN1={D1,G1} G A N 2 = { D 2 , G 2 } GAN_2=\{D_2,G_2\} GAN2={D2,G2}。在 G A N 1 GAN_1 GAN1中,对于第一个domain中的真实图像, D 1 D_1 D1应该判定为True;对于由 G 1 G_1 G1生成的图像, D 2 D_2 D2应该判定为False。 G 1 G_1 G1可以生成两种图像: x ~ 1 1 → 1 = G 1 ( z 1 ∼ q 1 ( z 1 ∣ x 1 ) ) \tilde{x}_1^{1\rightarrow1}=G_1(z_1 \sim q_1(z_1|x_1)) x~111=G1(z1q1(z1x1)) x ~ 2 2 → 1 = G 1 ( z 2 ∼ q 2 ( z 2 ∣ x 2 ) ) \tilde{x}_2^{2\rightarrow1}=G_1(z_2 \sim q_2(z_2|x_2)) x~221=G1(z2q2(z2x2))。因为重构的过程是有监督的,我们只能通过对抗训练的方式来实现图像转换的过程。 G A N 2 GAN_2 GAN2有着同样的作用。

Cycle-consistency. 由于共享潜在空间假设意味着循环一致性约束,我们还可以在所提出的框架中强制执行循环一致性约束,以进一步规范不适当的无监督图像到图像转换问题。得到的信息处理流称为循环重构流。

Learning. 我们要同时进行 V A E 1 VAE_1 VAE1 V A E 2 VAE_2 VAE2 G A N 1 GAN_1 GAN1 G A N 2 GAN_2 GAN2的训练,以同时实现图像重构流、图像转换流和循环重构流:

min ⁡ E 1 , E 2 , G 1 , G 2 max ⁡ D 1 , D 2 L V A E 1 ( E 1 , G 1 ) + L G A N 1 ( E 1 , G 1 , D 1 ) + L C C 1 ( E 1 , G 1 , E 2 , G 2 ) L V A E 2 ( E 2 , G 2 ) + L G A N 2 ( E 2 , G 2 , D 2 ) + L C C 2 ( E 2 , G 2 , E 1 , G 1 ) \min_{E_1, E_2, G_1, G_2} \max_{D_1, D_2} L_{VAE_1}(E_1,G_1)+L_{GAN_1}(E_1, G_1, D_1) + L_{CC_1}(E_1, G_1, E_2, G_2) \\ \qquad \qquad \qquad L_{VAE_2}(E_2, G_2)+L_{GAN_2}(E_2, G_2, D_2)+L_{CC_2}(E_2,G_2, E_1, G_1) E1,E2,G1,G2minD1,D2maxLVAE1(E1,G1)+LGAN1(E1,G1,D1)+LCC1(E1,G1,E2,G2)LVAE2(E2,G2)+LGAN2(E2,G2,D2)+LCC2(E2,G2,E1,G1)

VAE的训练旨在最小化一个变分的上限(a variational upper bound),VAE的目标是:

L V A E 1 ( E 1 , G 1 ) = λ 1 K L ( q 1 ( z 1 ∣ x 1 ) ∣ ∣ p η ( z ) ) − λ 2 E z 1 ∼ q 1 ( z 1 ∣ x 1 ) [ l o g p G 1 ( x 1 ∣ z 1 ) ] L_{VAE_1}(E_1, G_1) = \lambda_1 KL(q_1(z_1|x_1)||p_{\eta}(z)) - \lambda_2E_{z_1\sim q_1(z_1|x_1)}[logp_{G_1}(x_1|z_1)] LVAE1(E1,G1)=λ1KL(q1(z1x1)pη(z))λ2Ez1q1(z1x1)[logpG1(x1z1)]

L V A E 2 ( E 2 , G 2 ) = λ 1 K L ( q 2 ( z 2 ∣ x 2 ) ∣ ∣ p η ( z ) ) − λ 2 E z 2 ∼ q 2 ( z 2 ∣ x 2 ) [ l o g p G 2 ( x 2 ∣ z 2 ) ] L_{VAE_2}(E_2, G_2) = \lambda_1 KL(q_2(z_2|x_2)||p_{\eta}(z)) - \lambda_2E_{z_2\sim q_2(z_2|x_2)}[logp_{G_2}(x_2|z_2)] LVAE2(E2,G2)=λ1KL(q2(z2x2)pη(z))λ2Ez2q2(z2x2)[logpG2(x2z2)]

GAN的目标函数如下:

L G A N 1 ( E 1 , G 1 , D 1 ) = λ 0 E x 1 ∼ P X 1 [ l o g D 1 ( x 1 ) ] + λ 0 E z 2 ∼ q 2 ( z 2 ∣ x 2 ) [ l o g ( 1 − D 1 ( G 1 ( z 2 ) ) ) ] L_{GAN_1}(E_1, G_1, D_1)=\lambda_0E_{x_1\sim P_{X_1}}[logD_1(x_1)] + \lambda_0E_{z_2\sim q_2(z_2|x_2)}[log(1-D_1(G_1(z_2)))] LGAN1(E1,G1,D1)=λ0Ex1PX1[logD1(x1)]+λ0Ez2q2(z2x2)[log(1D1(G1(z2)))]

L G A N 2 ( E 2 , G 2 , D 2 ) = λ 0 E x 2 ∼ P X 2 [ l o g D 2 ( x 2 ) ] + λ 0 E z 1 ∼ q 1 ( z 1 ∣ x 1 ) [ l o g ( 1 − D 2 ( G 2 ( z 1 ) ) ) ] L_{GAN_2}(E_2, G_2, D_2)=\lambda_0E_{x_2\sim P_{X_2}}[logD_2(x_2)] + \lambda_0E_{z_1\sim q_1(z_1|x_1)}[log(1-D_2(G_2(z_1)))] LGAN2(E2,G2,D2)=λ0Ex2PX2[logD2(x2)]+λ0Ez1q1(z1x1)[log(1D2(G2(z1)))]

我们使用类似于VAE的目标函数来实现循环一致约束:

L C C 1 ( E 1 , G 1 , E 2 , G 2 ) = λ 3 K L ( q 1 ( z 1 ∣ x 1 ) ∣ ∣ p η ( z ) ) + λ 3 K L ( q 2 ( z 2 ∣ x 1 1 → 2 ) ∣ ∣ p η ( z ) ) − λ 4 E z 2 ∼ q 2 ( z 2 ∣ x 1 1 → 2 ) [ l o g p G 1 ( x 1 ∣ z 2 ) ] L_{CC_1}(E_1, G_1, E_2, G_2)=\lambda_3KL(q_1(z_1|x_1)||p_{\eta}(z))+\lambda_3KL(q_2(z_2|x_1^{1\rightarrow2})||p_{\eta}(z)) \\ -\lambda_4E_{z_2\sim q_2(z_2|x_1^{1\rightarrow2})}[logp_{G_1}(x_1|z_2)] LCC1(E1,G1,E2,G2)=λ3KL(q1(z1x1)pη(z))+λ3KL(q2(z2x112)pη(z))λ4Ez2q2(z2x112)[logpG1(x1z2)]

L C C 2 ( E 2 , G 2 , E 1 , G 1 ) = λ 3 K L ( q 2 ( z 2 ∣ x 2 ) ∣ ∣ p η ( z ) ) + λ 3 K L ( q 1 ( z 1 ∣ x 2 2 → 1 ) ∣ ∣ p η ( z ) ) − λ 4 E z 1 ∼ q 1 ( z 1 ∣ x 2 2 → 1 ) [ l o g p G 2 ( x 2 ∣ z 1 ) ] L_{CC_2}(E_2, G_2, E_1, G_1)=\lambda_3KL(q_2(z_2|x_2)||p_{\eta}(z))+\lambda_3KL(q_1(z_1|x_2^{2\rightarrow1})||p_{\eta}(z)) \\ -\lambda_4E_{z_1\sim q_1(z_1|x_2^{2\rightarrow1})}[logp_{G_2}(x_2|z_1)] LCC2(E2,G2,E1,G1)=λ3KL(q2(z2x2)pη(z))+λ3KL(q1(z1x221)pη(z))λ4Ez1q1(z1x221)[logpG2(x2z1)]

后面是参数设置与实验过程,这里不再展开。这个工作的一大亮点是在进行两个domain之间的图像转换时引入了一个潜在空间,两个domain内的对应图像会映射到潜在空间中的同一个编码,并通过VAE和GAN实现了这一过程。

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无监督的多源域自适应是指在没有访问源数据的情况下进行的域自适应方法。为了解释这一概念,首先需要了解两个关键术语的含义:域自适应和多源。 域自适应是指在机器学习和数据挖掘中,将模型从一个域(即数据的分布)迁移到另一个域的过程。域自适应的目标是使模型在目标域上具有更好的性能,而不需要重新训练或收集目标域的数据。 多源是指使用来自多个源领域的数据来进行域自适应。这种情况下,我们有多个源域的数据,但没有目标域的数据。这可能是因为目标域的数据很难收集、昂贵或没有权限访问。 在无监督的多源域自适应中,我们试图使用多个源域的数据来进行迁移学习,从而在没有目标域数据的情况下提高目标域上的性能。这个问题是非常具有挑战性的,因为我们没有标签的目标域数据来指导模型的训练。 一种常见的方法是使用领域间的分布差异来进行特征学习。例如,可以使用深度神经网络来学习源域和目标域之间的有用特征。通过最小化源域和目标域之间的距离,我们可以使网络学习到一组在多个域上通用的特征表示。 另一个方法是使用领域适应的损失函数。这种损失函数通过最大化源域和目标域之间的相似性,或最小化它们之间的差异,来迫使模型在目标域上有更好的性能。 总的来说,无监督的多源域自适应是一种在没有目标域数据的情况下使用多个源域数据进行迁移学习的方法。它可以通过学习通用特征或使用领域适应的损失函数来提高目标域上的性能。这种方法对于许多现实世界的情况是非常有用的,例如在医疗图像诊断和自然语言处理等领域中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值