生成对抗网络中一种基于样式的生成器结构
原文:https://arxiv.org/abs/1812.04948
代码(官方tf版):https://github.com/NVlabs/stylegan
代码(非官方Pytorch版):https://github.com/rosinality/style-based-gan-pytorch
学习StyleGAN之前推荐先学习Progressive GAN,因为前者是在后者的基础上改进的算法。Progressive GAN使用渐变的生成器进行渐进式训练,以生成1024x1024的图像。
8层全连接网络,每层channel都是512。每个AdaIN模块对应一个全连接层A,将 w w w转为 y = ( y s , y b ) y=(y_s,y_b) y=(ys,yb),进行实例归一化。
此前的风格迁移方法,一种网络只对应一种风格,速度很慢。基于AdaIN可以“self modulate” the generator快速实现任意图像风格的转换。
L = L c + λ L s L c = ∥ f ( c ) − f ( t ) ∥ 2 L s = ∑ i = 1 L ∥ μ ( f i ( t ) ) − μ ( f i ( s ) ) ∥ 2 + ∑ i = 1 L ∥ σ ( f i ( t ) ) − σ ( f i ( s ) ) ∥ 2 \mathcal{L}=\mathcal{L}_{c}+\lambda \mathcal{L}_{s} \quad \mathcal{L}_{c}=\left\|f\left(c\right)-f\left(t\right)\right\|_{2} \\ \mathcal{L}_{s}=\sum_{i=1}^{L}\left\|\mu\left(f_{i}\left(t\right)\right)-\mu\left(f_{i}\left(s\right)\right)\right\|_{2}+\sum_{i=1}^{L}\left\|\sigma\left(f_{i}\left(t\right)\right)-\sigma\left(f_{i}\left(s\right)\right)\right\|_{2} \\ L=Lc+λLsLc=∥f(c)−f(t)∥2Ls=i=1∑L∥μ(fi(t))−μ(fi(s))∥2+i=1∑L∥σ(fi(t))−σ(fi(s))∥2
AdaIN ( x i , y ) = σ ( y ) ( x i − μ ( x i ) σ ( x i ) ) + μ ( y ) \operatorname{AdaIN}(x_i, y)=\sigma(y)\left(\frac{x_i-\mu(x_i)}{\sigma(x_i)}\right)+\mu(y) AdaIN(xi,y)=σ(y)(σ(xi)xi−μ(xi))+μ(y)
特征图的均值和方差中带有图像的风格信息。所以在这一层中,特征图减去自己的均值除以方差,去掉自己的风格。再乘上新风格的方差加上均值,以实现转换的目的。与图中不同的是,StyleGAN的风格不是由图像的得到的,而是 w w w生成的。
为了进一步鼓励样式进行本地化(减小不同层之间样式的相关性),作者采用混合正则化。运行两个潜码 z 1 z_1 z1, z 2 z_2 z2通过映射网络,并具有相应的 w 1 w_1 w1, w 2 w_2 w2控制样式,以便 w 1 w_1 w1在交叉点之前应用, w 2 w_2 w2在交叉点之后应用。这种正则化技术可以防止网络假设相邻的样式是相关的。
覆盖与粗糙空间分辨率相对应的图层样式( 4 2 − 8 2 4^2 - 8^2 42−82),从源头复制高级属性,如姿势,通用发型,面部形状和眼镜,同时所有颜色(眼睛,头发,灯光)和保留目标的更精细的面部特征。 如果我们改为复制中间层( 1 6 2 − 3 2 2 16^2 - 32^2 162−322)的样式,我们会继承较小比例的面部特征,发型,从源头打开/关闭的眼睛,同时保留来自目标的姿势,一般面部形状和眼镜。 最后,复制与精细分辨率( 6 4 2 − 102 4 2 64^2 - 1024^2 642−10242)相对应的样式主要带来来自源的颜色方案和微结构。
传统生成器,仅在网络开始部分输入随机向量。效率低,极易产生重复的模式。
添加噪声,增加图片丰富性,如(b)。但从标准差(c)可以看出,随机仅出现在头发和领子处,没有改变脸部高级特征。
由于噪声缺乏关联,很容易产生差异,所以无法用来控制整体特征。容易被判别器惩罚。
(a)噪音适用于所有层
(b)没有噪音,无法生成细节
(c)仅有精细层的噪音( 6 4 2 − 102 4 2 64^2 - 1024^2 642−10242),大分辨率带来更多细节变化
(d)仅粗糙层的噪音( 4 2 − 3 2 2 4^2 - 32^2 42−322),小分辨率细节的尺寸更大,很好理解
由于隐空间与图像特征之间的纠缠,对于隐空间(b)的插值会产生在生成图片中产生非线性的变化,出现(a)中不存在的特征。具有两个因素的示例(图像特征,例如,男性气质和头发长度)。(a)左上角空缺,组合几乎不存在(例如,长发男性)。(b)强制从Z到图像特征的映射变为弯曲,消除组合的可能性,以防止对无效组合进行采样。(c)然而,从 Z Z Z到 W W W的学习映射能够“消除”大部分翘曲。线性的映射对提升生成质量有益。
其他量化解缠的指标需要编码器网络将输入图像映射到编码。这两种新方法都不需要编码器,所以对于任何数据集和生成器都是可计算的。
测量在潜在空间中执行插值时图像的变化程度,来了解隐空间到图像特征之间的纠缠度。
使用两个VGG16提取特征的加权差异来表示一对图像间的感知距离。
将潜在空间插值路径细分为线性段,每个段上的感知差异的总和就是感知路径长度。
使用100000个样本,分别计算 z z z和 w w w的PPL。由于 z z z已经归一化,所以对 z z z使用球面插值 slerp,而对 w w w使用线性插值 lerp。评估为裁剪后仅包含面部的图像。
l Z = E [ 1 ϵ 2 d ( G ( slerp ( z 1 , z 2 ; t ) ) , G ( slerp ( z 1 , z 2 ; t + ϵ ) ) ) ] , \begin{aligned} l_{\mathcal{Z}}=\mathbb{E}\left[\frac{1}{\epsilon^{2}} d\left(G\left(\operatorname{slerp}\left(\mathbf{z}_{1}, \mathbf{z}_{2} ; t\right)\right)\right.\right.,\\ \left.\left.G\left(\operatorname{slerp}\left(\mathbf{z}_{1}, \mathbf{z}_{2} ; t+\epsilon\right)\right)\right)\right], \end{aligned} lZ=E[ϵ21d(G(slerp(z1,z2;t)),G(slerp(z1,z2;t+ϵ)))],
其中 z 1 , z 2 ∼ P ( z ) z_1,z_2\sim P(z) z1,z2∼P(z), t ∼ U ( 0 , 1 ) t\sim U(0,1) t∼U(0,1), G G G是生成器, ϵ = 1 0 − 4 {\epsilon} = 10 ^ { - 4 } ϵ=10−4, d d d为VGG测距。 d d d是自然二次所以除以 ϵ 2 {\epsilon^{2}} ϵ2抵消对细分粒度不必要依赖。
l W = E [ 1 ϵ 2 d ( g ( lerp ( f ( z 1 ) , f ( z 2 ) ; t ) ) , g ( lerp ( f ( z 1 ) , f ( z 2 ) ; t + ϵ ) ) ) ] , \begin{aligned} l_{\mathcal{W}}=\mathbb{E}\left[\frac{1}{\epsilon^{2}} d\left(g\left(\operatorname{lerp}\left({f(\mathbf{z}_{1})}, f(\mathbf{z}_{2}) ; t\right)\right)\right.\right.,\\ \left.\left.g\left(\operatorname{lerp}\left({f(\mathbf{z}_{1})}, f(\mathbf{z}_{2}); t+\epsilon\right)\right)\right)\right], \end{aligned} lW=E[ϵ21d(g(lerp(f(z1),f(z2);t)),g(lerp(f(z1),f(z2);t+ϵ)))],
从表格我们可以看出config E:增加噪声后PPL明显减小。Config B优于D作者认为全路径PPL略偏向 z z z。由于 w w w路径上的插值向量可能没有对应的 z z z,即没被训练过,从而生成差效果。
端点PPL,即 t ∈ { 0 , 1 } t \in \{0,1 \} t∈{0,1},config D优于B。
加入映射网络,FID和 w w w的PPL都更小了,并且深的映射网络带来更好结果。
在StyleGAN v2中,作者将PPL作为正则项加入到损失函数中。
如果隐空间与图像特征足够解耦,那么隐空间中存在线性超平面,可以二分类两种特征。
首先基于CelebA-HQ数据集,训练40种特征的分类器。然后用生成器生成200000张图像,用训练的分类器分类,去掉置信度最低的一半,得到隐变量和标签已知的100000张图像。对每个属性,用线性SVM拟合预测 z z z的类别,判断 z z z是否足够线性。线性关系用 X X X和 Y Y Y的分布差异衡量。
exp ( ∑ i H ( Y i ∣ X i ) \operatorname { exp } ( \sum _ { i } H ( Y _ { i } | X _ { i } ) exp(i∑H(Yi∣Xi)
X X X为SVM预测的类别, Y Y Y为分类器预测的类别
从上表最右列可以看出,增加mapping network的深度确实有助于提高 w w w的线性可分性。映射网络对传统生成器有同样的提升,具备通用性。
关键点:
创新点:
启发: