接下来的博客将陆续介绍三篇图像转换相关的工作。以往看过CycleGAN和StarGAN这样的工作,但这三篇工作给出了一个新的思路,很有启发意义。本文先介绍第一篇工作UNIT。
UNIT
UNIT(UNsupervised Image-to-image Translation)发表于NIPS2017。UNIT提出了一个称为共享的潜在空间(a shared-latent space)的假设:处于不同domain的两张对应图像可以映射到共享的潜在空间中的同一个潜在表示(latent representation)。基于这个假设,提出了基于GAN和VAE的UNIT框架。
定义X1X_1X1和X2X_2X2是两个image domain。在有监督的图像到图像转换中,样本(x1,x2)(x_1, x_2)(x1,x2)服从联合分布PX1,X2(x1,x2)P_{X_1, X_2}(x_1, x_2)PX1,X2(x1,x2);在无监督的图像到图像转换中,样本(x1,x2)(x_1, x_2)(x1,x2)服从边缘分布PX1(x1)P_{X_1}(x_1)PX1(x1)和PX2(x2)P_{X_2}(x_2)PX2(x2)。没有特殊假设的情况下,我们不能从边缘分布中得出联合分布。
下面给出对共享的潜在空间的假设。如下图所示,给定样本对x1x_1x1和x2x_2x2,我们可以从一个潜在编码zzz恢复出这两张图像,也可以从这两张图像得到这个共享的潜在编码。假设存在函数E1∗E_1^*E1∗,E2∗E_2^*E2∗,G1∗G_1^*G1∗和G2∗G_2^*G2∗,满足z=E1∗(x1)=E2∗(x2)z=E_1^*(x_1)=E_2^*(x_2)z=E1∗(x1)=E2∗(x2)。反过来,满足x1=G1∗(z)x_1=G_1^*(z)x1=G1∗(z)和x2=G2∗(z)x_2=G_2^*(z)x2=G2∗(z)。这样以来,F1→2∗(x1)=x2=G2∗(E1∗(x1))F^*_{1\rightarrow2}(x_1)=x_2=G_2^*(E_1^*(x_1))F1→2∗(x1)=x2=G2∗(E1∗(x1))实现了从X1X_1X1到X2X_2X2的映射,F2→1∗(x2)=x1=G1∗(E2∗(x2))F^*_{2\rightarrow1}(x_2)=x_1=G_1^*(E_2^*(x_2))F2→1∗(x2)=x1=G1∗(E2∗(x2))实现了从X2X_2X2到X1X_1X1的映射。因此,UNIT要实现的就是F1→2∗F^*_{1\rightarrow2}F1→2∗和F2→1∗F^*_{2\rightarrow1}F2→1∗。更进一步地,两个函数还满足下面的cycle-consistency constraint:x1=F2→1∗(F1→2∗(x1))x_1=F^*_{2\rightarrow1}(F^*_{1\rightarrow2}(x_1))x1=F2→1∗(F1→2∗(x1))和x2=F1→2∗(F2→1∗(x2))x_2=F^*_{1\rightarrow2}(F^*_{2\rightarrow1}(x_2))x2=F1→2∗(F2→1∗(x2))。换句话说,UNIT提出的共享的潜在空间假设满足循环一致性假设(the cycle-consistency assumption)。

为了实现这样一个共享的潜在空间假设,我们进一步假设一个一个共享的中间表示hhh。这样生成一对对应图像的过程变成了下面这样一种形式:
z→h↘x2↗x1z\rightarrow h^{\nearrow x_1}_{\searrow x_2}z→h↘x2↗x1
因此有了G1∗=GL,1∗∘GH∗G_1^*=G_{L,1}^* \circ G_H^*G1∗=GL,1∗∘GH∗和G2∗=GL,2∗∘GH∗G_2^*=G_{L,2}^*\circ G_H^*G2∗=GL,2∗∘GH∗。其中GH∗G_H^*GH∗是一个高阶的生成函数,用来将zzz映射到hhh;GL,1∗G_{L,1}^*GL,1∗和GL,2∗G_{L,2}^*GL,2∗是低阶的生成函数,用来分别将hhh映射到x1x_1x1和x2x_2x2。在多domain的图像转换中,zzz可以表示一个场景的紧凑的、高阶的表示(如车在前,树在后的场景),hhh可以看做是zzz的一个具体的实现(车和树分别占据了对应的像素),而GL,1∗G_{L,1}^*GL,1∗和GL,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的图像编码器E1E_1E1和E2E_2E2,两个domain的图像生成器G1G_1G1和G2G_2G2,两个domain的对抗判别器D1D_1D1和D2D_2D2。六部分网络的功能可以从下表中看到。

VAE. E1E_1E1和G1G_1G1构成了X1X_1X1 domain的一个变分自编码器VAE1VAE_{1}VAE1。对于一个输入图像x1∈X1x_1 \in X_1x1∈X1,VAE1VAE_1VAE1首先通过编码器E1E_1E1将x1x_1x1映射到潜在空间ZZZ内的一个编码,之后又由生成器G1G_1G1将这个编码重构成图像x1x_1x1。另一个变分自编码器VAE2VAE_2VAE2的作用类似。
Weight-sharing. 基于前面介绍的共享的潜在空间假设,我们通过权重共享将两个VAE联系到一起。具体地,我们让E1E_1E1和E2E_2E2的最后几层网络共享参数,这几层网络负责从来自两个domain的输入图像中提取到高阶表示。类似地,我们让G1G_1G1和G2G_2G2的前几层网络共享参数,这几层网络负责解码高阶表示以重构输入图像。
要注意到权重共享这一约束并不能保证两个domain中的对应图像有着同样的潜在编码。在无监督训练中,在两个domain中不存在成对的对应图像能够映射到同一个潜在编码,即成对的对应图像提取到的签字编码通常是不同的。然而通过对抗训练,我们可以看到来自两个domain的对应图像可以由E1E_1E1和E2E_2E2映射到同一个潜在编码,而这个潜在编码又可以由G1G_1G1和G2G_2G2分别映射到两个domain中的对应图像。
GANs. 我们的框架中包含了两个生成对抗网络:GAN1={D1,G1}GAN_1=\{D_1, G_1\}GAN1={D1,G1}和GAN2={D2,G2}GAN_2=\{D_2,G_2\}GAN2={D2,G2}。在GAN1GAN_1GAN1中,对于第一个domain中的真实图像,D1D_1D1应该判定为True;对于由G1G_1G1生成的图像,D2D_2D2应该判定为False。G1G_1G1可以生成两种图像:x~11→1=G1(z1∼q1(z1∣x1))\tilde{x}_1^{1\rightarrow1}=G_1(z_1 \sim q_1(z_1|x_1))x~11→1=G1(z1∼q1(z1∣x1))和x~22→1=G1(z2∼q2(z2∣x2))\tilde{x}_2^{2\rightarrow1}=G_1(z_2 \sim q_2(z_2|x_2))x~22→1=G1(z2∼q2(z2∣x2))。因为重构的过程是有监督的,我们只能通过对抗训练的方式来实现图像转换的过程。GAN2GAN_2GAN2有着同样的作用。
Cycle-consistency. 由于共享潜在空间假设意味着循环一致性约束,我们还可以在所提出的框架中强制执行循环一致性约束,以进一步规范不适当的无监督图像到图像转换问题。得到的信息处理流称为循环重构流。
Learning. 我们要同时进行VAE1VAE_1VAE1、VAE2VAE_2VAE2、GAN1GAN_1GAN1和GAN2GAN_2GAN2的训练,以同时实现图像重构流、图像转换流和循环重构流:
minE1,E2,G1,G2maxD1,D2LVAE1(E1,G1)+LGAN1(E1,G1,D1)+LCC1(E1,G1,E2,G2)LVAE2(E2,G2)+LGAN2(E2,G2,D2)+LCC2(E2,G2,E1,G1)\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的目标是:
LVAE1(E1,G1)=λ1KL(q1(z1∣x1)∣∣pη(z))−λ2Ez1∼q1(z1∣x1)[logpG1(x1∣z1)]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(z1∣x1)∣∣pη(z))−λ2Ez1∼q1(z1∣x1)[logpG1(x1∣z1)]
LVAE2(E2,G2)=λ1KL(q2(z2∣x2)∣∣pη(z))−λ2Ez2∼q2(z2∣x2)[logpG2(x2∣z2)]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(z2∣x2)∣∣pη(z))−λ2Ez2∼q2(z2∣x2)[logpG2(x2∣z2)]
GAN的目标函数如下:
LGAN1(E1,G1,D1)=λ0Ex1∼PX1[logD1(x1)]+λ0Ez2∼q2(z2∣x2)[log(1−D1(G1(z2)))]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)=λ0Ex1∼PX1[logD1(x1)]+λ0Ez2∼q2(z2∣x2)[log(1−D1(G1(z2)))]
LGAN2(E2,G2,D2)=λ0Ex2∼PX2[logD2(x2)]+λ0Ez1∼q1(z1∣x1)[log(1−D2(G2(z1)))]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)=λ0Ex2∼PX2[logD2(x2)]+λ0Ez1∼q1(z1∣x1)[log(1−D2(G2(z1)))]
我们使用类似于VAE的目标函数来实现循环一致约束:
LCC1(E1,G1,E2,G2)=λ3KL(q1(z1∣x1)∣∣pη(z))+λ3KL(q2(z2∣x11→2)∣∣pη(z))−λ4Ez2∼q2(z2∣x11→2)[logpG1(x1∣z2)]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(z1∣x1)∣∣pη(z))+λ3KL(q2(z2∣x11→2)∣∣pη(z))−λ4Ez2∼q2(z2∣x11→2)[logpG1(x1∣z2)]
LCC2(E2,G2,E1,G1)=λ3KL(q2(z2∣x2)∣∣pη(z))+λ3KL(q1(z1∣x22→1)∣∣pη(z))−λ4Ez1∼q1(z1∣x22→1)[logpG2(x2∣z1)]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(z2∣x2)∣∣pη(z))+λ3KL(q1(z1∣x22→1)∣∣pη(z))−λ4Ez1∼q1(z1∣x22→1)[logpG2(x2∣z1)]
后面是参数设置与实验过程,这里不再展开。这个工作的一大亮点是在进行两个domain之间的图像转换时引入了一个潜在空间,两个domain内的对应图像会映射到潜在空间中的同一个编码,并通过VAE和GAN实现了这一过程。


UNIT,即无监督图像到图像转换,提出了一种共享潜在空间的假设,使得不同domain的对应图像能映射到同一潜在表示。通过结合VAE和GAN,实现了图像的重构、转换及循环一致性。


被折叠的 条评论
为什么被折叠?



