StyleFlow 水记
https://github.com/RameenAbdal/StyleFlow
论文: https://dl.acm.org/doi/10.1145/3447648
简单来说就是,把StyleGAN的mapping network换成一个flow模型,而且是带条件的flow模型
有两个任务,
一个是根据条件生成图像,
一个是根据条件修改图像
生成使用的是 StyleGAN 和 StyleGAN2
先回忆一下 StyleGAN2 ,顺便定义下符号
StyleGAN2 会用一个先验网络,把噪声 z S ∈ R 512 \mathbf{z}_{S} \in \mathbb{R}^{512} zS∈R512 映射为 w ∈ R 512 \mathbf{w} \in \mathbb{R}^{512} w∈R512 ,然后用生成器对 w \mathbf{w} w 解码,得到 3x1024x1024 的图像
z S \mathbf{z}_{S} zS 是一个高斯噪声,
w \mathbf{w} w 用于控制 StyleGAN2 生成器中 18 个不同位置的 nromalization(同一个 w \mathbf{w} w 重复18次)
定义一个 W + \mathbf{W+} W+ 空间,对 w ∈ W + \mathbf{w}\in\mathbf{W}+ w∈W+ 有 w ∈ R 18 × 512 \mathbf{w}\in\mathbb{R}^{18\times512} w∈R18×512 ,表示在控制 StyleGAN2 时用 18 个不同的 w \mathbf{w} w
在训练时,使用 W \mathbf{W} W 空间,在编辑时,使用 W + \mathbf{W+} W+ 空间
用一个分类器来度量图片的属性,
对于人脸,用了17类
对于任务一,根据属性生成图像
z ∼ N ( 0 , I ) w = Φ ( z , a ) \mathbf{z} \sim N(\mathbf{0}, \mathcal{I})\\ \mathbf{w}=\Phi(\mathbf{z}, \mathbf{a}) z∼N(0,I)w=Φ(z,a)
w \mathbf{w} w 的生成会考虑属性 a \mathbf{a} a
这个 Φ \Phi Φ 是一个 flow-based 的模型,称为 条件CNF(conditional continuous normalizing flow),该模型是可逆的。
w \mathbf{w} w 经过生成器解码得到图片,图片的属性必须符合 a \mathbf{a} a (使用分类器判断)
对于任务二,根据属性编辑图像
首先,从图片反解出编码 w 0 \mathbf{w}_0 w0 ,使用的方法是 [Abdal et al. 2019; Karras et al. 2019a]
然后我们用分类器分类图片,得到当前属性 a 0 \mathbf{a}_0 a0
然后用 w 0 \mathbf{w}_0 w0 和 a 0 \mathbf{a}_0 a0 反解出 z 0 \mathbf{z}_0 z0 ,用的方法是作者提出的 CNF 的反转(flow模型天然就是可逆的)
然后用 z 0 \mathbf{z}_0 z0 和用户给定的属性 a t \mathbf{a}_t at 走正常流程去生成图片