StyleGAN生成模型

    Stylegan的一个非常实用的人脸生成模型,它可以通过控制参数来控制人脸生成的样式,包括五官、发型乃至人种肤色。

这篇文章大致总结一下Stylegan的一些原理和要点。

  下图(右边)是stylegan生成器的模型结构:

映射网络Mapping Network

  从上图可以看到,传统的生成器的输入就是直接用高斯分布下512维的随机向量。而Stylegan中使用了8层全连接网络Mapping network来进一步处理输入,将它映射到另一个512维,并未改变其维度。此外,我们可以发现传统的生成器输入数据只送到了第一层;而在StyleGAN中,通过Mapping Network处理之后的W’会陆续地影响很多层,这是用来控制不同层次下的样式的。这一点在下面的AdaIN部分再细讲。

使用Mapping Network的好处在于:

  1. 传统的输入肯定是高斯分布,它有可能和实际生成器使用的真实数据输入有区别;而通过一个全连接网络,就可以消除高斯分布的影响,出来的新512维的数据可以是任意的分布,它可以更好匹配我们的真实数据。
  2. (第2点在看完下面的AdaIN部分后再看会清楚一些)  如果直接用输入向量来送入生成网络的各个层去控制不同层次下的信息,会有“特征纠缠”的现象。这个现象简单来说会导致:当我们想控制低层次下的粗略信息时,也会影响到高层次下的细微信息,会有“牵一发而动全身”的效果——显然我们不想这样做,我们就想不同层次各自控制各自的。而通过这么一个Mapping Network我们就可以让处理后的输入数据不会有这个现象。

生成网络的“渐进层”                                                                   

  关于生成网络(图中的Synthesis network)部分,我们看起来好像是4*4的网络之后连接上一个8*8网络,不同大小的网络层似乎是串联起来的——但实际上,生成网络当中只有一个结构,并在训练的过程中不断地变化。也就是一开始是4*4,后来变成8*8……最终变成1024*1024。

  这源自于Stylegan的前身ProGAN,在ProGAN模型中,我们发现生成器如果采用这样变化的策略,可以首先学习到低分辨率图像的特征。有了低分辨率图像特征做基础,随着分辨率的提高和训练,慢慢增加网络复杂度的同时,就学习到越来越多的细节,这是一个非常自然、快速而水到渠成的训练过程。

  那这里的生成模型是如何实现网络的动态变化呢?这里比较粗略地提一下:比如在图中我们发现,从4*4变化到8*8需要进行一个Upsample,我们的变化就从这个Upsample展开:我们知道,如果初始为4*4,如果不经过Upsample,那么输出依然是4*4的没有变化;如果经过了Upsample则会变成8*8——显然我们有两条路:经过Upsample与不经过Upsample。

  我们给经过Upsample路径一个权重α,不经过就是(1-α),那么一开始我们网络结构不变化的时候,α=0;然后我们逐渐增大α,网络结构开始平滑地发生变化,此时对于一个batch的样本,就有α的比率走进了8*8的网络,(1-α)继续保持4*4;当α=1时,则结构正式变为8*8。(从8*8变化至16*16也是类似。)

AdaIN

  上面讲到过,生成器的在比较低的层下可以进行比较低分辨率的学习,控制一些粗糙特征,比如发型、脸型;到后面比较高的层,就可以控制细微和高分辨率的特征,比如眼睛形状、头发纹理等。

  为了增强对这些样式的控制,我们将经过映射网络处理之后的W’作为style控制向量穿插在每个阶段当中。我们的生成网络从4*4到8*8再到1024*1024一共9个阶段,从图中可以看到每个阶段都以AdaIN的形式被作用两次。

  具体是如何通过AdaIN进行样式控制的呢?AdaIN在这篇文章有讲过,就是用风格图像的均值和方差去对原内容图像进行缩放和平移,更为广义的说:它的γ和β是需要自己计算得到的。而在这里的的AdaIN,其实也是需要计算出一个γ和β来对特征图进行缩放和平移。

  在图中我们可以看到:每次作用时,W’都会先经过一个过程“A”处理,这里的A其实就是一个全连接层,我们将W’通过全连接层A变换(计算)出两个参数:γ和β,就可以拿去对(进行IN操作后的)特征层每个channel进行缩放,从而成为AdaIN。

  就是通过这样的AdaIN的方式,来让W’影响到生成网络的生成,从而更好地控制一些样式信息。

 

最后再提一下,上面的我写的几个要点其实都和生成器相关。我们整体的StyleGAN模型还有判别器呢,整个StyleGAN大概是这样:

小结:

         这篇就简单总结了一下生成模型stylegan的一些要点部分,包括Mapping Network,AdaIN等。除了以上的几个主要的要点之外,StyleGAN还有很多其他细节方面的操作,比如加入噪音来控制多样化、微调超参数等,这些可以在论文中继续研究。

猜你喜欢

转载自blog.csdn.net/weixin_44492824/article/details/124197174