文章目录
简介
MakeItTalk做的是输入一张图片和一段语音,让图片的头部能跟着语音动起来。
它的做法是:利用现有的方法先提取出图像中人物的facial landmarks,然后提取出输入语音的内容信息和说话人的信息,再利用这2种特征得到嘴唇、头部和面部表情对应的facial landmarks应有的变化,最后再与原始图像结合得到一段视频。
流程图如下:
它的优点有:
- 可以在未经fine-tune的情况下处理在训练中没有见过的speaker;
- 既可以处理真人,又可以处理卡通人物;
- 成功地分离了语音中的内容信息和演讲者个人信息(content and speaker information),从而既可以做到lip-sync,又可以让头部动作和脸部表情更加符合演讲者。
Voice Conversion提取语音内容信息
内容信息是为了实现嘴唇与语音同步的。
为了抽取输入语音的content representation,论文使用的是LSTM-based的AutoVC encoder。得到的content embedding
A
∈
R
T
×
D
A \in R^{T\times D}
A∈RT×D,其中
T
T
T表示输入的语音帧数,
D
D
D是维度。
因为我们需要获取语音内容和facial landmarks之间的时序关系,所以我们会用到LSTM。
先用现有工具提取facial landmarks
q
q
q,再将上面得到的content embedding输入LSTM中,再输入一个MLP中,得到每一帧的facial landmarks的预测偏移量
Δ
q
t
\Delta q_t
Δqt。
具体公式是:
Voice Conversion提取语音演讲者信息
演讲者的信息是为了得到更准确的头部动作与脸部表情。
论文使用的是一个“最小化不同演讲者之间的相似度,最大化同一演讲者之间的相似度”的speaker verification model,提取出的identity embedding是256维的。论文为了提高模型对训练中没见过的演讲者的泛化性,又加了一个MLP把256维降到128维得到embedding
s
s
s。
content和identity embedding结合
接着将content embedding送入LSTM里(这个LSTM跟之前的结构是一样的,但参数不同),得到输出 c ~ t \widetilde{c}_t c t。
为了产生一致的头部运动和脸部表情,需要得到比content animation module更长的时序关系的信息(比如嘴唇动一下只持续几十毫秒,而头从左到右转会持续几秒),所以使用了一个self-attention network。
将前面LSTM和MLP的输出
c
~
t
\widetilde{c}_t
c
t 和
s
s
s 输入self-attention network中。
再将self-attention network的输出和原始的facial landmarks输入MLP里得到 facial landmarks 的预测displacement。
公式如下:
最终图像的合成
一、真人
将每一帧预测的landmarks
y
t
y_t
yt 组成一张图片,与原图在通道维度上连接在一起(此时通道数变成6),输入一个 encoder-decoder network,得到最终的每一帧图像。
二、卡通图像
卡通图像的生成不使用神经网络。它先用 Delaunay triangulation 在原图的 landmarks 和预测的 landmarks 上生成语义三角形,然后就可以通过这些语义三角形自然地改变图像的头部动作和脸部表情。如下图所示:
训练
Speech Content Animation Training
在内容信息的提取部分,损失函数包括:(1)预测的landmarks positions
p
t
p_t
pt 和实际的landmarks positions
p
^
t
\hat{p}_t
p^t 之间的距离;(2)以及它们各自的graph Laplacian coordinates(促进landmarks相对于彼此的正确放置,并保留脸部形状的细节)之间的距离。
损失函数如下:
其中的graph Laplacian L ( p t ) L(p_t) L(pt):
N ( p i ) N(p_i) N(pi) 包含了在一个distinct facial part里与 p i p_i pi 相连的 landmarks。
Speaker-Aware Animation Training
为了让生成的头部运动和面部表情更加地match,我们增加了一个判别器
A
t
t
n
d
Attn_d
Attnd,来判别生成的演讲者的动态facial landmarks看起来是否真实。
判别器输入生成的facial landmarks序列、audio content embedding和speaker embedding,输出每一帧的真实程度
r
t
r_t
rt:
r
t
=
A
t
t
n
d
(
y
t
→
t
+
τ
′
,
c
~
t
→
t
+
τ
′
,
s
;
w
a
t
t
n
,
d
)
r_t=Attn_d(y_{t\rightarrow t+ \tau^{'}}, \widetilde{c}_{t\rightarrow t+ \tau^{'}},s;w_{attn,d})
rt=Attnd(yt→t+τ′,c
t→t+τ′,s;wattn,d)
要训练判别器能辨别出生成的landmarks是假的,真实的landmarks是真的:
L
g
a
n
=
∑
t
=
1
T
(
r
^
t
−
1
)
2
+
r
t
2
L_{gan}=\sum_{t=1}^T (\hat{r}_t-1)^2+r_t^2
Lgan=t=1∑T(r^t−1)2+rt2
其中
r
^
t
\hat{r}_t
r^t是判别器输入真实的landmarks时的输出。
而生成器的损失函数包括:真实和生成的landmarks之间的距离、它们的Laplacian coordinates之间的距离、想要误导判别器的损失。
生成器(最小化
L
s
L_s
Ls)和判别器(最小化
L
g
a
n
L_{gan}
Lgan)交替训练。
Image-to-Image Translation Training
这一部分是真人图片才需要的。
损失函数包括:生成的每一帧图像与原图像的距离的1范数,以及它们之间的perceptual feature distance的1范数。设生成图像为
Q
t
r
g
Q_{trg}
Qtrg,目标图像为
Q
^
t
r
g
\hat{Q}_{trg}
Q^trg:
其中
ϕ
\phi
ϕ是 concatenates 了 VGG19 的 feature map activations 。
新的evaluation metrics
accurate lip movements
这部分的metrics包括预测和真实的下巴、嘴唇的landmarks之间的平均欧氏距离D-LL;两者的嘴唇和下巴的变化速度的平均欧氏距离D-VL;两者的嘴巴张开面积占总图像面积的百分比的平均差距D-A:。
how well the landmarks
这部分的metrics包括:两者的facial landmarks locations之间的平均欧氏距离D-L(normalized by the width of the face);两者的landmarks变化速度的平均欧氏距离D-V(速度计算方式是:相邻2帧之间landmark locations的差距);两者的头部旋转角度(measured in degrees)和头的朝向(normalized by the width of the face)的平均差距D-Rot/Pos。
总结
论文的创新点在于分离了语音中的内容信息和演讲者信息,从而能更好地做到lip-sync,以及头部动作和面部表情更加符合演讲者本人。