以下链接是个人关于 MUNIT(多模态无监督)-图片风格转换,的所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信 17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号− 海量资源。 \color{blue}{ 海量资源}。 海量资源。
风格迁移2-00:MUNIT(多模态无监督)-目录-史上最新无死角讲解
话不多说,我们直接开始论文的翻译吧
Abstract.
在计算机视觉领域,无监督图片到图片的转换,是一个比较重要,同时挑战性比较高的问题。在源域和目标域没有任何成对图下的条件下,给出源域的一张图片,学习到在目标域的条件分布。然而这种条件又存在多模态的现象,现在存在的一些解决方案,做了一些简单的假设,认为他们是确定性,一一对应的关系,因此他们无法给予源域的一张图像,生成多张目标域的图像。为了解决这种局限性,我们提出了
Multimodal Unsupervised Image-to-image
Translation (MUNIT) 框架,我们的假设是:
一张图片能被分解成 content code 以及 style code,其中 style code 能够捕获到域的特殊属性。对于一张源域图像到目标域的转换,我们只需要重新组合content code 以及 style code,其中 style code 来自于目标域空间。
我们分析了这种框架,并且建立了几个理论结果。广泛的实验,以及和目前最先进的模型进行对比,证明了该框架的优势,同时还能对 style 进行控制。
1 Introduction
在计算机视觉领域,很多问题都是图片到图像的转换,如super-resolution , colorization , inpainting , attribute , transfer , and style transfer。这种交叉域,图像到图像的转换,吸引了很大的注意力。如果训练数据集已经包含了成对的图像,这个问题很容易通过一个条件 GAN 或者简单的回归解决,在这次工作中,我们主要研究没有成对图像,也就是无监督的情况。
在很多情况下,交叉域的映射都是多模态的,比喻一个冬天的场景能够转换成夏天,白天,晚上等。但是遗憾的是,现的技术都是单模态的转换。所以,他们是没有能力去捕获所有输出结果的分布,即使添加了随机噪声,因为这种噪声,网络在学习的过程中,很容易忽略掉。
在这篇论文中,为了多模态,无监督图像到图像的转换,我们提出了一个有条例的 Multimodal UNsupervised Image-to-image Translation (MUNIT) 方法,首先我们假设图像的 style spacelatent space 能被分解到一个content space 和一个 style space,然后进一步假设,不同域之间是共现一个content space,但是都有自己独特的style space。把一张图像转换到目标域,我们使用该图像的 content space ,和目标域随机的一个style space进行重组,如下图(Fig. 1):
Fig. 1,图解:这是我们方法的一个插图。
(a)在域
x
i
x_i
xi 中的每一张图像,都被编码到一个域共享的 content space
C
C
C 和 一个域独特的 style space
S
i
Si
Si, 每个编码器都对应着一个解码器,但是图中已经省略了。
(b) 例如域
x
1
x_1
x1的一张图像 (美洲豹),域
x
2
x_2
x2 的一张图像(家猫),我们让输入图片的content code 和 目标 style space 中随机的一个 style code 组合。不同的style codes 将导致不同风格图片输出
在图片转换的过程中,输入图片的 content code 应该保持不变, style code 代表图像的主要变化信息。通过和不同的style code结合,我们的模型有能力去生成各种各样的图像。其中的style code除了可以随机给定之外,也可以从目标域的一张图片提取而来。
2 Related Works
Generative adversarial networks (GANs): GAN框架生成的图片,已经达到一个很惊人的效果。所以我们也采用了GAN为框架,去做图片转换。
Image-to-image translation: Isola 第一次提出了基于条件GAN的图像转换,后面又出现了生成高分辨率图像的 Wang GAN,最近大家也开始研究无监督的图像转换。这种无监督的学习,本质上网络是很难适应的,所以要添加一些额外的约束,所以一些工作强制保证图片源域的某些属性(如像素值,像素梯度,语义特征,类别或者成对的样本距离等)。其他的一些比较流行的又cycle
consistency loss,他能强制图像转换到目标域,并且返回,然后得到原图像。另外 Liu 等人提出了 UNIT 框架,其中使用了 shared latent space,即把两不同域的 latent space 映射到一个 space。
现在大多数图像翻译的限制,在于输出图像的多样性不足。为了解决这个问题,一些工作提出了给入一个输出,同时生成多个的方式,并鼓励他们生成不同的图像。然而,这些方法只能产生不连续,比较分散的图片。Zhu 等人提出了BicycleGAN ,其能生成多种不同的分布,但是他们的训练需要成对的输入。然而我么你的框架不需要。
当我们知道一个域中有多少种模态,同时又知道每个张图片属于那个模态,我们可以把每种模态都当作一个域来对待。但是在实际的应用中,这样的数据集是很难找的,但是我们的随机模型可以把多个模态,当作连续的分布。,然当也需要每个模态配对进行训练。
Style transfer: Style transfer的目的是保证输入图片的主要内容不变,去改变他的风格。其和图像到图像的翻译是紧密相关的。这里,我们对示例引导的Style transfer 做了区分,其中分为目标样式来自单个示例,集合样式传输(目标样式由一组图像定义)。古典的style transfer 方法通常解决前一种问题。而图像到图像的翻译方法在后者中表现良好。我们的方法,能同时解决这两个问题,其主要受益于content code 和 style space 的分离。
3 Multimodal Unsupervised Image-to-image Translation
3.1 Assumptions:
让
x
1
∈
X
1
x_1 \in X_1
x1∈X1,
x
2
∈
X
2
x_2 \in X_2
x2∈X2 ,即
x
1
,
x
2
x_1,x_2
x1,x2 来自于不同的两个域,在无监督图片翻译的过程中,从两个边缘分布
p
(
x
1
)
p(x_1)
p(x1) 和
p
(
x
2
)
p(x_2)
p(x2) 中抽取样本,并且他们并不是连续的。我们的目的是为了使用模型
p
(
x
1
→
2
∣
x
1
)
p(x_{1→2}|x_1)
p(x1→2∣x1),
p
(
x
2
→
1
∣
x
2
)
p(x_{2→1}|x_2)
p(x2→1∣x2) 去估算条件概率
p
(
x
2
∣
x
1
)
p(x_{2}|x_1)
p(x2∣x1) 与
p
(
x
1
∣
x
2
)
p(x_{1}|x_2)
p(x1∣x2),这里的
(
x
1
→
2
(x_{1→2}
(x1→2 表示的是图下
x
1
x_1
x1 到域
X
2
X_2
X2 的翻译。在一般情况下,
p
(
x
1
)
p(x_1)
p(x1) 和
p
(
x
2
)
p(x_2)
p(x2) 是多维度,高复杂的,这个时候,确定性的图像翻译效果是比较差的。
为了解决这种麻烦,我你们提出了partially shared latent space 得假设,例如,
X
i
X_i
Xi 域中的每一张图片
x
i
x_i
xi 是由一个content
latent code
c
∈
C
c \in C
c∈C (该content space 是和其他域是共享的),和一个style latent code KaTeX parse error: Undefined control sequence: \n at position 3: s \̲n̲ ̲S_i(该style space 是每个域独特的)构成。换句话说,来自连续分布的两张图片
(
x
1
,
x
2
)
(x_1, x_2)
(x1,x2),是通过
x
1
=
G
1
∗
(
c
,
s
1
)
x_1=G^*_1(c,s1)
x1=G1∗(c,s1) 和
x
2
=
G
2
∗
(
c
,
s
2
)
x_2=G^*_2(c,s2)
x2=G2∗(c,s2) 生成,这里的
c
,
s
1
,
s
2
c, s_1, s_2
c,s1,s2 来自于一些先验分布,
G
1
∗
,
G
2
∗
G^*_1, G^*_2
G1∗,G2∗ 是潜在的生成器。我们进一步假设,
G
1
∗
,
G
2
∗
G^*_1, G^*_2
G1∗,G2∗ 具备特定性的功能,他们能够被反过来编码作用,即:
E
1
∗
=
(
G
1
∗
)
−
1
E^*_1 = ({G^{*}_1})^{-1}
E1∗=(G1∗)−1 和
E
2
∗
=
(
G
2
∗
)
−
1
E^*_2 = ({G^{*}_2})^{-1}
E2∗=(G2∗)−1。我们的目的是学习其上的
E
∗
E^*
E∗(编码),
G
∗
G^*
G∗(解码)。注意的是,这里的编码和解码都是确定性的。
fully shared latent space 是由 UNIT 论文提出的,我们的只是部分空间进行了共享,即 content space。
3.2 Model
Fig. 2(下图)是我们模型的处理过程,其中每个域
X
i
X_i
Xi都包含了一个编码器
E
i
E_i
Ei,以及一个解码器
G
I
G_I
GI,如图所示:
(a):提取出来的每个latent code ,会被分解成 content code
c
i
c_i
ci,以及 style code
s
i
s_i
si,这里的 (
c
i
c_i
ci;
s
i
s_i
si) =
(
E
i
c
(
x
i
)
,
E
i
s
(
x
i
)
)
=
E
i
(
x
i
)
(E^c_i(x_i),E^s_i(x_i))=E_i(x_i)
(Eic(xi),Eis(xi))=Ei(xi),图片转换的过程中,编码器和解码器是成对实现的。
(b):对于一个样本
x
1
∈
X
1
x_1 \in X_1
x1∈X1转换到域
x
2
x_2
x2,我们首先提取 content latent code
c
1
=
E
1
c
(
x
1
)
c_1 = E_1^c(x_1)
c1=E1c(x1) 以及来自于先验分布
q
(
s
2
)
−
N
(
0
,
1
)
q(s_2) - N(0,1)
q(s2)−N(0,1) 随机抽取的 style latent code
S
2
S_2
S2,然后使用
G
2
G_2
G2去生成这个最后的结果
x
1
→
2
=
G
2
(
c
1
,
s
2
)
x_{1→2} = G_2(c_1,s_2)
x1→2=G2(c1,s2)。我们注意到,虽然先验分布分布是确定的,但是由于解码器的非线性,可以生成多模态的图片。
Fig. 2注解(模型概述):我们的模型包含了两个自动解码器(图示的红色和蓝色部分),对于每一个域的 latent code 都被自动编码器分解成一个 content code
c
c
c 和一个 style code
s
s
s。我们使用对抗网络进行训练,确保其生成的图片和真实图片难以区分(图中点部分),以及双向目标重建(图中虚线)。
我们的使用了:
bidirectional reconstruction loss,他能保证编码器和译码器是可以反转的。
adversarial loss:他能让模型学习到目标域的数据分布
Bidirectional reconstruction loss: 学习彼此相反的编码器和解码器,使用该loss,确保两个图片都能完成:image → latent → image and latent → image → latent。
Image reconstruction: 给定一个从数据分布中采样的图像,我们应该能够在编码和解码后重建它
L
r
e
c
o
n
x
1
=
E
x
1
∼
p
(
x
1
)
[
∣
∣
G
1
(
E
1
c
(
x
1
)
,
E
1
s
(
x
1
)
)
−
x
1
∣
∣
1
]
L^{x_1}_{recon} = E_{x_1∼p(x_1)}[||G_1(E_1^c(x_1),E_1^s(x_1))-x_1||_1]
Lreconx1=Ex1∼p(x1)[∣∣G1(E1c(x1),E1s(x1))−x1∣∣1]
Latent reconstruction: 给出一个 来自于latent distribution 的 latent code(style 或者 content) ,我们应该能够在编码和解码后重构它
L
r
e
c
o
n
c
1
=
E
c
1
∼
p
(
c
1
)
,
,
s
2
∼
q
(
s
2
)
[
∣
∣
G
1
(
E
2
c
(
G
2
(
c
1
,
s
2
)
)
−
c
1
∣
∣
1
]
L^{c_1}_{recon} = E_{c_1∼p(c_1),,s_2∼q(s_2)}[||G_1(E_2^c(G_2(c_1,s_2))-c_1||_1]
Lreconc1=Ec1∼p(c1),,s2∼q(s2)[∣∣G1(E2c(G2(c1,s2))−c1∣∣1]
L
r
e
c
o
n
s
2
=
E
c
1
∼
p
(
c
1
)
,
,
s
2
∼
q
(
s
2
)
[
∣
∣
G
1
(
E
2
s
(
G
2
(
c
1
,
s
2
)
)
−
s
1
∣
∣
1
]
L^{s_2}_{recon} = E_{c_1∼p(c_1),,s_2∼q(s_2)}[||G_1(E_2^s(G_2(c_1,s_2))-s_1||_1]
Lrecons2=Ec1∼p(c1),,s2∼q(s2)[∣∣G1(E2s(G2(c1,s2))−s1∣∣1]这里的
q
(
s
2
)
q(s_2)
q(s2)表示先验分布
N
(
0
,
1
)
N(0,1)
N(0,1),
p
(
c
1
)
p(c_1)
p(c1) 是由
c
1
=
E
1
c
(
x
1
)
c_1=E_1^c(x_1)
c1=E1c(x1) 和
x
1
∼
p
(
x
1
)
x_1∼p(x_1)
x1∼p(x1)给出。
我们注意到其他的
L
r
e
c
o
n
x
2
L_{recon}^{x_2}
Lreconx2,
L
r
e
c
o
n
c
2
L_{recon}^{c_2}
Lreconc2 以及
L
r
e
c
o
n
s
1
L_{recon}^{s_1}
Lrecons1 的定义都是十分相似的,我们使用
L
1
L1
L1 重构 loss,鼓励网络输出理想的结果。
style 重构 loss
L
r
e
c
o
n
s
i
L^{s_i}_{recon}
Lreconsi让人联想到之前的一些工作,他们有效激励网络输出不同的结果。这个 content loss
L
r
e
c
o
n
c
i
L^{c_i}_{recon}
Lreconci 保护了输入图像的 content 信息。
Adversarial loss: 我们使用GANs来匹配翻译后图像的分布和目标数据的分布。
L
G
U
N
x
2
=
E
c
1
∼
p
(
c
1
)
,
s
2
∼
q
(
s
2
)
[
l
o
g
(
1
−
D
2
(
G
2
(
c
1
,
s
2
)
)
)
]
+
E
x
2
∼
p
(
x
2
)
[
l
o
g
D
2
(
x
2
)
]
L_{GUN}^{x_2} = E_{c_1∼p(c_1),s_2∼q(s_2)}[log(1-D_2(G_2(c_1,s_2)))] + E_{x_2∼p(x_2)}[logD_2(x_2)]
LGUNx2=Ec1∼p(c1),s2∼q(s2)[log(1−D2(G2(c1,s2)))]+Ex2∼p(x2)[logD2(x2)]这里的
D
2
D_2
D2 是鉴别生成的图像是否符合域
X
2
X_2
X2 的分布, 鉴别器
D
1
D_1
D1 以及
L
G
A
N
x
1
L_{GAN}^{x_1}
LGANx1 的定义也是类似的。
Total loss: 我们集合了编码器,解码器,鉴别器的 loss,当作最后优化的目标,其为对抗性损失和双向重建损失项的加权和,如下:
m
i
n
E
,
E
1
,
G
1
,
G
2
m
i
n
D
1
,
D
2
L
(
E
1
,
E
2
,
G
1
,
G
2
,
D
1
,
D
2
)
=
L
G
A
N
x
1
+
L
G
A
N
x
2
+
λ
x
(
L
r
e
c
o
n
x
1
+
L
r
e
c
o
n
x
2
)
+
λ
c
(
L
r
e
c
o
n
c
1
+
L
r
e
c
o
n
c
2
)
+
λ
s
(
L
r
e
c
o
n
s
1
+
L
r
e
c
o
n
s
2
)
{\underset {E_,E_1,G_1,G_2} {min} ~~ \underset {D_1,D_2} {min}} ^{L(E_1,E_2,G_1,G_2,D_1,D_2)}=L_{GAN}^{x_1} + L_{GAN}^{x_2} + λ_x(L^{x_1}_{recon} + L^{x_2}_{recon}) + λ_c(L^{c_1}_{recon} + L^{c_2}_{recon}) + λ_s(L^{s_1}_{recon} + L^{s_2}_{recon})
E,E1,G1,G2min D1,D2minL(E1,E2,G1,G2,D1,D2)=LGANx1+LGANx2+λx(Lreconx1+Lreconx2)+λc(Lreconc1+Lreconc2)+λs(Lrecons1+Lrecons2)这里的
λ
x
,
λ
c
,
λ
s
λ_x, λ_c, λ_s
λx,λc,λs 是控制每项 loss 的权重参数。
4 Theoretical Analysis
我们建立了框架的一些理论性质,证名了当我们提出的 loss 达到最小值的时候,需要符合以下要求:
(1)在编码和生成的过程中,对 latent 分布进行匹配
(2)由我们的框架引起的两个联合图像分布的匹配
(3)执行弱形式的循环一致性约束(也就是循环一致性 loss 占比不能太高了吧-猜测 )
Proposition 1: 假设存在
E
1
∗
E_1^*
E1∗,
E
2
∗
E_2^*
E2∗,
G
1
∗
G_1^*
G1∗,
G
2
∗
G_2^*
G2∗:
(1)
E
1
∗
E_1^*
E1∗ =
(
G
1
∗
)
−
1
(G_1^*)^{-1}
(G1∗)−1,
E
1
∗
E_1^*
E1∗ =
(
G
1
∗
)
−
1
(G_1^*)^{-1}
(G1∗)−1
(2)
p
(
x
1
→
2
)
=
p
(
x
2
)
p(x_{1→2}) = p(x_2)
p(x1→2)=p(x2),
p
(
x
1
→
2
)
=
p
(
x
2
)
p(x_{1→2}) = p(x_2)
p(x1→2)=p(x2),
(3)
E
1
∗
,
E
2
∗
,
G
1
∗
,
G
2
∗
m
i
n
i
m
i
z
e
s
L
(
E
1
,
E
2
,
G
1
,
G
2
)
=
m
a
x
D
1
,
D
2
L
(
E
1
,
E
2
,
G
1
,
G
1
,
D
1
,
D
1
)
E_1^*,E_2^*,G_1^*,G_2^* minimizes L(E_1, E_2, G_1, G_2) = \underset {D_1,D_2}{max}L(E_1, E_2, G_1, G_1,D_1,D_1)
E1∗,E2∗,G1∗,G2∗minimizesL(E1,E2,G1,G2)=D1,D2maxL(E1,E2,G1,G1,D1,D1)
Latent Distribution Matching : 在图像生成方面,现有的自动编码器和GANs相结合的工作,需要将编码的潜在分布,与解码器生成时接收到的潜在分布进行匹配。使用
K
L
D
KLD
KLD loss 或者
a
d
v
e
r
s
a
r
i
a
l
adversarial
adversarial loss,如果解码器在生成过程中接收到一个非常不同的潜在分布,那么自动编码器训练将无助于GAN训。虽然我们的损失函数不包含明确鼓励潜在分布匹配的项,但它具有隐式匹配它们的效果
Proposition 2. 当训练达到最优的时候:
p
(
c
1
)
=
p
(
c
2
)
,
p
(
s
1
)
=
q
(
s
2
)
,
p
(
s
2
)
=
q
(
s
2
)
p(c_1) = p(c_2), p(s_1) = q(s_2),p(s_2) = q(s_2)
p(c1)=p(c2),p(s1)=q(s2),p(s2)=q(s2)上面的命题,只有达到最优解的时候成立,编码 style 的分布去匹配 Gaussian 先验,此外,编码 content 分布与生成时的分布相匹配,即来自其他域的编码分布,这表明内容空间变成了域不变的。
Joint Distribution Matching: 我们的模型学习了
p
(
x
1
→
2
∣
x
1
)
p(x_{1→2}|x_1)
p(x1→2∣x1) 和
p
(
x
2
→
1
∣
x
2
)
p(x_{2→1}|x_2)
p(x2→1∣x2)的条件分布,把他们的两个分布联合到一起表示为
p
(
x
1
,
x
1
→
2
)
=
p
(
x
2
→
1
,
x
2
)
p(x_1,x_{1→2}) = p(x_{2→1},x_2)
p(x1,x1→2)=p(x2→1,x2)。联合分布匹配为无监督图像到图像的翻译提供了一个重要的约束条件,是最近许多方法成功的原因 ,这里,我们证明了我们的模型与联合分布的最优性匹配。
Proposition 3: 当达到最优解的时候,存在
p
(
x
1
,
x
1
→
2
)
=
p
(
x
2
→
1
,
x
2
)
p(x_1,x_{1→2}) = p(x_{2→1},x_2)
p(x1,x1→2)=p(x2→1,x2)
Style-augmented Cycle Consistency 联合分布匹配可以通过循环一致性约束来实现,然而,我们注意到这个约束对于多模态图像的翻译来说太大了,事实上,我们在附录A中证明了,如果强制执行循环一致性,转换模型将退化为确定性函数。在下面的命题中,我们证明了我们的框架允许较弱形式的循环一致性 loss,称为风格增强的循环一致性,图像风格连接的空间,更适合多模态图像的翻译。
Proposition 4:
h
1
=
(
x
1
,
s
2
)
∈
H
1
h_1 = (x1, s2) \in H_1
h1=(x1,s2)∈H1,
h
2
=
(
x
2
,
s
1
)
∈
H
2
h_2 = (x2, s1) \in H_2
h2=(x2,s1)∈H2,
h
1
,
h
2
h1,h2
h1,h2是图像和样式的联合空间中的点, 我们的模型是
F
1
→
2
F_{1→2}
F1→2(从
H
1
H_1
H1到
H
2
H_2
H2)的确定性映射,表示为
F
1
→
2
(
h
1
)
=
F
1
→
2
(
x
1
,
x
2
)
F_{1→2}(h_1)=F_{1→}2(x_1,x_2)
F1→2(h1)=F1→2(x1,x2) =
(
G
2
(
E
1
c
(
x
1
)
,
s
2
)
)
(G_2(E_1^c(x_1),s_2))
(G2(E1c(x1),s2))。达到最优解的时候还存在
F
1
→
2
=
F
2
→
1
−
1
F_{1→2} =F_{2→1}^{-1}
F1→2=F2→1−1。
很直观的我们可以知道,循环一致性意味着,如果一张图片编译到目标域,我们就可以根据原来的style返回得到原来的图像。双向重建损失隐含了风格增强的周期一致性,显式地加强它对于某些数据集利用率。
L
c
c
x
1
=
E
x
1
∼
p
(
x
1
)
,
s
2
∼
q
(
s
2
)
[
∣
∣
G
1
(
E
2
c
(
G
2
(
E
1
c
(
x
1
)
,
s
2
)
)
,
E
1
s
(
x
x
)
)
−
x
1
∣
∣
1
]
L_{cc}^{x_1} = E_{x_1∼p(x_1),s_2∼q(s_2)}[||G_1(E_2^c(G_2(E_1^c(x_1),s_2)),E_1^s(x_x))-x_1||1]
Lccx1=Ex1∼p(x1),s2∼q(s2)[∣∣G1(E2c(G2(E1c(x1),s2)),E1s(xx))−x1∣∣1]
5 Experiments
5.1 Implementation Details
Fig.3 图解:在我们自动编码架构中,content 编码器是由几个卷积层和残差块构成。style 编码器由几个下采样卷积和一个global average pooling 以及一个全连接层组成。解码器是由一个MLP去生成一组来自style code的AdaIN参数,然后,content code 由带有AdaIN层残差模块进行处理,最后通过上采样和卷积层解码到图像空间。
翻译到这里很累了,我们下篇博客再继续吧。