论文阅读-Hierarchical Cross-Modal Talking Face Generation with Dynamic Pixel-Wise Loss

论文链接: http://openaccess.thecvf.com/content_CVPR_2019/html/Chen_Hierarchical_Cross-Modal_Talking_Face_Generation_With_Dynamic_Pixel-Wise_Loss_CVPR_2019_paper.html
概述
关键词: 高级空间, 像素抖动, GAN模型
作者在本文中不由音频直接生成talking face, 而是将音频映射到高级空间, 也就是人脸的landmarks上, 再通过landmarks生成人脸. 这是个还不错的想法. 作者生成这种方法相比于直接生成, 有助于模型不会学习到视听信号和音频的伪相关性.
此外, 在对像素抖动和图像清晰度方面作者也给出了贡献.
本文是为数不多的相关论文里面在第一段就给出任务定义的:
"本文考虑了这样一个任务:给定目标脸部图像和任意语音录音,生成目标对象的逼真的有声面部,说出具有自然唇同步的语音,同时保持面部图像随时间的平稳过渡。"
这是talking face生成任务的经典定义.
作者提出了本文克服了这个领域的两个挑战:
-
视频帧之间的不流畅(伪影, 不连续), 并选择了GAN模型处理这种不流畅性
-
模型需要推断与视听信号无关的相机角度, 头部姿势等特征, 而这些特征是无法直接从音频中获得的. 因此作者选择将音频先转化为landmarks, 再转化为人脸的方法.
方法

模型示意, 左半边转化, 右半边生成.
1 整体结构
论文提出的模型输入为, 一个音源序列\(a_{1:T}\), 一个样例帧\(i_p\)和这个帧的landmarks\(p_p\). 模型会针对音源序列\(a_{1:T}\)生成其landmarks序列\(\hat{p}_{1:T}\)并生成连续的帧
\(\hat{v}_{1:T}\). 用公式表示就是:
\[\begin{array}{l} \hat{p}_{1: T}=\Psi\left(a_{1: T}, p_{p}\right) \\ \hat{v}_{1: T}=\Phi\left(\hat{p}_{1: T}, i_{p}, p_{p}\right) \end{array} \]
AT-net是一个encoder-decoder模型, VG-net则是一个多媒体CNN-RNN网络.
AT-net的任务是接受\(a_{1:T}\)和\(p_p\)并生成\(\hat{p}_{1:T}\). 公式定义为:
\[\begin{aligned} \left[h_{t}, c_{t}\right] &=\varphi_{\text {lmark }}\left(\mathrm{LSTM}\left(f_{\text {audio }}\left(a_{t}\right), f_{\text {lmark }}\left(h_{p}\right), c_{t-1}\right)\right), \\ \hat{p}_{t} &=\mathrm{PCA}_{\mathrm{R}}\left(h_{t}\right)=h_{t} \odot \omega * \mathrm{U}^{T}+\mathrm{M} \end{aligned} \]
其中, \(a_t\)是音频的MFCC特征. \(f_{audio}\), \(f_{lmark}\)和$$\varphi_{\text {Imark }}$$分别为audio的encoder, landmarks的encoder和decoder. \(h_p\)和\(h_t\)分别为输入图片和输出的landmarks PCA.
\(PCA_R\)是PCA重构,而ω是增强PCA功能的升压矩阵。 U对应于最大特征值,M对应于训练集landmarks的平均形状。
VG-net是一个应用注意力机制的CRNN, 公式定义为:
\[\begin{array}{l} v_{t}^{\prime \prime}=f_{\operatorname{img}\left(i_{p}\right)} \oplus\left(f_{\text {lmark }}\left(p_{t}\right)-f_{\text {Imark }}\left(p_{p}\right)\right) \\ a t t_{p_{t}}=\sigma\left(f_{\text {Imark }}\left(p_{t}\right) \oplus f_{\text {lmark }}\left(p_{p}\right)\right) \\ v_{t}^{\prime}=\left(\operatorname{CRNN}\left(v_{t}^{\prime \prime}\right)\right) \odot \text { att }_{p_{t}}+i_{p}^{\prime} \odot\left(1-\operatorname{att}_{p_{t}}\right) \end{array} \]
2 基于注意力的动态像素级loss
现有工作, 不管是基于GAN还是encoder-decoder, 都会出现像素抖动问题:

如图所示, 相邻的帧之间, 同区域的像素出现了明显的不连贯, 而人对这种不连贯是非常敏感的. 一般的GAN loss或者L1/L2 loss都不能解决这个问题. 这也是本文着重解决的一个问题.
本文最终生成的帧要符合如下公式约束:
\[\hat{v}_{t}=\boldsymbol{\alpha}_{t} \odot m_{t}+\left(\mathbf{1}-\boldsymbol{\alpha}_{t}\right) \odot i_{p} \]
\(\alpha_t\)是在\(v'_t\)上进行卷积和sigmod激活之后获得的, \(m_t\)在\(v'_t\)上卷积和进行hyperbolic tangent activation(其实就是tanh). 这样会约束模型在于音频无关的区域(头发, 背景等)持续的生成统一的像素点.
3 基于回归的判别器 Regression-Based Discriminator

结构不是很难, 原始图片和生成图片或者和ground truth作为输入, 通过LSTM预测landmarks, 并给整个序列给出一个分数\(s\):
\[\begin{aligned} \hat{p}_{t} &=\mathrm{D}_{p}\left(p_{p}, v_{t}\right) \\ &=p_{p}+\mathrm{L} \mathrm{S} \operatorname{TM}\left(f_{\text {lmark }}\left(p_{p}\right) \oplus f_{\text {img }}\left(v_{t}\right)\right) \end{aligned} \]
\[\begin{aligned} s &=\mathrm{D}_{s}\left(p_{p}, v_{1: T}\right) \\ &=\sigma\left(\frac{1}{T} \sum_{t=1}^{T}\left(\mathrm{LSTM}\left(f_{\text {Imark }}\left(p_{p}\right) \oplus f_{\text {img }}\left(v_{t}\right)\right)\right)\right) \end{aligned} \]
总结
本文比较让我眼前一亮的是:
-
将音频转化为高级特征表示而不是直接生成, 这相当于预处理了一波特征, 相当有效.
-
连续帧之间的像素抖动解决.