当前位置:   article > 正文

数字人解决方案——LivePortrait实现表情姿态极速迁移

数字人解决方案——LivePortrait实现表情姿态极速迁移

1. 概述

LivePortrait是由快手科技、中国科学技术大学和复旦大学联合开发的项目。它的核心功能是将驱动视频的表情和姿态迁移到静态或动态人像视频上,生成极具表现力的视频结果。这项技术不仅在技术上取得了突破,更在用户体验上带来了革命性的改变。
如下动图所示:

  • 代码地址:https://github.com/KwaiVGI/LivePortrait
  • 论文链接:https://arxiv.org/abs/2407.03168
  • 项目主页:https://liveportrait.github.io/
  • HuggingFace Space一键在线体验:https://huggingface.co/spaces/KwaiVGI/LivePortrait

2. 算法框架

LivePortrait采用了一种创新的方法,突破了传统基于隐式关键点框架的局限,实现了计算效率与可控性的完美平衡。它专注于提升模型的泛化性、可控性和实用性,致力于为用户提供更高效、更灵活的面部生成体验。

LivePortrait的核心优势在于其精心设计的训练策略。通过使用6900万帧的高质量训练数据,结合视频和图片的混合训练方法,LivePortrait能够更准确地捕捉和模拟面部动作。此外,通过升级网络结构和优化动作建模,LivePortrait进一步提升了生成图像的自然度和真实感。

LivePortrait的另一大创新是其隐式关键点的运用。它将这些关键点视为面部混合变形(Blendshape)的有效隐式表示,从而为面部动画提供了更精细的控制。基于此,LivePortrait引入了贴合(stitching)和重定向(retargeting)模块,这两个模块采用轻量级的MLP网络,不仅提升了可控性,而且几乎不增加计算成本。

在性能方面,LivePortrait同样表现出色。在RTX4090 GPU上,其单帧生成速度可达12.8毫秒。通过进一步优化,如使用TensorRT技术,预计其生成速度有望达到10毫秒以内。这一速度不仅超越了许多现有的基于扩散模型的方法,更显示了LivePortrait在实时应用中的潜力。

LivePortrait的模型训练分为两阶段。第一阶段为基础模型训练,第二阶段为贴合和重定向模块训练。

2.1 一阶段基础模型训练

LivePortrait在第一阶段模型训练中对现有基于隐式点的框架进行了深入的改进和优化,具体措施如下:

高质量训练数据收集:LivePortrait整合了包括Voxceleb、MEAD、RAVDESS等公开视频数据集,以及风格化图片数据集AAHQ。同时,它还利用了大规模4K分辨率的人像视频、私有数据集LightStage,以及风格化视频和图片。通过快手自研的KVQ方法过滤低质量视频片段,确保了训练数据的高标准和多样性。

视频-图像混合训练:LivePortrait采取了创新的混合训练策略,将风格化人像图片视为单帧视频,并与真实人像视频一同训练。这种方法有效提升了模型对不同风格人像的泛化能力。

升级的网络结构:LivePortrait将多个网络统一为单一模型(M),采用ConvNeXt-V2-Tiny作为基础结构,直接估计输入图片的隐式关键点、头部姿态和表情变形。同时,引入了SPADE解码器和PixelShuffle层,优化了生成器(G)的性能和效率。

更灵活的动作变换建模:LivePortrait在建模中引入了缩放因子,解决了原始隐式关键点框架在表情系数学习上的局限性,实现了更自然的动作变换。

关键点引导的隐式关键点优化:为了增强模型对微妙面部表情的捕捉能力,LivePortrait引入了2D关键点引导的损失函数(Lguide),优化了隐式关键点的表示。

级联损失函数:LivePortrait采用了face vid2vid的多种损失函数,包括隐式关键点不变损失(LE)、关键点先验损失(LL)、头部姿态损失(LH)和变形先验损失(LΔ)。此外,还引入了级联感知损失(LP,cascade)和级联GAN损失(LG,cascade),进一步提升了纹理质量。同时,通过人脸身份损失(Lfaceid)保留了参考图片的身份特征。

在第一阶段,LivePortrait的所有模块都是从头开始训练的,总的训练优化函数(Lbase)是上述各项损失的加权和。这一系列的改进和优化,为LivePortrait在面部生成和动画领域的卓越性能奠定了坚实的基础。

2.2 第二阶段贴合和重定向模块训练

LivePortrait将隐式关键点可以看成一种隐式混合变形,并发现这种组合只需借助一个轻量的MLP便可被较好地学习,计算消耗可忽略。考虑到实际需求,LivePortrait设计了一个贴合模块、眼部重定向模块和嘴部重定向模块。当参考人像被裁切时,驱动后的人像会从裁图空间被反贴回原始图像空间,贴合模块的加入是为了避免反贴过程中出现像素错位,比如肩膀区域。由此,LivePortrait能对更大的图片尺寸或多人合照进行动作驱动。眼部重定向模块旨在解决跨身份驱动时眼睛闭合不完全的问题,尤其是当眼睛小的人像驱动眼睛大的人像时。嘴部重定向模块的设计思想类似于眼部重定向模块,它通过将参考图片的嘴部驱动为闭合状态来规范输入,从而更好地进行驱动。

贴合模块:在训练过程中,贴合模块 (S) 的输入为参考图的隐式关键点 (xs) 和另一身份驱动帧的隐式关键点 (xd),并估计驱动隐式关键点 (xd) 的表情变化量 (Δst)。可以看到,和第一阶段不同,LivePortrait采用跨身份的动作替代同身份的动作来增加训练难度,旨在使贴合模块具有更好的泛化性。接着,驱动隐式关键点 (xd) 被更新,对应的驱动输出为 (Ip,st) 。LivePortrait在这一阶段也同时输出自重建图片 (Ip,recon)。最后,贴合模块的损失函数 (Lst) 计算两者肩膀区域的像素一致损失以及贴合变化量的正则损失。

眼部和嘴部重定向模块:眼部重定向模块 (Reyes) 的输入为参考图隐式关键点 (xs),参考图眼部张开条件元组和一个随机的驱动眼部张开系数,由此估计驱动关键点的变形变化量 (Δeyes)。眼部张开条件元组表示眼部张开比例,越大表示眼部张开程度越大。类似的,嘴部重定向模块 (Rlip) 的输入为参考图隐式关键点 (xs),参考图嘴部张开条件系数和一个随机的驱动嘴部张开系数,并由此估计驱动关键点的变化量 (Δlip)。接着,驱动关键点 (xd) 分别被眼部和嘴部对应的变形变化量更新,对应的驱动输出为 (Ip,eyes) 和 (Ip,lip) 。最后,眼部和嘴部重定向模块的目标函数分别为 (Leyes) 和 (Llip),分别计算眼部和嘴部区域的像素一致性损失,眼部和嘴部变化量的正则损失,以及随机驱动系数与驱动输出的张开条件系数之间的损失。眼部和嘴部的变化量 (Δeyes) 和 (Δlip) 是相互独立的,因此在推理阶段,它们可以被线性相加并更新驱动隐式关键点。

3. 实验对比

同身份驱动:由如上同身份驱动对比结果可见,与已有的非扩散模型方法和基于扩散模型的方法相比,LivePortrait具有较好的生成质量和驱动精确度,可以捕捉驱动帧的眼部和嘴部细微表情,同时保有参考图片的纹理和身份。即使在较大的头部姿态下,LivePortrait也有较稳定的表现。

跨身份驱动:由如上跨身份驱动对比结果可见,与已有的方法相比,LivePortrait可以准确地继承驱动视频中细微的眼部和嘴部动作,同时在姿态较大时也比较稳定。LivePortrait在生成质量上略弱于基于扩散模型的方法AniPortrait[11],但与后者相比,LivePortrait具有极快的推理效率且需要较少的FLOPs。

拓展

多人驱动:得益于LivePortrait的贴合模块,对于多人合照,LivePortrait可以用指定驱动视频对指定人脸进行驱动,从而实现多人合照驱动,拓宽了LivePortrait的实际应用。

动物驱动:LivePortrait不仅对人像具有良好的泛化性,当在动物数据集上微调后,对动物肖像也可进行精准驱动。

人像视频编辑:除了人像照片,给定一段人像视频,比如舞蹈视频,LivePortrait可以用驱动视频对头部区域进行动作编辑。得益于贴合模块,LivePortrait可以精准地编辑头部区域的动作,如表情、姿态等,而不影响非头部区域的画面。

4.总结

LivePortrait的相关技术点,已在快手的诸多业务完成落地,包括快手魔表、快手私信、快影的AI表情玩法、快手直播、以及快手孵化的面向年轻人的噗叽APP等,并将探索新的落地方式,持续为用户创造价值。此外,LivePortrait会基于可灵基础模型,进一步探索多模态驱动的人像视频生成,追求更高品质的效果。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/913432
推荐阅读
相关标签
  

闽ICP备14008679号