0%

styleVideoGAN

StyleVideoGAN: A Temporal Generative Model using a Pretrained StyleGAN

【人脸视频生成】【paper】【code未开源

摘要

  本文使用预训练的 styleGAN 为基础,采用类似 pSp 的架构进行 $\mathcal W+$ 空间的视频序列监督,同时采用基于 GRU 架构的 RNN 网络自回归生成视频,为了避免视频生成时的片段重复现象,提出了“梯度角惩罚”。另外本文展示了效果不太好的“偏移技巧”,即将生成视频的运动转移到不同的主题。

概览

image-20230410151337116


创新

  • 在预训练 styleGAN 的 $\mathcal W+$ 空间上对时间序列进行训练以生成 video,模型完全在 $\mathcal W+$ 空间监督
  • 提出一种 offset trick,用以将生成的视频运动转化至不同的主题
  • 使用 gradient angle penalty 惩罚 RNN,用以避免 RNN 生成视频时可能出现的循环问题
  • 该方法可以生成手部视频

网络

image-20230410151303114

  本文的架构是一个 WGAN,具体来说,输入为 $(i,s)$,其中 $i\sim \mathcal N(0,1)^{32},\ s\sim \mathcal N(0,1)^{32\times(t-1)}$,也就是说,$i$ 就代表视频的第一帧,其余的 $s$ 都代表剩余帧。这些初始输入通过一系列 RNN 得到 $l$(这里的 $l$ 对标 styleGAN 中的 $z$),然后经过 $T$ 的特征映射(对标 styleGAN 的 $F$)并进一步学习仿射变换得到 $\mathcal W+$ 空间的各个帧的隐向量 $w$(这里的 $w$ 对标到 pSp 之中是 $18\times 512$ 的向量,包含一帧的所有粒度特征控制)。之后的 $C$ 即判别器,只是换了一个名字,之所以判别器需要包括 $E,\ TConv$ 两个部分,主要考虑到生成器与判别器的网络容量大小关系。

  整体来说,本文的前向流程如下:

  • 对于初始视频 $V$ 其中包含 $t$ 帧 $I_t$,首先将每一帧通过预训练的 pSp 映射至 $w_k^+\in\mathcal W+ ,\ k\in[0,t)$
  • 接着从 $\mathcal N(0,1)$ 中采样 $i$ 和 $t-1$ 个 $s$,输入生成器 $G$,$G(i,s)=\{l_k\},k\in[0,t)$
  • 将得到的 $t$ 个 $l$ 分别通过映射 $T$ 和 18 个仿射映射,得到 $w_k\in\mathcal W+,\ l\in[0,t)$
  • 对于 $w_k,\ w_k^+$,将其分别作为 fake 和 real 输入判别器 $C$,通过对抗训练得到合适的 $G$

  ⛔本文的架构理论上可以生成任意长度的视频(测试时),训练为了考虑判别器还是只能产生 25 帧

$G$ 的网络结构

  生成器包含一个 $H$ 以及一个由 4 个GRU单元组成的 $P$,$P$ 处理“每时间步随机”,目的是产生多样的运动方式。为了初始化 GRU 内存,让 MLP $H$ 伪生成前三个单元的一些内存内容,而最后一个单元则用 $i$ 初始化。使用数学语言描述为:

  简单来说,第 $k$ 层 $P_k$ 接收输入 $s_k$,和上一层传下来的四个隐特征 $\{h_{k-1,0\to3}\}$, 输出下一层 $P_{k+1}$ 所需要的隐特征,同时每一层输出的隐特征的最后一个直接当做输出。

损失函数(“梯度角惩罚”)(gradient angle penalty)

  本文的损失描述为:

  其中前两项记为 WGAN 的损失函数描述,最后一项即本文新提出的梯度角惩罚,其目的是防止使用 RNN 架构生成长视频时出现“循环视频片段”的情况。

  其具体的做法为:

  • 计算最后一帧相对于第一帧的偏移 $d,\ d=norm(l_{t-1}-l_0)$
  • 计算 $d$ 对每一个 $s$ 的梯度($t-1$ 个 ),对其计算二阶范数(一阶应该也行),作为分子
  • 计算 $d$ 对 $i$ 的梯度,作为分母
  • 取 arctan,得到角度 $\phi$,最终的 $\mathcal L_{GAP}=max(0, \frac\pi 4-\phi)^2$

即:

image-20230410213039520

  这个式子的有效性原理在于:假如视频的生成出现了循环,那么就说明生成的 video 没有太和随机采样的 $s$ 有关,即更多地和 $i$ 有关,此时关于 $i$ 的梯度会明显大于关于其他采样的 $s$ 的梯度,这时候 $\phi$ 就会接近 0,返回的 loss 也就会变大。

结果

  在短视频和长视频上的 FID 和 FVD 的值,先 mark 一下,到时候可能要和他比一比

image-20230410213403647

  生成的视频质量,还是很棒的(毕竟基于 pSp,至少放一些直接 reverse 的结果也不会差)

image-20230410213641532

  偏移技巧:将生成的视频转化为不同的主题(也就是视频驱动人脸生成视频),效果满差的感觉,下图中上面是生成的正常视频,下面的左一,左二是普通的方法,左三,左四是他提出的基于 PCA 的正交迁移方法,因为效果属实不好,需要的话后期再看

image-20230410214149442

  本文还专门强调自己虽然是专注于人脸视频生成,但是所设计的方法之中没有针对人脸设计的模块,因此也放了一些其他 domain 的结果,可以看出确实多了些多样性出来

image-20230410213805162