LivePortrait——生成可拼接和重定向控制的高效肖像动画翻译
文章目录
- 原文翻译
- Abstract
- 1. Introduction
- 2. Related Work
- 2.1. Non-diffusion-based Portrait Animation
- 2.2. Diffusion-based Portrait Animation
- 3. Methodology
- 3.1. Preliminary of Face Vid2vid
- 3.2. Stage I: Base Model Training
- 3.3. Stage II: Stitching and Retargeting
- 3.4. Inference
- 4. Experiments
- 4.1. Self-reenactmen(自重演)
- 4.2. Cross-reenactment(交叉重演)
- 4.3. Ablation Study and Analysis
- 5. Conclusion
- 附录
- A.基准指标细节
- B. Qualitative Results on Multi-person Portrait
- C. Audio-driven Portrait Animation
- D. Generalization to Animals
- E. Portrait Video Editing
原文翻译
LivePortrait:具有可拼接和重定向控制的高效肖像动画
github:https://liveportrait.github.io
paper:https://arxiv.org/pdf/2407.03168
Abstract
肖像动画旨在从单个源图像合成类似生命的视频,将其用作外观参考,运动(即面部表情和头部姿势)源自驾驶视频、音频、文本或生成。我们没有遵循主流的基于扩散的方法,而是探索和扩展基于隐式关键点的框架的潜力,有效地平衡了计算效率和可控性。在此基础上,我们开发了一个名为 LivePortrait 的视频流驱动肖像动画框架,重点关注实际使用的更好泛化、可控性和效率。为了提高生成质量和泛化能力,我们将训练数据扩展到大约 6900 万个高质量帧,采用混合图像视频训练策略,升级网络架构,设计更好的运动转换和优化目标。此外,我们发现紧凑的隐式关键点可以有效地表示一种混合形状,并精心设计了一个拼接和两个重定向模块,该模块利用较小的MLP,计算开销可以忽略不计,以增强可控性。实验结果表明,与基于扩散的方法相比,我们的框架的有效性。在带有 PyTorch 的 RTX 4090 GPU 上,生成速度显着达到 12.8 毫秒。推理代码和模型可在 https://github.com/KwaiVGI/LivePortrait 获得。
图1. 我们的模型的定性肖像动画结果。给定一个静态人像图像作为输入,我们的模型可以生动地对其进行动画化,确保无缝拼接并提供对眼睛和嘴唇运动的精确控制。
1. Introduction
如今,人们经常使用智能手机或其他记录设备来捕获静态肖像,以记录他们宝贵的时刻。iPhone 上的 Live Photos1 特征可以通过记录拍摄图片前后 1.5 秒的时间来为生命带来静态肖像,这可以通过视频记录的形式来实现。然而,基于GANs[1]和Diffusions[2 -4]等最新进展,各种人像动画方法[5 - 13]使静态肖像动画为动态肖像成为可能,而不依赖于特定的记录设备。
在本文中,我们的目标是动画静态人像图像,使其逼真且富有表现力,同时也追求较高的推理效率和精确的可控性。尽管基于扩散的肖像动画方法[12-14]在质量方面取得了令人印象深刻的成果,但它们通常计算成本很高,缺乏精确的可控性,例如拼接控制2。相反,我们广泛地探索了基于隐式关键点的视频驱动框架[5,11],并扩展了它们的潜力,以有效地平衡泛化能力、计算效率和可控性。
具体来说,我们首先通过将训练数据扩展到大约 6900 万个高质量的肖像图像来增强强大的基于隐式关键点的方法 [5],引入了一种混合图像视频训练策略,使用可扩展的运动转换升级网络架构,设计地标引导的隐式关键点优化和几个级联损失项。此外,我们发现紧凑的隐式关键点可以有效地表示一种隐式混合形状,并精心设计了一个拼接模块和两个重定向模块,该模块利用一个小的MLP并添加可以忽略的计算开销,以增强可控性,如拼接控制。我们的核心贡献可以总结如下:(i)开发一个可靠的基于隐式关键点的视频驱动的肖像动画框架,显着提高了生成质量和泛化能力,以及(ii)设计一个先进的拼接模块和两个重定向模块以获得更好的可控性,计算开销可以忽略不计。大量的实验结果证明了我们的框架的有效性,即使与重扩散的方法相比。此外,我们的模型可以使用 PyTorch 进行推理在 RTX 4090 GPU 上以 12.8 毫秒生成肖像动画。
2. Related Work
最近的视频驱动人像动画方法可以分为基于非扩散的方法和基于扩散的方法,如表1中所示。
表1 视频驱动人像动画方法总结
2.1. Non-diffusion-based Portrait Animation
对于基于非扩散的模型,基于隐式关键点的方法采用隐式关键点作为中间运动表示,并通过光流将源肖像与驱动图像扭曲。FOMM[11]在每个关键点附近执行一阶泰勒展开,并使用局部仿射变换逼近每个关键点邻域内的运动。MRAA[15]使用基于pca的运动估计表示关节运动。Face vid2vid[5]通过引入3D隐式关键点表示扩展了FOMM,实现了自由视图人像动画。IWA[10]改进了基于跨模态注意的翘曲机制,可以扩展到使用多个源图像。为了更灵活地估计光流,更好地适用于大规模运动,TPSM[7]使用非线性薄板样条变换来表示更复杂的运动。同时,DaGAN[6]利用密集深度图来估计捕获关键驾驶运动的隐式关键点。MCNet[8]设计了一个身份表示条件记忆补偿网络来解决复杂驾驶运动引起的模糊生成问题。
一些作品[18]-20]采用了预定义的运动表示,如3DMM混合形状[21]。另一项工作 [22, 23] 提出从头开始学习潜在表达表示。MegaPortrait[22]使用中分辨率训练图像以外的高分辨率图像将动画分辨率升级到百万像素。EMOPortraits[23]采用富表情的训练视频数据集和表情增强损失来表达强烈的运动。
2.2. Diffusion-based Portrait Animation
扩散模型[2-4]通过迭代去除噪声从高斯噪声合成所需的数据样本。[2] 提出了潜在扩散模型 (LDM),并将训练和推理过程转移到压缩的潜在空间以进行高效计算。ldm已广泛应用于全身舞蹈生成[24 -28]、音频驱动的肖像动画[12,29 -34]和视频驱动的肖像动画[9,12,13,16]的许多并行工作。
FADM[9]是第一个基于扩散的人像动画方法。它通过预训练的基于隐式关键点的模型获得了粗略的动画结果,然后在扩散模型的 3DMM 的指导下得到最终的动画。人脸适配器[16]使用身份适配器来增强源肖像的身份保存和空间条件生成器来生成显式空间条件,即关键点和前景掩码,作为中间运动表示。一些工作[12,13,17]采用了类似于AnimateAnyone[24]的相互自我注意和插入时间注意体系结构,以实现更好的图像质量和外观保存。AniPortrait[12]使用显式空间条件,即关键点,作为中间运动表示。X-Portrait [13] 提出直接使用原始驾驶视频对肖像进行动画处理,而不是使用中间运动表示。采用基于隐式关键点的方法[5]进行跨身份训练来实现这一点。MegActor[17]还用原始驾驶视频动画源肖像。它采用现有的换脸和风格化框架来获得跨身份训练对,并对背景外观进行编码,以提高动画的稳定性。
3. Methodology
本节详细介绍了我们的方法。我们首先简要回顾了基于视频的肖像动画框架face vid2vid[5],并介绍了我们的显著增强,旨在提高动画的泛化能力和表现力。然后,我们展示了我们的精心设计的拼接和重定向模块,这些模块提供了所需的可控性,计算开销可以忽略不计。最后,我们详细介绍了推理管道。
3.1. Preliminary of Face Vid2vid
Face vid2vid[5]是一个开创性的框架,用于动画静止肖像,使用从驾驶视频序列中提取的运动特征。原始框架由外观特征提取器F、规范隐式关键点检测器L、头部姿态估计网络H、表情变形估计网络∆、翘曲场估计器W和生成器G组成。F 将源图像 s 映射到 3D 外观特征体积 f s f_{s} fs。源3D关键点 x s x_{s} xs和驱动3D关键点 x d x_{d} xd变换如下:
其中 x s x_{s} xs和 x d x_{d} xd分别为源关键点和驱动三维隐式关键点, x c , s ∈ R K × 3 x_{c,s}∈R^{K×3} xc,s∈RK×3为源图像的规范关键点。源位姿和驱动位姿为 R s R_{s} Rs和 R d ∈ R 3 × 3 R_{d}∈R^{3×3} Rd∈R3×3,表达式变形为 δ s δ_{s} δs和 δ d ∈ R K × 3 δ_{d}∈R^{K×3} δd∈RK×3,平移为 t s t_{s} ts和 t d ∈ R 3 t_{d}∈R^{3} td∈R3。接下来,W使用隐式关键点表示 x s x_{s} xs和 x d x_{d} xd生成一个翘曲场,并利用该流场扭曲源特征体积 f s f_{s} fs。随后,扭曲的特征通过解码器生成器 G,将它们转换为图像空间并产生目标图像。
3.2. Stage I: Base Model Training
我们选择face vid2vid[5]作为我们的基础模型,并引入了一系列显著的增强。这些包括高质量的数据管理、混合图像和视频训练策略、升级的网络架构、可扩展运动转换、地标引导的隐式关键点优化和级联损失项。这些进步显着提高了动画的表达能力和模型的泛化能力。第一个训练阶段的管道如图2所示。
图 2. 第一阶段的管道:基础模型训练。对外观和运动提取器 F 和 M、翘曲模块 W 和解码器 G 进行了优化。在这个阶段,模型从头开始训练。详情请参阅第3.2节。
高质量的数据管理。我们利用公共视频数据集,如Voxceleb[35]、MEAD[36]和RAVDESS[37],以及样式图像数据集AAHQ[38]。此外,我们收集了一个大型的4K分辨率肖像视频语料库,其中包含各种姿势和表情、200小时的说话头视频,并利用私有LightStage[39,40]数据集,以及几个风格的肖像视频和图像。我们将长视频分成少于 30 秒的片段,并确保每个片段仅包含一个人使用人脸跟踪和识别。为了保持训练数据的质量,我们使用 KVQ [41] 过滤掉低质量的视频剪辑。最后,我们的训练数据由大约 18.9K 身份和 60K 静态风格肖像的 6900M 视频帧(过滤前 92M)组成。
混合图像和视频训练。仅在逼真的肖像视频上训练的模型在人类肖像上表现良好,但对风格肖像的泛化能力很差,例如动漫。风格肖像视频稀缺,我们只从少于 100 个身份中收集了大约 1.3K 剪辑。相比之下,高质量的风格肖像图像更加丰富;我们收集了大约 60K 图像,每张图像代表一个独特的身份,提供不同的身份信息。为了利用这两种数据类型,我们将单个图像视为单帧视频剪辑,并在图像和视频上训练模型。这种混合训练提高了模型的泛化能力。
升级的网络架构。我们将原始的正则隐式关键点检测器L、头部姿势估计网络H和表情变形估计网络∆统一为一个模型M,ConvNeXt-V2-Tiny[42]作为骨干,直接预测输入图像的规范关键点、头部姿势和表情变形。此外,我们遵循[43]使用SPADE解码器[44]作为生成器G,这比人脸vid2vid[5]中的原始解码器更强大。扭曲的特征卷 f s f_{s} fs被精心设计到SPADE解码器中,其中特征卷的每个通道作为一个语义图来生成动画图像。为了提高效率,我们插入PixelShuffle[45]层作为G的最后一层,将分辨率从256×256上采样到512×512。
可扩展的运动转换。公式1中的原始隐式关键点变换忽略比例因子,倾向于将缩放合并到表达式变形中并增加训练难度。为了解决这个问题,我们在运动变换中引入了比例因子,更新后的变换 τ 表示为:
其中 s s s_{s} ss 和 s d s_{d} sd 分别是源输入和驱动输入的比例因子。请注意,变换与尺度正交投影不同,其公式为 x = s ⋅ ( ( x c + δ ) R ) + t x = s · ((x_{c} + δ)R)+ t x=s⋅((xc+δ)R)+t。我们发现尺度正交投影导致学习表达式 δ 过于灵活,导致在不同身份驾驶时纹理闪烁。因此,这种转换可以看作是灵活性和可驾驶性之间的权衡。
landmark引导的隐式关键点优化。原始人脸vid2vid[5,43]似乎缺乏生动地驱动面部表情的能力,如眨眼和眼球运动。特别是,生成的肖像的眼睛凝视绑定到头部姿势并保持与之平行,这是我们复制实验中观察到的限制。我们将这些限制归因于以无监督的方式学习微妙的面部表情(如眼球运动)的难度。为了解决这个问题,我们引入了捕获微表情的 2D landmark,使用它们作为指导来优化隐式点的学习。landmark引导损失 L g u i d e L_{guide} Lguide公式如下:
其中 N 是所选landmark的数量, l i l_{i} li 是第 i 个landmark, x s , i , : 2 x_{s,i,:2} xs,i,:2 和 x d , i , : 2 x_{d,i,:2} xd,i,:2 分别表示相应隐式关键点的前两个维度,在 [46] 之后采用 Wing loss。在我们的实验中,N 设置为 10,所选地标取自眼睛和嘴唇。
级联损失项。我们遵循人脸vid2vid[5]使用隐式关键点等方差损失 L E L_{E} LE、关键点先验损失 L L L_{L} LL、头部姿势损失 L H L_{H} LH和变形先验损失 L ∆ L_{∆} L∆。为了进一步提高纹理质量,我们在输入图像的全局区域上应用感知和 GAN 损失,以及人脸和嘴唇局部区域,表示为级联感知损失 L P , c a s c a d e L_{P,cascade} LP,cascade和级联 GAN 损失 L G , c a s c a d e L_{G,cascade} LG,cascade。 L G , c a s c a d e L_{G,cascade} LG,cascade由 L G A N , g l o b a l L_{GAN,global} LGAN,global、 L G A N , f a c e L_{GAN,face} LGAN,face 和 L G A N , l i p L_{GAN,lip} LGAN,lip 组成,它们依赖于从头开始的相应鉴别器 D g l o b a l D_{global} Dglobal、 D f a c e D_{face} Dface 和 D l i p D_{lip} Dlip 训练。人脸和嘴唇区域由 2D 语义地标定义。我们还采用人脸id[47]损失 L f a c e i d L_{faceid} Lfaceid来保留源图像的身份。第一阶段的总体训练目标表述为:
在第一阶段,模型是完全从头开始训练的。
3.3. Stage II: Stitching and Retargeting
我们假设紧凑的隐式关键点可以作为一种隐式混合形状。与姿势不同,我们不能显式地控制表达式,而是需要这些隐式混合形状的组合来实现所需的效果。令人惊讶的是,我们发现这种组合仅使用一个小的 MLP 网络可以很好地学习,计算开销可以忽略不计。考虑到实际要求,我们设计了一个拼接模块、眼睛重定向模块和唇重定向模块。拼接模块将动画肖像粘贴到原始图像空间中,没有像素错位,例如肩部区域。这使得同时处理更大的图像大小和多个人脸的动画成为可能。眼睛重定向模块旨在解决跨id重现过程中不完全闭眼的问题,特别是当小眼睛的人驾驶眼睛较大的人时。嘴唇重定向模块的设计类似于眼睛重定向模块,还可以通过确保嘴唇处于封闭状态来规范化输入,这有助于更好的动画驾驶。第二个训练阶段的管道如图3所示。
图3. 第二阶段的管道:拼接和重定向模块训练。在第一阶段训练基础模型后,我们冻结外观和运动提取器、扭曲模块和解码器。在第二阶段只优化了拼接模块和重定向模块。详情请参阅第3.3节。
缝合模块。在训练过程中,拼接模块S接收源并驱动隐式关键点 x s x_{s} xs和 x d x_{d} xd作为输入,并估计驱动关键点的变形偏移量 ∆ s t ∈ R K × 3 ∆_{st}∈R^{K×3} ∆st∈RK×3。遵循方程式2,源隐式关键点计算为 x s = s s ⋅ ( x c , s R s + δ s ) + t s x_{s} = s_{s}·(x_{c,s}R_{s} + δ_{s}) + t_{s} xs=ss⋅(xc,sRs+δs)+ts,驱动隐式关键点 x d x_{d} xd使用另一个人的运动计算为 x d = s d ⋅ ( x c , s R d + δ d ) + t d x_{d} = s_{d}·(x_{c,s}R_{d} + δ_{d}) + t_{d} xd=sd⋅(xc,sRd+δd)+td。请注意, x d x_{d} xd的转换与第一个训练阶段不同,因为我们故意使用cross-id 而不是same-id 运动来增加训练难度,旨在更好地泛化拼接。然后, ∆ s t = S ( x s , x d ) ∆_{st} = S(x_{s}, x_{d}) ∆st=S(xs,xd),将驱动关键点更新为 x d , s t ′ = x d + ∆ s t x '_{d,st} = x_{d} +∆_{st} xd,st′=xd+∆st,预测图像 I p , s t = D ( W ( f s ; x s , x d , s t ′ ) ) I_{p,st} = D(W(f_{s};x_{s}, x '_{d,st})) Ip,st=D(W(fs;xs,xd,st′))。我们将自重建图像表示为 I p , r e c o n = D ( W ( f s ; x s , x s ) ) I_{p,recon} = D(W(f_{s}; x_{s}, x_{s})) Ip,recon=D(W(fs;xs,xs))。最后,拼接目标 L s t L_{st} Lst 表示为:
其中 L s t , c o n s t L_{st,const} Lst,const 是预测肩部区域和自重建图像之间的一致性像素损失, M s t M^{st} Mst 是一个掩码算子,它从源图像 I s I_{s} Is 中屏蔽非肩部区域,如图 3 所示。 ∥ Δ s t ∥ 1 ∥Δ_{st}∥_{1} ∥Δst∥1 是拼接变形偏移的 L1 范数正则化, w r e g s t w^{st}_{reg} wregst 是超参数。
眼睛和嘴唇重定向模块。眼睛重定向模块 R e y e s R_{eyes} Reyes 接收源隐式关键点 x s x_{s} xs、源眼睛开放条件元组 c s c_{s} cs、眼睛和随机驱动眼睛开放标量 c d , e y e s ∈ [ 0 , 0.8 ] c_{d,eyes} ∈ [0, 0.8] cd,eyes∈[0,0.8]作为输入,估计驱动关键点: Δ e y e s = R e y e s ( x s ; c s , e y e s , c d , e y e s ) Δ_{eyes} = R_{eyes}(x_{s}; c_{s,eyes}, c_{d,eyes}) Δeyes=Reyes(xs;cs,eyes,cd,eyes)的变形偏移 Δ e y e s ∈ R K × 3 Δ_{eyes} ∈ R^{K×3} Δeyes∈RK×3。睁眼条件表示睁眼的比例:值越大,眼睛越开放。类似地,嘴唇重定向模块 R l i p R_{lip} Rlip 还接收源隐式关键点 x 和源唇开放条件标量 c s , l i p c_{s,lip} cs,lip 和随机驱动唇开放标量 c d c_{d} cd 作为输入,估计驱动关键点: Δ l i p = R l i p ( x s ; c s , l i p , c d , l i p ) Δ_{lip} =R_{lip}(x_{s}; c_{s,lip}, c_{d,lip}) Δlip=Rlip(xs;cs,lip,cd,lip)的变形偏移 Δ l i p ∈ R K × 3 Δ_{lip} ∈ R^{K×3} Δlip∈RK×3。然后,将驱动关键点更新为 x d , e y e s ′ = x s + ∆ e y e s x '_{d,eyes} = x_{s} +∆_{eyes} xd,eyes′=xs+∆eyes和 x d , l i p ′ = x s + ∆ l i p x '_{d,lip} = x_{s} +∆_{lip} xd,lip′=xs+∆lip,预测图像为 I p , e y e s = D ( W ( f s ; x s , x d , e y e s ′ ) I_{p,eyes} = D(W(f_{s};x_{s}, x '_{d,eyes}) Ip,eyes=D(W(fs;xs,xd,eyes′)和 I p , l i p = D ( W ( f s ; x s , x d , l i p ′ ) ) I_{p,lip} = D(W(f_{s};x_{s}, x '_{d,lip})) Ip,lip=D(W(fs;xs,xd,lip′))。最后,眼睛和嘴唇重定向模块的训练目标公式如下:
其中 M e y e s M_{eyes} Meyes和 M l i p M_{lip} Mlip分别是掩码算子,分别从源图像 I s I_{s} Is 中屏蔽眼睛和嘴唇区域, c s , e y e s p c^{p}_{s,eyes} cs,eyesp 和 c s , l i p p c^{p}_{s,lip} cs,lipp 分别是来自 I p , e y e s I_{p,eyes} Ip,eyes、 I p , l i p I_{p,lip} Ip,lip的条件元组, w c o n d e y e s w^{eyes}_{cond} wcondeyes、 w r e g e y e s w^{eyes}_{reg} wregeyes 、 w c o n d l i p w^{lip}_{cond} wcondlip和 w r e g l i p w^{lip}_{reg} wreglip 是超参数。
3.4. Inference
在推理阶段,我们首先从源图像 I s I_{s} Is中提取特征体积 f s = F ( I s ) f_{s} = F(I_{s}) fs=F(Is),即规范关键点 x c , s = M ( I s ) x_{c,s} = M(I_{s}) xc,s=M(Is)。给定一个驾驶视频序列 I d , i ∣ i = 0 , . . . , N − 1 {I_{d,i}|i = 0,..., N − 1} Id,i∣i=0,...,N−1,我们从每一帧 s d , i , δ d , i , t d , i , R d , i = M ( I d , i ) s_{d,i}, δ_{d,i}, t_{d,i}, R_{d,i} = M(I_{d},i) sd,i,δd,i,td,i,Rd,i=M(Id,i) 和条件 c d , e y e s , i c_{d,eyes,i} cd,eyes,i 和 c d , l i p , i c_{d,lip,i} cd,lip,i 中提取运动。接下来将源关键点和驱动隐式关键点变换如下:
然后,影响过程可以描述为算法 1,其中 α s t α_{st} αst、 α e y e s α_{eyes} αeyes 和 α l i p α_{lip} αlip 是可以采用 0 或 1 值的指标变量。最终预测图像 I p , i I_{p,i} Ip,i 由扭曲网络 W 和解码器 D 生成。请注意,眼睛和嘴唇的变形偏移量彼此解耦,使它们能够线性添加到驾驶关键点中。
4. Experiments
我们首先概述了实验中使用的实现细节、基线和基准。然后,我们展示了自我重演和跨重演的实验结果,然后进行消融研究以验证所提出的拼接和重定向模块的有效性。
实施细节。在第一个训练阶段,我们的模型使用 8 个 NVIDIA A100 GPU 从头开始训练大约 10 天。在第二个训练阶段,我们只训练拼接和重定向模块,同时保持其他参数冻结,大约需要 2 天。输入图像对齐并裁剪为256×256的分辨率,批大小设置为104。输出分辨率为512×512。采用Adam优化器,学习率为 2 × 1 0 − 4 2×10^{−4} 2×10−4,β1=0.5,β2=0.999。拼接模块由四层MLP组成,层大小为[126,128,64,65]。眼睛重定向模块由一个六层 MLP 组成,层大小为 [66, 256, 128, 64, 63]。唇重定向模块由四层 MLP 组成,层大小为 [65, 128, 128, 64, 63]。拼接和重定向模块的计算预算可以忽略不计。
基线。我们将我们的模型与几种基于非扩散的方法进行比较,包括FOMM[11]、Face Vid2vid[5]、DaGAN[6]、MCNet[8]和TPSM[7],以及基于扩散的模型,如FADM[9]和AniPortrait[12]。对于人脸vid2vid[5],我们采用了[43]的实现,而对于其他方法,我们使用官方实现。
基准。为了测量人像动画结果的泛化质量和运动精度,我们采用峰值信噪比(PSNR)、结构相似性指数(SSIM)[48]、学习感知图像补丁相似度(LPIPS)[49]、L1距离、FID[50]、平均表情距离(AED)[11]、平均姿势距离(APD)[11]和眼球方向的平均角度误差(MAE)。对于自我重演,我们的模型在 TalkingHead-1KH 数据集 [5] 和 VFHQ 数据集 [51] 的官方测试拆分上进行评估,该数据集由 35 和 50 个视频组成。对于交叉重演,从 FFHQ 数据集 [52] 获得的前 50 张图像用作源肖像。这些指标的详细描述在附录 A 中提供。
4.1. Self-reenactmen(自重演)
对于每个测试视频序列,我们使用第一帧作为源输入,并使用整个帧作为驱动图像对其进行动画处理,这也是基本事实。为了比较,动画肖像和地面真实图像被下采样到256×256的分辨率,以保持与基线的一致性。定性和定量比较详述如下。
定性结果。定性比较如图4所示。我们的结果是使用第一阶段基础模型在原始图像空间中粘贴的后图像。这些案例表明,我们的模型可以忠实地从驾驶图像中转移运动,包括嘴唇运动和眼睛凝视,同时保留源肖像的外观细节。图 4 中的第四个案例表明,即使姿势大,我们的模型也能实现稳定的动画结果,确保姿势的准确转移。
图4. 自我重演的定性比较。前四个源驾驶配对图像来自TalkingHead-1KH[5],最后一个来自VFHQ[51]。我们的模型忠实地保留了嘴唇运动和眼睛注视,可以更稳定地处理大姿势,与其他方法相比,更好地保持源肖像的身份。
定量结果。在表2中,我们提出了自我重演的定量比较。我们的模型在生成质量方面优于以往的基于扩散的方法,如FADM[9]和AniPortrait[12],并比其他方法表现出更好的眼睛运动精度。
表2. 自我重演的定量比较。
4.2. Cross-reenactment(交叉重演)
定性结果。交叉重演的定性比较如图 5 所示。前两个案例展示了我们的模型能够在驾驶或源肖像的大姿势下稳定地转移运动。第三和第四种情况表明,我们的模型准确地转移了微妙的嘴唇运动和眼睛凝视,保持了与源肖像一致的外观细节。此外,最后一个案例表明,即使参考图像中的人脸区域相对较小,拼接也能使我们的模型能够优雅地动画多人输入或全身图像。
图 5. 交叉重演的定性比较。前三个源肖像来自 FFHQ [52],最后两个是名人。驾驶肖像是从TalkingHead-1KH[5]、VFHQ[51]和NeRSemble[53]中随机选择的。我们展示了动画肖像,没有在裁剪空间中拼接,以及拼接和粘贴回原始图像空间后最终结果。与自我重演类似,我们的模型更好地从另一个人转移嘴唇运动和眼睛注视,同时保持源肖像的身份。
定量结果。表3 显示了交叉重演比较的定量结果。我们的模型在生成质量和运动精度上都优于以前基于扩散的和非基于扩散的方法,除了TalkingHead-1KH 上的 FID,其中基于扩散的方法 AniPortrait [12] 的 FID 低于我们的。翻转方面是,由于多个去噪步骤和高 FLOP,基于扩散的方法比基于非扩散的方法需要更多的推理时间。此外,由于扩散模型的高度可变性,前景和背景的时间一致性不如基于非扩散的方法好。这种现象可以在图 6 中观察到,其中举例说明了 VFHQ 和 TalkingHead-1KH 测试集的自我重演案例。我们还在图 6 中说明了 MegActor [17] 的结果,这也是一种基于扩散的方法,共享类似的相互自注意力并将时间注意力架构插入为 AniPortrait [12] 和 AnimateAnyone [24]。
表3. 交叉重演的定量比较。
图6. 与基于扩散的方法进行时间一致性比较。这三个案例来自 VFHQ 和 TalkingHead-1KH 测试集。我们的动画结果在原始图像空间上进行拼接。在垂直圆圈内,雕像在FADM[9]的后续动画帧中消失,AniPortrait[12]的动画结果中出现了类似行人的非自然背景运动,红色横幅在MegActor[17]的某些帧中消失。在水平圆内,AniPortrait[12]和MegActor[17]的动画图像中有类似手的不自然的前景运动。
4.3. Ablation Study and Analysis
在本节中,我们将讨论拼接、眼睛和嘴唇重定向的好处和必要性。
拼接模块消融。如图7的第一个块所示,给定一个源图像和一个驾驶视频序列,没有拼接的动画结果与驾驶帧共享相同的肩部位置。拼接后,动画人的肩膀与裁剪的源肖像进行力对齐,同时保留运动和外观。在图7的第二个块中,在映射到原始图像空间后,很明显,没有拼接的动画肖像显示出显著的肩部错位,而拼接的结果没有视觉上明显的错位。
图7. 缝合的消融研究。第一个块显示了裁剪图像空间拼接的比较,第二个块显示了映射到原始图像空间后的比较。在没有拼接的情况下,错位很明显,特别是在肩部区域。
眼睛重定向消融。在图8的第一个块中,说明了源图像睁眼的定量可控性。在没有任何驾驶运动的情况下,可以提供从 0 到 0.8 的正确驾驶睁眼标量 c d , e y e s c_{d,eyes} cd,eyes,将其发送到眼睛重定向模块 R e y e s R_{eyes} Reyes 和源睁眼条件元组 c s , e y e s c_{s,eyes} cs,eyes,并将眼睛从封闭到完全开放。睁眼运动不影响参考图像的剩余部分。此外,非训练分布驾驶眼睛开放标量,例如 -0.2,也可以取得合理的结果。在图8的第二个块中,卡通图像由闭眼视频的驱动帧动画。女孩的眼睛比第一个驾驶帧中的人的眼睛大得多。因此,驾驶闭眼运动太弱,无法在同一程度上关闭女孩的眼睛,如第二行中观察到的那样,没有眼睛重定向。当我们采用眼睛重定向时,对应于第i个驱动帧的睁眼标量 c d , e y e s , i c_{d,eyes,i} cd,eyes,i可以表示为 c d , e y e s , i = c ‾ s , e y e s ⋅ c ‾ s , e y e s , i ′ c ‾ s , e y e s , 0 ′ c_{d,eyes,i} = \overline c_{s,eyes}·\frac{\overline c' _{s,eyes,i}}{\overline c '_{s,eyes,0}} cd,eyes,i=cs,eyes⋅cs,eyes,0′cs,eyes,i′,其中 c ‾ s , e y e s , i ′ \overline c' _{s,eyes,i} cs,eyes,i′为第i个驱动帧睁眼条件元组的平均值,在线表示平均操作。得益于眼睛重定向,动画帧实现了与驾驶视频相同的闭眼运动。
图8. 眼睛重定向的例子和消融研究。第一个块显示了我们的模型在源图像上的眼睛开放可控性,没有任何驱动帧。第二个块展示了眼睛重定向在交叉重演方面的能力,尤其是当源人的眼睛远大于驾驶人时。为清楚起见,动画结果采用源头旋转。
嘴唇重定向消融。同样,图 9 的第一个块说明了源图像的定量唇开放可控性。可以输入驱动唇开放标量 cd,lip 在 0 和 0.8 之间,将其馈送到唇重定向模块以及源唇开放条件 c s , l i p c_{s,lip} cs,lip,并将嘴唇从封闭驱动到完全开放。唇部开放运动不影响源图像的剩余部分。如图9所示,训练外分布驾驶唇开放标量也可以取得合理的结果。此外,当嘴唇广泛开放时,会产生舌头。如图9的第二块所示,我们还可以根据从驱动帧中提取的唇近标量 c d , l i p , i c_{d,lip,i} cd,lip,i来驱动嘴唇接近: c d , l i p , i = c s , l i p ⋅ c s , l i p , i ′ c s , l i p , 0 ′ c_{d,lip,i} = c_{s,lip}·\frac{c '_{s,lip,i}}{c '_{s,lip,0}} cd,lip,i=cs,lip⋅cs,lip,0′cs,lip,i′,其中 c s , l i p , i ′ c '_{s,lip,i} cs,lip,i′是第i个驱动帧的唇开放条件。
图9. 嘴唇重定向的例子和消融研究。与眼睛重定向类似,这两个块显示了我们以任意唇开放标量为条件的可控性,这些标量要么随机采样,要么从驾驶帧中提取。
眼睛和嘴唇重定向分析。一个自然的问题是,当 α e y e s = 1 α_{eyes} = 1 αeyes=1 和 α l i p = 1 α_{lip} = 1 αlip=1 时,眼睛和嘴唇重定向是否可以同时生效。换句话说,核心问题是重定向模块是否学会了区分 Δ e y e s Δ_{eyes} Δeyes 和 $Δ_{lip} 的不同模式。图 10 中的两个动画示例正向支持这一假设。古服装女孩的源图像可以通过给定的驾驶眼睛打开和嘴唇打开标量动画到合理的结果,其中 Δ e y e s Δ_{eyes} Δeyes 和 $Δ_{lip} 同时添加到驾驶关键点中。
图10. 同时眼睛和嘴唇重定向的例子。给定同时驾驶眼睛打开和嘴唇打开的标量,源图像的动画结果表明眼睛和嘴唇重定向可以同时有效,即使这两个重定向模块都是独立训练的。
5. Conclusion
在本文中,我们提出了一个创新的视频驱动框架,用于动画静态人像图像,使它们具有现实性和表现力,同时确保较高的推理效率和精确的可控性。我们模型的生成速度在 RTX 4090 GPU 上使用朴素的 Pytorch 框架实现了 12.8 毫秒,同时优于其他基于重扩散的方法。我们希望我们有希望的结果为视频会议、社交媒体和娱乐等各种场景下的实时肖像动画应用铺平了道路,以及音频驱动的角色动画。
限制。我们当前的模型在涉及大姿势变化的交叉重演场景中表现不佳。此外,当驾驶视频涉及显著的肩部运动时,产生抖动的概率一定。我们计划在未来的工作中解决这些限制。
伦理考虑。肖像动画技术带来了社会风险,包括对深度造假的滥用。为了减轻这些风险,道德准则和负责任的使用实践是必不可少的。目前,合成的结果显示了一些视觉工件,可以帮助检测深度造假。
附录
A.基准指标细节
LPIPS。我们使用基于AlexNet的感知相似性度量LPIPS[49]来衡量动画图像和驾驶图像之间的感知相似性。
AED。AED 是动画图像和驾驶图像之间的表情参数的平均 L1 距离。这些参数包括面部动作、眼睑和下颌姿势参数,由最先进的 3D 人脸重建方法 SMIRK [54] 提取。
APD。APD是动画图像和驾驶图像之间的姿态参数的平均L1距离。姿态参数由SMIRK[54]提取。
MAE。为了测量动画图像和驾驶图像之间的眼球方向误差,采用平均角误差(°)为: M A E ( I p , I d ) = a r c c o s ( b p ⋅ b d ∥ b p ∥ ⋅ ∥ b d ∥ ) MAE(I_{p}, I_{d}) = arccos(\frac{bp·bd}{∥bp∥·∥bd∥}) MAE(Ip,Id)=arccos(∥bp∥⋅∥bd∥bp⋅bd),其中bp和bd分别为动画图像Ip和驾驶图像Id的眼球方向向量,由预训练的眼球方向网络[55]预测。
CSIM。CSIM通过预先训练的人脸识别网络[56]中两个嵌入的余弦相似度来衡量两幅图像之间的身份保存。对于自我重演,CSIM 是在动画图像和驾驶图像之间计算的。对于交叉重演,CSIM 是在动画和源肖像之间计算的。
FID。FID将动画图像的分布与一组真实图像的分布进行比较。对于 TalkingHead1KH 测试集,FID 在动画图像和 FFHQ 数据集的最后 38,400 张图像之间计算。对于VFHQ测试集,在动画图像和FFHQ的最后15,000张图像之间计算FID。
数据集处理。我们遵循[57]对TalkingHead-1KH的评估集进行预处理。在交叉重演中,我们从每个视频中提取每 10 帧 1 帧,总共 24 帧作为驾驶序列。对于 VFHQ,每 5 帧提取 1 帧,总共 6 帧。
B. Qualitative Results on Multi-person Portrait
我们在图13中提供了多人肖像动画的额外定性结果。得益于我们模型的拼接能力,肖像中的每个人都可以单独动画。
图13. 多人肖像动画示例。给定一组几名受试者的照片和一个驾驶视频序列,我们的模型可以使用应用的拼接来动画每个受试者。每个动画图像对应的驾驶帧位于动画图像的左下角。
C. Audio-driven Portrait Animation
我们可以通过从音频输入中回归或生成运动,包括表情变形和头部姿势,轻松地将我们的视频驱动模型扩展到音频驱动的肖像动画。例如,我们使用 Whisper [58] 将音频编码为顺序特征,并采用基于转换器的框架,遵循 FaceFormer [59] 来自动回归运动。音频驱动结果如图11所示。
图11. 音频驱动的例子。该图显示了应用了拼接的音频驱动肖像动画的两个示例。嘴唇运动可以由音频输入准确驱动。
D. Generalization to Animals
我们发现我们的模型可以很好地推广到动物,例如猫和狗,通过对与原始数据相结合的动物肖像小数据集进行微调。具体来说,在微调阶段,我们丢弃头部姿势损失项 L H L_{H} LH、唇 GAN 损失和脸 ID 损失 L f a c e i d L_{faceid} Lfaceid,因为动物的头部姿势不如人类准确,唇分布与人类不同,脸型不能应用于动物。令人惊讶的是,我们可以用人类驾驶视频驾驶动物,结果如图12所示。
图12. 动物动画示例。我们展示了 Ragdoll cat 和 Corgi dog 的动画结果,其中包含来自人类视频的驾驶动作。
E. Portrait Video Editing
我们可以扩展我们的模型来编辑源视频序列的头部区域,同时最低限度地牺牲源视频的时间一致性。公式7中的源关键点和驱动隐式关键点 转换如下
其中 x s , i , s s , i , x c , s , i , R s , i , δ s , i , t s , i x_{s,i}, s_{s,i}, x_{c,s,i}, R_{s,i}, δ_{s,i}, t_{s,i} xs,i,ss,i,xc,s,i,Rs,i,δs,i,ts,i分别表示第i个源帧的源关键点、比例因子、规范隐式关键点、头部姿势、表情变形和平移。操作 0.5 ⋅ ( δ d , i + δ d , i + 1 ) 0.5 · (δ_{d,i} + δ_{d,i+1}) 0.5⋅(δd,i+δd,i+1) 通过平均第 i 个和第 (i + 1) 个驱动帧的表达式偏移量来执行平滑。如图14所示,带有拼接的编辑帧继承了相应驱动帧的表达式,同时保留了来自相应源帧的非头部区域。
图14. 肖像视频编辑示例。给定一个源视频序列,例如舞蹈视频,我们的模型可以使用驾驶视频序列重新动画头部部分。编辑后的视频帧继承了驾驶帧的表达,同时保留了来自源帧的非头部区域。