StyleGAN学习,Nvidia在PGGAN后的继续探索
1.摘要
作者提出,在当前生成对抗网络发展如此迅猛的情况下,生成器仍然属于一个黑盒子的性质。我们对于其图像生成的变化因素的控制和理解不够,对于
l
a
t
e
n
t
c
o
d
e
latent\,code
latentcode的作用仍不能更多的理解。并且,对于各种生成器进行定量的评估仍然没有很好的方法。
文章中的style更多的指的生成图像的属性,只是类似的结构经常被用在style transfer上面,所以取名StyleGAN
该文章主要有三个贡献:
- 从风格转换的文献中受到启发,提出了一种用于生成对抗网络的生成器结构,这种新的结构可以在无监督的情况下自动学习高等属性的分割(例如在人脸数据集上的pose和身份一致性)和生成图像中随机的变化(例如人脸数据集中的头发,毛孔等)。并且支持直觉的,指定尺度的图像合成的控制。新的生成器表现良好并且更容易进行disentangle。
- 为了更好的评估插值质量和解耦性质,提吃醋了两种全新的自动的方式可以适用于所有的生成网络。
- 推出了一个新的,图像丰富并且高质量的人脸数据库。
2.Style-based generator
传统的生成器和基于风格的生成器的结构的比较如下:
自顶向下我们可以看到两者的如下区别:
1).
l
a
t
e
n
t
c
o
d
e
latent\,code
latentcode的输入地点不同,传统的generator往往是直接送入网络,但是
s
t
y
l
e
−
b
a
s
e
d
style-based
style−based首先经过一个
m
a
p
p
i
n
g
n
e
t
w
o
r
k
mapping\,network
mappingnetwork之后再送入网络进行合成。该网络是一个八层的全连接层组成的网络。其经过如下变换:
f
(
z
)
=
w
其
中
z
是
随
机
采
样
的
变
量
,
一
般
服
从
G
a
u
s
s
i
a
n
,
w
是
经
过
变
换
后
的
变
量
,
因
为
z
的
缘
故
也
具
有
一
定
的
随
机
性
。
f(z)=w\quad \\其中z是随机采样的变量,一般服从Gaussian,w是经过变换后的变量,因为z的缘故也具有一定的随机性。
f(z)=w其中z是随机采样的变量,一般服从Gaussian,w是经过变换后的变量,因为z的缘故也具有一定的随机性。
2).
l
a
t
e
n
t
c
o
d
e
latent\, code
latentcode的送入地点不一样,style-based generator 将生成的
w
=
f
(
z
)
w=f(z)
w=f(z)经过每一层的一个单独的
A
f
f
i
n
e
Affine
Affine变换成为
s
t
y
l
e
style
style后送入生成其中的每一个子层,同时还多了随即采样的噪声,每一个经过单独的
A
f
f
i
n
e
Affine
Affine变换后也会送入每一层进行运算。公式:
w
=
f
(
z
)
s
t
y
l
e
i
=
A
i
(
w
)
=
(
y
s
,
i
,
y
b
)
B
i
(
n
o
i
s
e
i
)
→
A
d
a
I
N
(
A
d
a
p
a
t
i
v
e
I
n
s
t
a
n
c
e
B
t
a
c
h
N
o
r
m
o
l
i
z
a
t
i
o
n
)
w=f(z) \\ style_i=A_i(w)=(y_{s,i},y_b)\\ B_i(noise_i)\rightarrow AdaIN(Adapative\,Instance\, Btach\, Normolization)
w=f(z)stylei=Ai(w)=(ys,i,yb)Bi(noisei)→AdaIN(AdapativeInstanceBtachNormolization)
3). 每一层的结构不一样,style-based generator 的每层会将生成的分辨率上升两倍(像素数量上升两倍,即第一层的分辨率为44第三层就上升为88)。如图所示,第一层的输入为一个可以学习的
C
o
n
s
t
Const
Const其维度为44512。然后加上随机输入并变换后的噪声
n
o
i
s
e
i
noise_i
noisei,接着进行AdaIN操作并在操作中融入
s
t
y
l
e
i
style_i
stylei,接着进行33卷积操作,然后再次加上随即输入并变换的噪声
n
o
i
s
e
i
+
1
noise_{i+1}
noisei+1,融入
s
t
y
l
e
i
+
1
style_{i+1}
stylei+1进行AdaIN变换,最后进行上采样使分辨率在H和W的维度各扩大两倍,实现分辨率的逐渐上升,通过重复此步骤最终实现10241024的超高分辨率。
(
y
s
,
i
,
y
b
)
=
A
i
(
w
)
A
d
I
N
(
x
i
,
y
)
=
y
s
,
i
x
i
−
μ
(
x
i
)
σ
(
x
i
)
+
y
b
,
i
(1)
(y_{s,i},y_b)=A_i(w)\\ AdIN(x_i,y)=y_{s,i} {{x_i-\mu (x_i)} \over {\sigma(x_i)}}+y_{b,i} \tag{1}\\
(ys,i,yb)=Ai(w)AdIN(xi,y)=ys,iσ(xi)xi−μ(xi)+yb,i(1)