文章目录
REAL3D-PORTRAIT原文翻译
Project Page:https://real3dportrait.github.io/
Github:https://github.com/yerfor/Real3DPortrait
Paper:https://arxiv.org/abs/2401.08503
ABSTRACT
一次样本3D 说话肖像生成旨在从看不见的图像中重建 3D 化身,然后使用参考视频或音频对其进行动画处理以生成说话肖像视频。现有的方法不能同时实现准确的3D化身重建和稳定的说话人脸动画的目标。此外,虽然现有的工作主要集中在合成头部部分,但生成自然躯干和背景片段以获得逼真的说话肖像视频也很重要。为了解决这些限制,我们提出了 Real3D-Potrait,这是一个框架,它 (1) 使用大型图像到图像到平面模型改进了一次样本3D 重建能力,该模型从 3D 人脸生成模型中提取 3D 先验知识; (2) 使用有效的运动适配器促进准确的运动条件动画; (3) 使用头部-躯干-背景超分辨率模型合成具有自然躯干运动和可切换背景的真实视频; (4) 支持具有可泛化音频到运动模型的一次样本音频驱动的说话人脸生成。大量的实验表明,与以前的方法相比,Real3D-Portrait可以很好地推广到看不见的身份,并生成更真实的说话肖像视频。
1 INTRODUCTION
说话头生成的目的是在给定驾驶条件(运动序列(Wang等人,2021)或驾驶音频(Chung等人,2017;Kim等人,2019;Yi等人,2020;Ye等人,2022)的情况下合成说话肖像视频。它是计算机图形学和计算机视觉中长期存在的跨模态任务,具有多种实际应用(Huang et al., 2022; 2023a),例如视频会议 Huang et al. (2023b) 和视觉聊天机器人 Ye et al. (2023c)。以前的 2D 方法 (Wang et al., 2021; Zhou et al., 2020; Lu et al., 2021) 由于生成对抗网络 (GAN) 的强大功能,可以产生逼真的视频。然而,由于缺乏显式的3D建模,这些2D方法在显著的头部运动下受到扭曲伪影和不切实际的扭曲的挑战。在过去的几年里,基于神经辐射场 (NeRF) 的 3D 方法 (Mildenhall et al., 2020; Guo et al., 2021; Hong et al., 2022b; Shen et al., 2022; Ye et al., 2023b) 一直盛行,因为它们保持了逼真的 3D 几何形状,即使在大的头部姿势下也能保留丰富的纹理细节。然而,在它们中的大多数中,该模型过度拟合一个特定的人,这需要对每个看不见的身份进行昂贵的个人训练。探索一次性 3D 说话人脸生成任务很有希望,即给定一个看不见的人的参考图像,我们的目标是将它提升到 3D 化身并用输入条件对其进行动画处理以获得逼真的 3D 说话人视频。
随着 3D 生成模型的最新进展,可以学习泛化到各种身份的 3D 三平面表示 (EG3D, Chan et al. (2022)) 的隐藏状态。虽然最近的工作(Li et al., 2023b; Li, 2023)开创了一次性 3D 说话人脸生成,但它们无法同时实现准确的重建和动画。具体来说,一些作品(例如 OTAvatar、Ma 等人(2023))首先生成一个 2D 说话人脸视频,然后通过 3D GAN 反演将其提升到 3D (Yin et al., 2023),它们具有丰富的 3D 先验知识来自 3D GAN,但受到时间抖动和图像失真等动画伪影的挑战。另一项工作(Yu et al., 2023; Li et al., 2023a)学习前馈网络从图像中预测 3D 表示,然后用输入条件变形 3D 模型。然而,由于缺乏视频数据集中的大姿态多视图帧,图像到图像到 3D 重建过程并不稳健,这对于学习 3D 几何至关重要。由于上述挑战,现有的一次性 3D 方法无法生成高质量的说话人脸视频。
基于这一观察,本文的第一个目标是提高 3D 重建和动画能力:(1)对于重建,我们建议通过从训练有素的 3D 人脸生成模型中提取 3D 先验知识来预训练大型图像到图像 (I2P) 模型。I2P 模型是一个前馈网络,它学习使用单个前向重建输入图像的 3D 表示。我们将 ViT (Dosovitskiy et al., 2020) 和 VGGNet (Simonyan & Zisserman, 2014) 的优势结合起来构建网络架构并扩大模型以更好地存储图像到 3D 映射的知识。(2) 至于动画,我们设计了一个有效的面部运动适配器 (MA) 来在给定输入条件下变形预测的 3D 表示。具体来说,运动适配器以细粒度运动表示、投影归一化坐标代码 (PNCC) (Zhu et al., 2016) 作为输入,然后预测残差运动差异平面,通过元素相加编辑重建的 3D 表示。由于PNCC与外观和姿势很好地分离,我们使用浅SegFormer (Xie et al., 2021)来有效地将输入的表达信息注入到规范空间中。总之,我们预先训练了一个大规模的图像到平面主干,用于广义和高质量的3D重建,然后利用轻量级运动适配器实现高效的面部动画。
第二个目标是提高合成躯干和背景段的自然度。现有的方法要么只对头部部分进行建模(Hong et al., 2022b),要么对整个头部和躯干进行建模(Li et al., 2023b),忽略了自然躯干和背景获取真实说话肖像视频的必要性。为了处理这个限制,我们建议分别对头部、躯干和背景片段进行建模,并在渲染过程中将它们组合成最终图像。具体来说,我们设计了一个Head-Torso-Background超分辨率(HTB-SR)模型,该模型由一个超分辨率分支组成,用于对低分辨率体绘制的头部图像进行上采样,一个基于翘曲的躯干分支来建模单个躯干运动,以及一个背景分支来实现可切换的背景渲染。通过这些设计,我们可以在给定运动条件下渲染逼真且高保真的 3D 说话肖像视频。为了进一步支持音频驱动应用,我们设计了一个通用的变分音频到运动(A2M)模型,将音频信号转换为运动表示PNCC。我们的音频到运动模型在没有适应的情况下可以很好地推广到看不见的身份,并支持明确的眨眼和嘴巴幅度控制。
总而言之,在本文中,我们提出了Real3D-Portrait,一种一次性和逼真的3D说话肖像生成方法:(1)利用I2P模型和运动适配器提高3D重建和动画能力;(2)利用HTB-SR模型实现自然躯干运动和可切换的背景渲染;(3)提出了一种通用的A2M模型,因此成为第一个支持音频和视频驱动场景的一次性3D人脸系统。实验表明,我们的方法优于现有的一次性说话人脸系统,并与最先进的特定于人的方法相比实现了相当的性能。消融研究证明了每个组件的有效性。
2 RELATED WORK
我们的工作侧重于一次性 3D 说话人脸生成任务,它主要与重建和动画两个方面有关,即(1)如何重建输入图像的准确 3D 人脸表示; (2) 如何变形 3D 表示并渲染与驾驶条件(运动或音频)相对应的说话人脸。我们将在以下部分中分别讨论它们。
3D人脸表示 在说话人脸生成中引入3D人脸表示是提高合成视频自然度的基本技术。最早采用的 3D 表示是 3D 可变形模型 (3DMM) (Blanz & Vetter, 1999),它在人脸渲染过程之前提供了强大的几何形状。然而,由于两个限制,3DMM的精度被认为是不令人满意的:(1)重建的人脸网格保真度较低,缺乏皱纹等细节;(2)只有人脸区域由参数模型建模,无法表示头发、帽子、眼镜等其他区域。然后,出现了一种基于神经辐射场 (NeRF) (Mildenhall et al., 2020) 的 3D 头部表示。早期的基于 NeRF 的 3D 表示通常以低效的每人训练方式提取,这需要数十小时来拟合每个身份。最近,三平面表示 (Chan et al., 2022) 的发明及其在 3D 人脸 GAN 中的使用为高质量和高效的基于 NeRF 的 3D 人脸重建铺平了道路。一些工作 (Sun et al., 2023) 利用 GAN 反演 (Roich et al., 2022) 从预训练的 3D Face GAN 中获得三平面,这存在推理速度慢和时间抖动。相比之下,其他基于预测器的作品 (Trevithick et al., 2023) 探索了学习将图像到平面的映射,该映射直接将输入图像映射到三平面表示,在推理过程中更高效、更稳定。我们的大型图像到图像模型遵循基于预测器的范式。
2D/3D人脸动画 最早基于2D的人脸动画方法,如(Prajwal等人,2020;Hong等人,2022a)直接采用GAN生成结果,导致训练不稳定和视觉质量差。后来,基于翘曲的方法(Siarohin 等人,2019;Wang 等人,2021;Zhao & Zhang,2022;Pang 等人 2023;Hong & Xu, 2023)旨在在给定从驾驶视频中提取的 3D 感知关键点的情况下,使用密集翘曲场扭曲源图像的像素。它实现了高图像保真度,但由于缺乏严格的3D约束,在大头部姿势的驱动下受到挑战,并且存在扭曲伪影和失真。为了处理 2D 建模引起的伪影,一些工作求助于基于 3D 的方法。
最早的 3D 说话人脸方法主要基于 3DMM,通常首先对输入图像进行 3D 重建(Deng et al., 2019c; Danˇeˇcek et al., 2022),然后将 3DMM 合并到人脸渲染过程中(Wu et al., 2021)。然而,由于3DMM造成的信息丢失,这些方法无法生成照片般逼真的结果。最近,基于 NeRF 的说话人脸生成盛行,因为它结合了高图像保真度和严格几何约束的优点。然而,大多数成功的都是身份过度拟合的(Guo et al., 2021; Tang et al., 2022; Ye et al., 2023a),这需要对每个看不见的身份进行数十小时的个人训练。最近,一些作品探索了基于 one-shot NeRF 的说话人脸生成与三平面表示,可以分为两类。第一类(Ma et al., 2023; Li, 2023; Trevithick et al., 2023)采用 2D 动画和 3D 提升管道,利用预训练的 2D 说话人脸系统获得 2D 说话人脸视频,然后通过迭代 3D GAN 反演将其提升到 3D(Yin et al., 2023)。这一系列工作可以享受预先训练的3D GAN的鲁棒3D先验知识,但也受到GAN反演不稳定、头部姿态性能下降的挑战。第二类采用 3D 重建和 3D 动画管道 (Li et al., 2023a;b),它学习图像编码器来预测 3D 表示,然后在给定条件的情况下变形重建的 3D 模型。然而,由于视频数据集通常缺乏大视图帧,三维重建的泛化能力并不令人满意。由于空间限制,我们在附录 A 中讨论了我们的方法与以前的方法之间的关系。
3 REAL3D-PORTRAIT
Real3D-Portrait 旨在实现逼真的一次性视频/音频驱动的 3D 说话人脸生成。如图 1 所示,整体推理管道由大型图像到图像 (I2P) 模型(第 3.1 节)组成,用于重建 3D 头部表示和运动适配器(第 3.2 节)以在给定面部运动的情况下变形 3D 头部。然后,我们可以用体积渲染器在任意相机(头部)姿势渲染头部图像。然后,我们提出了一个头部-背景超分辨率(HTB-SR)模型(第3.3节),以512×512分辨率合成最终图像,分别建模躯干和背景。为了支持音频驱动的应用程序,我们还设计了一个通用的音频到运动(A2M)模型(第3.4节),将原始音频转换为相应的面部运动。四个模型的训练过程是连续的。我们将详细描述设计和训练过程。
图 1:Real3D-Portrait 的推理管道。以一幅源图像为输入,以视频/音频为驱动条件,合成了具有真实躯干和背景的3D说话化身。
3.1三维人脸重构的图像到图像转换模型
在第一阶段,我们需要重建源图像I_{src}中目标身份的规范 3D 人脸表示
P
c
a
n
o
P_{cano}
Pcano。具体来说,我们学习了一种前馈网络,它将输入图像直接转换为三平面表示,即图像到图像 (I2P) 模型。
网络设计 在设计I2P模型的网络结构时,我们注意到网络的两个主要挑战:(1)它应该将输入图像映射到规范的三平面,这需要从像素坐标到世界坐标的坐标变换。(2) 它应该从源图像中提取丰富的外观特征来保证渲染图像的保真度。为此,如图2(a)所示,我们设计了一个由ViT和VGG分支组成的混合网络。ViT分支由一堆SegFormer块组成,它在补丁之间执行注意,并可以有效地处理像素到世界的规范化过程。由于ViT由于补丁嵌入操作不能保持高频纹理,作为补充,我们设计了一个VGG分支,它只是一堆卷积层来提取高频外观特征。两个分支的输出信息通过连接融合,并进一步用浅层卷积层处理以产生最终的三平面表示。请注意,我们删除了 VGG 分支中的所有归一化,以保持所有隐藏层中特定于身份的外观相关偏差。
预训练过程 说话人脸数据集通常缺乏多视图帧,这对于模型学习 3D 先验知识是必要的。为了提高三维人脸重建的泛化能力,受Trevithick等人(2023)提出的多视图重建任务的启发,我们首先在EG3D (Chan et al., 2022)合成的多视图图像数据集上预训练I2P模型,这是一个用于生成人脸的3D GAN。我们在附录 B.1 中说明了预训练过程。
图2:I2P模型的网络结构、运动适配器和HTB-SR模式
3.2 3D人脸动画的运动自适应
通过 I2P 模型的预训练过程,我们实现了从源域重建准确的 3D 人脸表示。然后,给定输入运动条件,我们训练一个运动适配器来动画预测的 3D 人脸。
运动表示 我们使用投影归一化坐标代码 (PNCC) (Zhu et al., 2016; Kim et al., 2018; Li et al., 2023a) 作为运动表示,它是一种姿势/外观不可知的特征图,具有基于 3DMM 人脸的细粒度面部表情信息。具体来说,给定一对身份代码 i 和表达式代码 e,我们可以通过 Z-Buffer (Phong, 1998) 算法和 NCC (Zhu et al., 2016) 作为颜色图,通过在规范姿势处栅格化 3DMM 人脸网格来获得 PNCC。我们在附录 B.2 中提供了计算 PNCC 的详细信息。
由于3DMM的身份表达分解,我们可以利用PNCC实现身份不可知的运动条件人脸动画。在训练过程中,我们首先拟合训练视频的3DMM参数,得到ground truth PNCC。在推理过程中,我们可以通过以下公式构建驾驶 PNC:
其中
i
s
r
c
i_{src}
isrc是源图像的身份系数,
e
d
r
v
e_{drv}
edrv是从驾驶视频中提取或由音频到运动模型预测的表达式系数(第 3.4 节)。
预测Residual Motion Diff-plane 一旦确定了运动表示,第二个问题是如何将运动条件注入到3D表示中来控制面部表情。我们没有像以前的工作那样选择变形场,因为它通常会导致预测网格的质量较差(Li et al., 2023a)。相反,给定一个训练有素的 I2P 模型来生成具有准确几何/纹理信息的 3D 表示,我们建议学习一个轻量级运动适配器 (MA) 来预测Residual Motion Diff-plane,它只根据不同的运动条件编辑规范三平面
P
c
a
n
o
P_{cano }
Pcano的最小几何形状变化。对于所提出的MA的网络结构,如图2(b)所示,我们采用浅层SegFormer (Xie et al., 2021)享受其高效率和强大的能力,实现注意图斑块上注意带来的交叉坐标变换。具体来说,给定输入运动条件
P
N
C
C
d
r
v
PNCC_{drv}
PNCCdrv和相机姿势cam,对源图像
I
s
r
c
I_{src}
Isrc进行动画处理的过程可以表示为:
其中VR和SR是香草体渲染器和超分辨率模块,其结构如图5所示;I2P和MA分别是所提出的图像到图像模型和运动适配器;
P
N
C
C
d
r
v
PNCC_{drv}
PNCCdrv是公式1中定义的驱动运动表示。
P
N
C
C
s
r
c
PNCC_{src}
PNCCsrc是从源图像中提取的PNCC。请注意,MA 的输入是
P
N
C
C
s
r
c
PNCC_{src}
PNCCsrc和
P
N
C
C
d
r
v
PNCC_{drv}
PNCCdrv的串联。这是因为 I2P 模型预测的三平面是源表达式,MA 应该知道源/驱动表达式,以正确地将源表达式的 3D 表示映射到目标表达式。
图 5:预训练阶段使用的体积渲染器和朴素超分辨率模型的网络结构。
训练过程 我们在图3中说明了这一阶段的培训过程。除了从头开始学习运动适配器外,我们还从SEC 3.1.中预先训练的权重对I2P模型和VR/SR模块进行了微调。我们在大规模高保真说话人脸视频数据集上训练模型(朱等人,2022)。为了构建训练数据对,我们从视频中随机选择两帧,并将它们定义为源图像
I
s
r
c
I_{src}
Isrc和目标图像
I
t
g
t
I_{tgt}
Itgt。由于相机位姿与头部部分的运动高度相关,因此我们在这个阶段只考虑头部区域,因此所有图像都使用人脸解析模型进行预处理以提取头部段。将源头图像输入I2P模型,重构正则三平面
P
c
a
n
o
P_{cano}
Pcano,将
I
t
g
t
I_{tgt}
Itgt提取的
P
N
C
C
t
g
t
PNCC_{tgt}
PNCCtgt输入到运动适配器MA中,得到剩余运动差分平面
P
d
i
f
f
P_{diff}
Pdiff。然后我们可以得到Eq. 2之后的预测图像
I
t
g
t
′
I'_{tgt}
Itgt′ 。训练损失如下:
其中前两个项是 L1 损失和基于 VGG19/VGGFace (Simonyan & Zisserman, 2014; Parkhi et al., 2015) 感知损失;
L
D
u
a
l
A
d
v
L_{DualAdv }
LDualAdv 是 (Chan et al., 2022) 提出的双重对抗性损失,以提高图像保真度和一致性; LLap 是我们提出的相邻帧运动差异平面上的拉普拉斯损失,它充当正则化项以消除时间抖动。为了直观,给定帧 {t − 1, t, t + 1} 的 PNCC,我们期望帧 t 的 diff 平面
P
d
i
f
f
P_{diff}
Pdiff 是 t-1 和 t + 1 的平均平面
P
d
i
f
f
P_{diff}
Pdiff :
图 3:在第 3.2 节中训练运动适配器和微调 I2P 模型的过程。
3.3 头-躯干-背景超分辨率模型
使用所提出的 I2P 模型和运动适配器,我们可以在给定源图像和驾驶运动的情况下合成 3D 说话头。迈向真实说话的人视频的最后一步是合成躯干和背景片段。一个简单的解决方案是使用 NeRF 对躯干/背景以及头部进行建模。然而,对头部和其他区域应用相同的刚性变换会导致不满意的结果(例如,躯干和背景将与头部运动一起旋转)。为了生成真实的躯干和背景,我们提出了一个Head-Torso-Background超分辨率(HTB-SR)模型,分别对头部、躯干和背景片段进行建模,并将它们融合到高分辨率合成图像中。
网络结构 如附录B.3图6所示,HTB-SR模型由SR分支、躯干分支和背景分支组成。(1) SR分支与第3.2节中使用的香草SR模块共享类似的结构,因此我们可以从预训练的模型初始化其权重。(2)对于躯干分支,由于躯干的运动幅度较小且通常是平移的,我们建议使用类似于(Wang等人,2021)的基于二维翘角的渲染器对躯干部分进行建模,该渲染器具有计算效率,并且在各种场景中被证明具有鲁棒性(Siarohin等人,2019)。如图6(b)所示,躯干片段被预先设定好的关键点条件下的密集流扭曲,以预测目标图像的躯干特征图。注意,我们没有像(Wang et al., 2021)那样以无监督的方式学习隐式关键点,而是选择重建的3DMM面部顶点中的几个关键点作为躯干分支的驱动条件,这提高了预测躯干的时间稳定性。我们在附录B.3中提供了躯干分支的详细信息。(3)对于背景分支,最大的挑战是填充源图像中被前景(即人)占用的像素。为此,如图6(
c
c
c)所示,我们首先采用基于k近邻(KNN)的inpainting方法对源图像的背景段进行预处理。然后,我们使用浅卷积层从绘制的背景中提取纹理特征。关于后台分支的更多细节可以在附录B.4中找到。(4)对于将头部、躯干和背景三个部分的特征映射融合到合成图像中,我们发现直接按通道拼接会导致边界区域出现空心伪影和模糊结果(如图15所示)。我们假设这个问题是由这三个片段的特征映射之间的无限信息传播引起的,并采用α -混合式融合机制来处理这个问题。具体来说,我们首先获得头部面具
M
h
e
a
d
M_{head}
Mhead和躯干面具m
M
h
e
a
d
M_{head}
Mhead
M
t
o
r
s
o
M_{torso}
Mtorso,然后将三个片段与遮挡意识进行整合:
其中 F 表示提取的特征图,
M
p
e
r
s
o
n
M_{person}
Mperson 是按位或操作对
M
h
e
a
d
M_{head }
Mhead 和
M
t
o
r
s
o
M_{torso }
Mtorso 获得的人掩码。获得
M
h
e
a
d
M_{head }
Mhead 和
M
t
o
r
s
o
M_{torso }
Mtorso的详细信息可以在附录 B.5 中找到。
图6:3.3节HTB-SR模型的训练过程
图15:Eq. 5中介绍的alpha混合式头部-躯干-背景融合与或不混合的比较。我们使用矩形指出不使用alpha混合融合引起的伪影,并使用带虚线的矩形表明,使用alpha混合融合可以解决这些问题。
训练过程 如图 6所示,我们从 Sec 3.2 中加载预训练的 I2P 模型、运动适配器和体积渲染器。并将 SR 模块替换为我们的 HTB-SR 模型。在这个阶段只更新 HTB-SR 模型,所有其他参数都被冻结。训练目标类似于方程式3. 不同之处在于 GT 和预测图像是具有头部/躯干/背景部分的完整图像,而不仅仅是头部段。
为了支持音频驱动的应用程序,我们设计了一个通用且可控的音频到运动 (A2M) 模型,将音频转换为 PNCC 运动表示。受Ye等人(2023b)的启发,我们采用流增强变分自编码器(VAE)来学习准确和富有表现力的音频到运动映射。HuBERT (Hsu et al., 2021)被选为音频表示。至于预测的运动表示,我们不是直接预测PNCC,而是选择预测3DMM表达式参数,利用3DMM的强几何先验,显著提高了训练稳定性和音频唇精度。我们选择 BFM 2009 (Paysan et al., 2009) 作为 3DMM 模型。由于所有表达式基是正交的,给定相同的标识代码,视频中重建的3D人脸网格由表达式代码唯一确定。因此,表达式代码
L
E
x
p
R
e
c
o
n
L_{ExpRecon}
LExpRecon 上的 L2 误差对于训练 VAE 中的重建项是可行的。为了鼓励模型更好地重建面部地标(而不仅仅是3DMM参数),我们还引入了重构3DMM顶点
L
L
d
m
R
e
c
o
n
L_{LdmRecon}
LLdmRecon的468个关键点的L2重建误差作为辅助监督信号。通用音频到运动模型的训练损失如下:
其中
L
K
L
L_{KL}
LKL 是 VAE 的 KL 散度;
L
e
x
p
L
a
p
L_{expLap }
LexpLap 是预测表达式代码序列的拉普拉斯损失,以消除时间抖动。为了进一步提高可控性,我们将眨眼和嘴巴幅度作为 A2M 模型的辅助条件添加到 A2M 模型中,提高了生成视频的表现力。我们在附录 B.6 中提供了 A2M 模型的详细结构。
音频/视频驱动推理一旦完成四个阶段的训练过程,新身份不需要进一步的训练。在推理过程中,如图1所示,我们首先拟合源图像的3DMM参数,得到源身份代码
i
s
r
c
i_{src}
isrc。对于音频驱动场景,我们使用 A2M 模型获得与输入音频对应的表达式序列
e
d
r
v
e_{drv}
edrv;对于视频驱动的场景,我们在参考视频上拟合 3DMM 以获得
e
d
r
v
e_{drv}
edrv。然后,我们可以得到Eq. 1之后的驱动PNCC,并在Eq. 2和Eq. 5之后渲染最终图像。
4 实验
4.1实验设置
实施细节。我们在附录 C 中提供了详细的配置和超参数,并将在未来发布 https://real3Dportrait.github.io 上的源代码。
数据准备。为了预训练 I2P 模型,我们采用 3D 人脸生成模型 (Chan et al., 2022) 在训练期间在线生成多视图图像对。为了训练运动适配器和 HTB-SR 模型,我们使用高保真说话人脸视频数据集 CelebV-HQ (Zhu et al., 2022),约为 65 小时,包含 35,666 个视频剪辑,分辨率为 512×512,涉及 15,653 个身份。为了训练 A2M 模型,我们使用 VoxCeleb2 (Chung et al., 2018),这是一种低保真但 2,000 小时长的大规模唇读数据集,以保证音频到运动映射的泛化性。我们使用现成的地标提取器和人脸解析器(Lugaresi et al., 2019)对视频帧进行预处理,然后根据投影的地标误差拟合3DMM参数。我们从音频轨迹中提取 HuBERT 特征 (Hsu et al., 2021) 和音高轮廓。
比较基线。我们将Real3D-Potrait与几个视频/音频驱动的基线进行了比较:1)face -vid2vid (Wang et al., 2021),这是一种广泛使用的基于扭曲的视频驱动的说话人脸系统;2)OT-Avatar (Ma et al., 2023),一种最新的单镜头视频驱动方法,它利用预训练的3D GAN来获得3D通话视频;3) HiDe-NeRF (Li et al., 2023a),利用变形场进行人脸动画的最先进的单镜头3D说话人脸系统;4) MakeItTalk (Zhou et al., 2020)和PC-AVS (Zhou et al., 2021),这是两种一次音频驱动的说话脸方法,实现了良好的音频-唇同步;6) RAD-NeRF (Tang et al., 2022),一种基于nerf的方法,通过过度拟合目标人物视频来实现高逼真质量。请注意,将RAD-NeRF与其他一次性方法进行比较是不公平的,但我们将其与最先进的针对个人的方法进行比较,以显示我们离最先进的性能有多远。我们在表5中总结了所有测试基线的特征和我们的方法。
表5:不同说话脸生成方法的属性说明。
4.2定量评价
Real3D-Portrait支持视频和音频作为驱动资源。在本节中,我们分别评估了它以及视频驱动的再现和音频驱动的说话脸生成的基线。
视频驱动的相同/跨身份重演。在视频驱动(VD)场景中,从参考视频中获得驾驶运动条件和头部姿态。在同一性设置下,我们使用参考视频的第一帧作为源图像;否则,源图像具有不同的身份。对于相同身份设置,我们评估了PSNR、SSIM、Deng等人(2019a)的身份嵌入余弦相似度(CSIM)、基于(Deng等人,2019b)的平均表达距离(AED)和平均姿态距离(APD)、基于(Bulat & Tzimiropoulos, 2017)的平均关键点距离(AKD),以及再现和真实帧之间的LPIPS、L1和FID。至于交叉身份设置,由于没有基础真理,我们根据CSIM, AED, APD和FID指标评估结果。结果如表1所示。首先,我们的视频驱动Real3D-Portrait在L1、PSNR SSIM、LPIPS和FID方面表现最佳,因此获得了最佳的图像质量。其次,我们的Real3D-Portrait获得了最高的CSIM,这表明它保留了源图像的身份。最后,我们的方法获得了最佳的AED, APD和AKD,这表明我们的方法可以在给定输入条件的情况下准确地动画3D角色。
表1:视频驱动方法的相同/跨身份再现结果。最好的分数用粗体表示。
音频驱动的说话脸生成。在音频驱动(AD)设置中,从输入音频预测驱动运动条件。与跨身份再现类似,由于没有地面真实样本,我们使用CSIM来衡量身份保存,FID来衡量图像质量,AED和Sync评分(Prajwal et al., 2020)来衡量音频-唇部同步。结果如表2所示。与MakeItTalk和PC-AVS两种单镜头2D方法相比,我们的方法在身份相似度(CSIM)、图像质量(FID)和嘴唇同步(AED和Sync评分)方面表现出明显更好的效果。与RAD-NeRF相比,RAD-NeRF是一种针对个人的3D方法,在测试身份的3分钟长视频上过度拟合个人模型,除了实现更好的唇同步外,我们的方法还显着显示出相当的图像质量和身份保存,这要归功于训练有素的大型I2P模型和运动适配器。总之,实验表明,我们的一次性Real3D-Portrait优于其他一次性基线,并且可以接近SOTA个人特定的过拟合方法。
表2:音频驱动方法的结果。
4.3定性评价
为了对所有测试方法进行清晰的比较,我们在https://real3dportrait.github.io上提供了演示视频。我们还在附录D.3中提供了更多的可视化结果。具体来说,(1)我们在图9和图3中展示了我们的Real3DPortrait和其他VD/AD基线的总体定性比较。我们还提供了示例来表明:(2)PNCC如何在图10中动画3D化身;(3)我们实现了图11中大头姿势下的躯干自然运动;(4)我们在图12中支持可切换背景;(5)我们的通用音频到运动模型预测了图13中同步的嘴唇运动。
图9:与视频驱动基线的定性比较。我们建议读者参考https://real3dportrait.github.io/static/videos/ comparison_with_vd_baseline .mp4的演示视频,以便进行清晰的比较。在这个图中,我们可以看到(1)Face-vid2vid在大头姿势下退化;(2) OTAvatar不能产生保身份结果;(3) HiDe-NeRF产生不同姿势的纹理抖动伪影;(4)该方法能得到保持身份和真实的结果。
图10:PNCC如何动画3D头部的示意图。
图11:演示我们的方法可以在给定不同头部姿势的情况下生成真实的躯干部分。
图12:我们的方法支持可切换背景的演示。
图13:演示我们的通用音频-运动模型可以产生准确的嘴唇运动。
用户研究 我们进行用户研究以测试生成样本的质量。具体来说,我们从不同语言和10种不同身份的所有方法中抽取10个音频片段来生成视频,然后涉及20个参与者进行用户研究。我们采用平均意见评分(Mean Opinion score, MOS)评级协议进行评估,该协议从1到5进行缩放。以下(Chen et al., 2020)要求参与者从三个方面对视频进行评分:(1)身份保持;(2)视觉质量(包括图像保真度和时间平滑度);(3)唇同步。详细的用户研究设置见附录D.2。我们计算每种方法的平均分,结果如表3所示。我们有以下观察结果:1)Real3D-Portrait比以前的一次性方法具有更好的身份保护能力和视觉质量,并且与个人特定方法(RAD-NeRF)接近。2)在唇部同步方面,Real3D-Portrait具有强大的通用音动模型,明显优于针对个人的音频驱动方法RAD-NeRF。此外,在使用GT运动作为输入的视频驱动方法中,我们的方法实现了最好的嘴唇同步,显示了我们的运动适配器在给定输入运动的情况下准确动画角色的有效性。
表3:不同方法的MOS评分。误差柱为95%置信区间。
4.4消融研究
I2P和运动适配器 我们在I2P和运动适配器上测试了四种设置:(1)w/o预训练,即不在第3.1节的多视图图像数据集上预训练I2P模型;(2)w/o微调,在第3.2节视频数据集上进行训练时修复预训练的I2P模型;(3)小/大I2P模型尺寸,分别尝试40M和200M参数的I2P骨干网的不同尺度(注意默认设置为87M参数);(4) w/o Lap损耗,去掉式3.2中的拉普拉斯损耗。我们在表4中显示了结果。如附录D.4,第1行和图14所示。未经预训练处理,身份相似度、图像质量、表达准确率明显下降。此外,如第2行所示,为了实现低AED,微调也是必要的。我们怀疑这是因为预训练的I2P只学习用源表情重建3D角色,它需要进一步更新以支持给定目标表情的面部动画。此外,图像数据集和视频数据集之间存在域差,因此需要进行微调以获得更好的视觉质量。对于I2P模型比例,如第3行和第4行所示,我们发现87M的图像质量明显优于50M,而默认设置与200M之间的性能差异并不明显。在第5行,我们发现拉普拉斯损失对于改善运动条件头部动画是必要的。
表4:消融研究。
图14:3.1节介绍的I2P模型预训练过程与未预训练过程的对比。
HTB-SR 我们在HTB-SR模型上测试了三种设置:(1):w/ unsup。KP。,与Face-vid2vid类似,共同学习一个预测器,从预测的头部图像中提取无监督的驾驶关键点;(2) w/ concat,将公式5中提出的alpha-blend -style融合模块替换为头部/躯干/背景特征映射的朴素通道级拼接;(3) w/o inpaint,去除基于knn的背景图像的inpaint。结果如表4所示。在第一行中,我们可以观察到,由于额外的预测器网络的不稳定性,无监督的关键点导致视觉质量变差。在第2行中,我们发现,为了获得良好的身份保持和图像质量,并消除附录D.4。图15所示的伪影,需要进行alpha混合风格的融合。在第3行中,我们发现在绘制过程中去除背景会导致图像质量变差。
图15:采用和不采用公式5中引入的阿尔法混合式头-躯干-背景融合的对比。我们用矩形来指出不使用混合融合所产生的伪影,用带虚线的矩形来说明使用混合融合可以解决这些问题。
5 CONCLUSION
在本文中,我们提出了一个单镜头逼真的三维说话人像合成框架,即Real3D-Portrait。我们的方法通过设计一个预训练的大图像到平面模型和一个pnc条件运动适配器,同时实现精确的3D角色重建和动画。由于提出的HTB-SR模型,我们的方法也是第一个可以生成具有自然躯干运动和可切换背景的逼真视频的单镜头3D方法。此外,随着通用音频到运动模型的引入,我们的方法是第一个支持视频/音频驱动应用的工作。大量的实验表明,我们的方法从身份保持,视觉质量和音频唇同步的角度超越了最先进的基线。由于篇幅限制,我们在附录E中讨论了局限性和未来的工作。
附录
A 不同方法的比较
我们的方法也适用于 3D 重建和 3D 动画的想法,如 (Li et al., 2023a) 和 (Li et al., 2023b) 所做的那样,但通过提出一种图像到平面 (I2P) 预训练阶段并通过运动适配器 (MA)、PNCC 条件差分平面预测器来增强面部动画质量,从而实现准确的 3D 重建和良好的动画质量的目标。
我们的方法和以前的方法之间的差异是显而易见的:我们提出了一种预训练和微调框架,该框架同时实现了准确的 3D 重建和稳定的面部动画目标,而不是以前的端到端训练。具体来说,我们的Real3D-Portrait首先从3D GAN中提取3D先验知识,对图像到平面(I2P)模型进行预训练,然后在视频数据集上微调I2P模型与运动适配器(MA),以学习动态运动条件3D说话人脸渲染器;此外,我们是第一个考虑自然躯干运动和可切换背景的人;最后,我们是第一个实现音频和视频驱动应用的工作。为了更好地比较,我们在表 5 中列出了我们的方法的属性和几个最先进的基线。
表 5:不同说话人脸生成方法的属性说明。
我们与HiDe-NeRF和GOS-Avatar的区别 由于HiDe-NeRF (Li et al., 2023a)和GOSAvatar (Li et al., 2023b)是Real3D-Portrait中最相关的基线,属于基于预测器的一次性3D说话脸生成范式,我们讨论了我们与它们的区别如下。(1)我们提出在基线没有预训练的情况下,在图像多视图数据集上预训练I2P模型;(2)最重要的是,我们提出了一个运动适配器,它可以预测一个运动diffi -plane,直接将标准三平面从源表达式转化为目标表达式。相比之下,HiDe-NeRF学习一个变形场,这会导致糟糕的几何形状和糟糕的视觉质量(请参考https://real3dportrait.github.io/static/videos/Comparison_with_deformation.mp4以便更好地演示);而GOS-Avatar依赖于对源图像进行额外的表情中和,这需要额外的监督信号,并且可能导致源图像的信息丢失。(3)我们提出了一个头部-躯干-背景的范例,分别对头部/躯干/背景部分进行建模,从而实现真实的躯干运动和整体良好的视频自然度。相比之下,基线不考虑背景,而是将头部躯干作为一个整体进行建模。(4)我们提出了一个通用的音频到运动模型来支持音频驱动的任务,而基线只支持视频驱动的任务,这限制了它们在实际应用中的使用。
B 附加网络和训练细节
在本附录中,我们介绍了Real3D-Portrait的详细网络结构和训练细节。
B.1预训练图像到图像转换模型
我们执行多视图重建 (Trevithick et al., 2023) 任务来有效地学习一个前馈 I2P 模型,该模型将输入图像映射到 3D 三平面表示。具体来说,我们采用预训练的 EG3D 生成器从潜在空间产生各种合成人的三平面 P。通过体绘制技术,我们可以从给定相机参数 c 的任意视点渲染与三平面 P 对应的同一个人的图像。在训练过程中,为了准备训练数据对,我们使用EG3D生成器生成各种身份的三平面P,然后使用P条件体积渲染器从参考相机
c
r
e
f
c_{ref}
cref和多视角相机
c
m
v
c_{mv}
cmv合成该身份的两幅图像(
I
r
e
f
I_{ref}
Iref和
I
m
v
I_{mv}
Imv)。请注意,EG3D 要求相机从半径为 2.7 的循环中进行采样,这在说话人脸生成中是不可取的,我们希望头部和躯干之间的适当部分。因此,我们放宽了相机的固定半径约束,因此相机距离可以从 2.4 到 5.0 不等。如图 4 所示,我们的图像到图像模型以参考图像
I
r
e
f
I_{ref}
Iref作为输入来重建目标人的规范三平面 P,然后我们体积从
c
m
v
c_{mv}
cmv 的角度渲染重建的三平面以渲染多视图图像
I
ˉ
m
v
\bar{I}_{mv}
Iˉmv。直观地说,我们使用
I
ˉ
m
v
\bar{I}_{mv}
Iˉmv和
I
m
v
I_{mv}
Imv 之间的误差来为图像到平面模型提供监督信号。具体来说,训练目标如下:
图4:第3.1节中I2P模型的预训练过程。
B.2从3DMM系数定位PNCC
我们使用投影归一化坐标代码 (PNCC) (Zhu et al., 2016; Li et al., 2023a) 作为运动表示,它是一种仅与面部几何形状相关的外观不可知特征图像,作为变形 3D 人脸的输入条件。具体来说,PNCC 可以表述为:
其中 NCC 是 Zhu 等人提供的归一化坐标代码。 (2016) 并作为 Z-Buffer (Phong, 1998) 渲染过程中的颜色图;
V
e
r
t
e
x
3
D
‾
\overline{Vertex_{3D}}
Vertex3D 是重建 3DMM 人脸在规范空间中的顶点,由 80 维身份代码 i 和 64 维表达式代码 e 决定;
V
e
r
t
e
x
3
D
Vertex_{3D}
Vertex3D、
B
i
d
B_{id}
Bid 和
B
e
x
p
B_{exp}
Bexp是 3DMM 模型的模板形状、身份基础和表达式基础(Blanz & Vetter,1999)。这样,我们可以从3DMM身份/表达系数中获得PNCC。请注意,我们可以通过 3DMM 拟合从图像中提取身份和表达系数。在视频驱动的应用中,我们使用来自源图像的身份代码和来自驾驶视频的表情代码序列来构建驾驶PNCC;对于音频驱动的应用程序,所需的表达式代码序列由给定输入音频的通用音频到运动模型预测。
B.3基于翘曲的躯干分支
在我们的观察中,躯干部分旋转并不常见,其动态可以被视为与头部部分进行几乎联合翻译。这一观察促使我们使用基于 2D 翘曲的渲染器对躯干部分进行建模,该渲染器在计算上高效且在复杂场景中被证明是稳健的(Siarohin 等人,2019 年)。如图6(b)所示,我们的躯干分支可以被视为基于扭曲的Face-vid2vid (Wang et al., 2021)模型,该模型只渲染躯干段,并由预定义的关键点驱动(而不是从图像中预测的无监督关键点(Wang et al., 2021))。具体来说,首先,我们得到预定义的关键点为:
其中 Vertex3D 是从等式中定义的身份和表达式代码重建的 3DMM 顶点。 1,R 和 t 是提取的相机的旋转矩阵和平移,IdxKP 表示从 3DMM 顶点中选择 68 个面部关键点(Bulat & Tzimiropoulos,2017)。关键点被馈送到图6(b)所示的变形运动估计器(DME)中,以预测躯干段的变形像素坐标。然后,我们利用预测的变形场从源躯干外观特征图网格样本,得到扭曲的躯干特征图。基于整体翘曲的躯干渲染可以表示为:
其中 TAE、DME 和 DBD 是图 6(a) 中躯干外观编码器、密集运动估计器和基于变形的解码器。可以参考 (Wang et al., 2021) 了解有关这些模块的更多详细信息。
B.4基于knn绘制的背景分支
实现逼真背景的最大挑战是生成源图像中前景(即人物)所占用的像素。为此,我们首先采用基于k近邻的inpainting方法对源图像的背景段进行预处理。具体来说,对于每个前景像素,我们找到属于背景段的最近邻居,然后用它们最近的背景像素的颜色填充前景像素。一旦我们获得了一幅内嵌的背景图像,如图6©所示,我们将其输入到vgg风格的外观提取器中提取背景特征映射。请注意,由于我们单独对背景建模,因此我们支持在推理期间切换背景。通过之前的体绘制,我们得到了低分辨率的头部图像;利用躯干分支和背景分支,得到躯干和背景的特征映射。然后,我们使用超分辨率分支对这三个片段进行整合,生成512×512合成图像,如图6(a)所示。
图6:3.3节HTB-SR模型的训练过程
B.5定位头部和躯干遮挡掩码
在等式5中,我们建议通过头部/躯干/背景特征图的 alpha 混合风格融合来获得最终的说话肖像图像。在本节中,我们将介绍如何利用基于nerf的头部和翘曲的躯干渲染模块的性质来获得Eq. 5中所需的遮挡掩码
M
h
e
a
d
M_{head}
Mhead和
M
t
o
r
s
o
M_{torso}
Mtorso。
对于基于 NeRF 的头段,在 AD-NeRF (Guo et al., 2021) 之后,我们可以通过体绘制获得头掩码
M
h
e
a
d
M_{head}
Mhead:
其中 σ 是 NeRF 预测的密度,r 和 t 是体绘制技术的光线和光线行进深度。
t
n
t_{n}
tn 和
t
f
t_{f}
tf 表示光线的最近和最远点。
至于基于翘曲的躯干段,遵循Face-vid2vid (Wang et al., 2021),在设计如图6(a)所示的密集运动估计器时,除了预测密集运动流外,该网络还预测躯干
M
t
o
r
s
o
M_{torso}
Mtorso 的一维遮挡掩码。
B. 6音频到运动模型的详细结构
我们在图8中说明了A2M模型的详细网络结构。整个模型由两个生成模型组成:VAE作为主要结构,基于流的模型作为VAE的增强先验。我们使用 WavNet 作为编码器、解码器和基于流的先验的主干。3DMM表达式代码,一个64维向量,被选为要预测的运动表示,因此A2M模型的out维为T × 64,其中T为时间维度。在推理过程中,在给定预测的3DMM表达式代码的情况下,通过Z-Buffer算法获得PNCC很方便,如附录B.2所示。
图 8:A2M 模型的网络结构。虚线表示仅在 Sec3.4.中的训练阶段执行的过程。
C 详细的模型配置
C.1 模型配置
我们在表 6 中提供了有关模型配置的详细超参数设置。
表 6:模型配置
C.2 训练细节。
Real3D-Portrait 的所有训练过程都在 8 个 NVIDIA A100 GPU 上执行。至于渲染器,我们首先对 I2P 模型进行了 250,000 步的预训练,大约需要 72 小时;然后我们训练运动适配器 200,000 步,大约需要 60 小时;最后,我们训练 HTB-SR 模型 200,000 步,大约需要 30 小时。至于 A2M 模型,我们将其训练 100,000 步,大约需要 16 小时。
D 附加实验
D.1评估细节
在本节中,我们说明了收集数据进行评估的详细信息。
至于收集源图像和驾驶音频/视频,有三组评估数据:(1)对于 Same-Identity Reenactment,我们在 CelebV-HQ 的保留验证拆分中随机选择 100 个视频。(2) 对于 Cross-Identity Reenactment,我们使用先前选择的视频的第一帧来获得 100 个身份,然后使用随机选择的视频中的表情姿势序列来构建跨身份重演数据对。(3) 对于音频驱动场景,我们使用从互联网下载的 10 个域外图像(恰好是演示视频中显示的 10 个身份),并从不同语言中选择 10 个音频来形成数据对(因此每种方法有 100 个视频作为测试样本)。
至于选择相机姿势,由于头部姿势的预测不是我们的主要兴趣,我们设计了一种朴素的策略来从CelebV-HQ的GT视频中获取头部姿势序列。具体地说,(1)在相同的身份设置中,驾驶头部姿势与源图像的GT视频完全相同(源图像是测试视频的第一帧);(2)在跨身份设置中,从驾驶视频中提取驾驶头部姿势;(3)然后,在音频驱动设置中,最重要的是,我们首先估计源图像中的头部姿势,然后我们在CelebV-HQ中查询10个视频,其第一帧的头部姿势和源图像之间的距离最近。一旦对提供头部姿势的候选视频进行采样,我们随机选择其中一个来驱动源图像。
D.2用户研究设置
我们选择了十个音频/视频剪辑和十个身份,为每个音频/视频驱动方法构建 100 个说话肖像视频样本。我们涉及 20 名参与者对每个视频进行评分。我们从身份保存、视觉质量和音频-嘴唇同步方面进行MOS评估。每个测试人员被要求以 1-5 的李克特量表评估视频的主观分数。对于身份保存,我们告诉参与者“只关注源图像和视频中身份之间的相似性”;对于视觉质量,我们告诉参与者“关注整体视觉质量,包括相邻帧之间的图像保真度和平滑过渡”;对于音频-嘴唇同步,我们告诉参与者“只关注语义级别的音频-嘴唇同步,而忽略了视觉质量”。
D.3附加定性结果
整体比较。我们在图 9 中提供了与所有视频驱动基线的定性比较。
图 9:与视频驱动基线的定性比较。我们建议读者参考https://real3dportrait.github.io/static/videos/compare_with_VD_baselines.mp4 的演示视频进行清晰的比较。在该图中,我们可以看到(1)Face-vid2vid在大头部姿势下下降;(2) OTAvatar不能产生身份保持结果;(3) HiDe-NeRF在不同的姿势下产生纹理抖动伪影;(4)我们的方法可以产生身份保持和现实的结果。
PNCCC条件人脸动画。我们在图10中说明了PNCC如何动画3D化身。第一列是图像到平面模型的输入头部图像,第二列是运动适配器模型的输入驱动PNCC。第三列是通过体绘制产生的低分辨率渲染图像(128 × 128),第四列是对应的深度图像,有助于可视化建模的3D化身的3D几何形状。第五个列显示了训练运动适配器时使用的朴素 SR 模块处理的高分辨率渲染图像 (512 × 512)。
图 10:PNCC 如何动画 3D 头部的图示。
现实的躯干运动。如图11所示,在HTB-SR模型中,基于翘曲的躯干分支,我们的方法可以生成给定大而关键的头部姿势的真实躯干段。
图 11:演示我们的方法可以生成给定不同头部姿势的真实躯干段。
可切换的背景。如图12所示,在HTB-SR模型中,我们的方法在推理过程中支持切换背景。
图 12:证明我们的方法支持可切换的背景。
音频-嘴唇同步。如图13所示,使用通用的音频到运动模型,我们的方法在音频驱动场景中实现了音频-嘴唇同步。
图 13:演示我们的通用音频到运动模型可以生成准确的嘴唇运动。
D.4附加消融研究
在多视图图像数据集上预训练 I2P 模型如图 14 所示,在没有预训练阶段的情况下,在视频数据集上从头开始学习 I2P 模型会导致图像质量下降和面部动画不准确。相比之下,使用预训练的 I2P 模型,我们实现了高图像保真度、良好的身份保持能力和准确的人脸运动控制。
图 14:与第 3.1 节中介绍的 I2P 模型的预训练过程有或没有比较。
HTB-SR模型中的Alpha-Blending-Style Fusion我们在图15中比较了有和没有提出的头部-躯干-背景阿尔法混合融合的结果。(1)如第一张图片所示,在没有阿尔法混合的情况下,即直接连接头部/躯干/背景的特征图会导致头发区域的空心伪影。我们怀疑这是由于这三个语义特征图之间不断变化的不受限制的空间信息造成的。例如,在这种情况下,来自背景图像的特征会覆盖头部图像的信息。相比之下,通过使用人脸掩码,我们可以消除头部区域内的背景信息,这解决了空心伪影(如图 15 中的第二张图像所示)。(2) 此外,如第三幅图像所示,在没有掩模抑制空间特征融合的情况下,头部-躯干边界区域(用红色矩形标记)似乎不切实际和模糊。相比之下,通过所提出的 alpha 混合融合技术,我们可以在边界区域生成真实且清晰的结果。
图15:Eq. 5中介绍的alpha混合式头部-躯干-背景融合与或不混合的比较。我们使用矩形指出不使用alpha混合融合引起的伪影,并使用带虚线的矩形表明,使用alpha混合融合可以解决这些问题。
D.5与最近2D基线的附加定量比较
我们还与几个显着的 2D 基线进行了比较,例如 DaGAN (Hong et al., 2022a)、TPS (Zhao & Zhang, 2022)、DPE (Pang et al., 2023)、LIA (Wang et al., 2022) 和 MCNet (Hong & Xu, 2023),并在 https://real3Dportrait.github.io/static/videos/Comparison_with_5_additive_VD_baselines.mp4 中提供了一个定性比较。我们还在表 7 中提供了定量比较。我们可以看到我们的方法在 CSIM、FID、AED 和 APD 方面取得了最好的性能。
表 7:与 2D VD 基线的其他比较。
E 限制和未来的工作
首先,由于训练数据中没有较大的图像,我们的方法无法在侧视图等大头部姿势下生成图像。我们计划通过引入更大的数据集和改进三平面 3D 表示来解决这个问题。其次,通过引入更多的高保真训练数据和更精心设计的网络,可以提高图像质量。第三,为了获得更好的身份保存和视觉质量,需要少量上下文学习 3D 说话人脸方法。最后,虽然我们已经实现了通常高质量的真实说话肖像结果,但其中一个限制是,当说话的人做大姿势运动时,内画的背景图像可能会泄露不自然的。我们相信引入的基于 KNN 的背景修复方法是责备。由于生成逼真的背景对于确保最终视频的真实性非常重要,我们计划使用更先进的基于神经网络的系统(例如 LAMA)升级背景修复方法(Suvorov 等人,2021 年)。另一种可能是以端到端的方式学习HTB-SR模型中的背景修复模块。我们将此留作未来的工作。
代码调试
Project Page:https://real3dportrait.github.io/
Github:https://github.com/yerfor/Real3DPortrait
Paper:https://arxiv.org/abs/2401.08503
1. 下载github项目
git clone https://github.com/yerfor/Real3DPortrait.git
cd Real3DPortrait
2. 配置环境
创建Conda环境
conda create -n real3dportrait python=3.9
conda activate real3dportrait
安装包(推荐torch2.0.1+cuda11.7)
1.官方做法如下:
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
# 从源代码安装,需要比较长的时间 (如果遇到各种time-out问题,建议使用代理)
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
# 利用conda安装pytorch (For fast installation, Linux only)
# MMCV安装
pip install cython
pip install openmim==0.3.9
mim install mmcv==2.1.0 # 使用mim来加速mmcv安装
# 其他依赖项
pip install -r docs/prepare_env/requirements.txt -v
2.我的做法((发现pytorch-lightning版本不对,安装1.8.6版本的pytorch-lightning和对应pytorch)
pip install pytorch-lightning==1.6.5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 下载预训练权重
(1)3DMM BFM Model
下载预训练的Real3D-Portrait:Google Drive 或 BaiduYun Disk 提取码: 6x4f
下载完成后,放置全部的文件到checkpoints里并解压,文件结构如下:
checkpoints/
├── 240210_real3dportrait_orig
│ ├── audio2secc_vae
│ │ ├── config.yaml
│ │ └── model_ckpt_steps_400000.ckpt
│ └── secc2plane_torso_orig
│ ├── config.yaml
│ └── model_ckpt_steps_100000.ckpt
└── pretrained_ckpts
└── mit_b0.pth
4. 推断
(1)Gradio WebUI推理
启动Gradio WebUI,按照提示上传素材,点击Generate按钮即可推理:
python inference/app_real3dportrait.py
如果出现以下错误:
PermissionError: [Errno 13] Permission denied: '/tmp/gradio/f927f6afee889875e178daaf34a6d2116f0e196b'
需要在app_real3dportrait.py
中配置临时文件的位置,在开头加上以下代码:
os.environ['GRADIO_TEMP_DIR'] = './tmp'
(1)命令行推理
音频驱动场景下,需要至少提供source image与driving audio,推理指令:
python inference/real3d_infer.py \
--src_img <PATH_TO_SOURCE_IMAGE> \
--drv_aud <PATH_TO_AUDIO> \
--drv_pose <PATH_TO_POSE_VIDEO, OPTIONAL> \
--bg_img <PATH_TO_BACKGROUND_IMAGE, OPTIONAL> \
--out_name <PATH_TO_OUTPUT_VIDEO, OPTIONAL>
视频驱动场景下,需要至少提供source image与driving expression video(作为drv_aud参数),推理指令::
python inference/real3d_infer.py \
--src_img <PATH_TO_SOURCE_IMAGE> \
--drv_aud <PATH_TO_EXP_VIDEO> \
--drv_pose <PATH_TO_POSE_VIDEO, OPTIONAL> \
--bg_img <PATH_TO_BACKGROUND_IMAGE, OPTIONAL> \
--out_name <PATH_TO_OUTPUT_VIDEO, OPTIONAL>
一些可选参数注释:
--drv_pose 指定时提供了运动pose信息,不指定则为静态运动
--bg_img 指定时提供了背景信息,不指定则为source image提取的背景
--mouth_amp 嘴部张幅参数,值越大张幅越大
--map_to_init_pose 值为True时,首帧的pose将被映射到source pose,后续帧也作相同变换
--temperature 代表audio2motion的采样温度,值越大结果越多样,但同时精确度越低
--out_name 不指定时,结果将保存在infer_out/tmp/中
--out_mode 值为final时,只输出说话人视频;值为concat_debug时,同时输出一些可视化的中间结果
指令示例:
python inference/real3d_infer.py \
--src_img data/raw/examples/Macron.png \
--drv_aud data/raw/examples/Obama_5s.wav \
--drv_pose data/raw/examples/May_5s.mp4 \
--bg_img data/raw/examples/bg.png \
--out_name output.mp4 \
--out_mode concat_debug