TalkingHead项目全回顾
TalkingHead主要分为两类:
Anime face的driving,以复现开源实现为主,做娱乐产业;
Human face的driving,FOM开先河,分为img驱动、audio驱动、半身驱动、nerf类等,做2D数字人、数字名片、照片动起来、视频会议化身等;
竞品公司
heygen 提供2D数字人sass服务,基于wav2lip路线
d-id 提供talking head驱动
数字人生产效果展示
(视频来自公司官网:
Anime Face Driving
THA(Talking Head Anime)系列
作者都是泰国小哥,THA是使用自己标注的6 pose数据train的GAN,结构类似cyclegan,额外增加一个face rotater用于头部旋转;
THA2 引入了ifacialmocap驱动,网络输入由6 pose变为42 blendshape,增加了更多表情。
两代开源代码加waifu的anime头像生成,就可以完成一个基本的动漫头像驱动,接近一些主播使用的动漫头像替身效果。
EasyVtuber系列
EasyVtuber 使用mediapipe提取face mesh,其余与THA类似,增加了obs功能。
EasyVtuber2 借鉴THA2,直接使用ifacialmocap提取blendshape,通过UDP发送,直接驱动动漫头像。
EasyVtuber在THA基础上封装了易用的obs等功能,更接近一个初级产品形态。
Human Face Driving
FOM系列
介绍
FOM前身是monkey-net,核心是 unsupervised keypoint detector,然后通过 dense motion network提取信息。
后续出的TPSMM,提出TPS的非线性变换,通过原图和keypoint detector经过dense motion network提取optical flow,使用optical flow来做image inpaiting.
DaGAN 使用self-supervised depth模型指导keypoint detector,然后将depth和原RGB输入cross attention模型,最后通过decoder解码。
技术路线基本上是延续encoder-decoder的思路,只是对于输入的source+destination图像的信息提取不同,可提取的信息包括无监督关键点、深度信息、光流信息等,最后通过decoder解码,通过L1 perception等Loss进行模型训练。
改进
针对FOM/TPSMM,转换为onnx模型,做了实时pipeline,实践中发现为了控制人物头部抖动,需要预选bbox或者平滑bbox。
针对DaGAN模型,优化了best_frame的选取(pfpld 解决张嘴问题),onnx模型优化速度,wav2lip优化嘴部(DaGAN提供pose,接近D-ID)等。
竞品
数字名片项目,实际生产效果对标D-ID。
AudioDriven系列
wav2lip是开山之作,提出了使用lip-sync expert作为loss,有强化学习的思想;
DINet引入了AdaAT,将source和reference以及audio提取特征后做deformed feature,然后通过decoder生成图像;
VideoReTalking加入了emotion template,先用表情生成一个稳定视频,然后替换嘴部;
本质上与FOM系列类似,但引入了audio信息,特别是为了提升开口说话的效果,要做对于嘴部的特殊处理,例如利用mask单独做嘴部生成,或增加mouth loss,基本也是以关键点的形式完成。
整体缺点一个是人物抖动、张嘴后的牙齿不明显(teethnet对牙齿增强),另一个关键问题是大范围动作无法还原回身体。
ADNerf
ADNerf是Nerf系列的产物,如果对于3D物体可以建模,那么很自然的可以想到对人体头部建模,从而驱动说话,属于novel view synthesis 新颖视图合成的类别,近年也有一些论文产出。
原ADNerf对数据进行预处理,audio和image分别获得audio feature和landmark/语义/pose信息,通过泊松融合提取背景。然后进行two-stage的nerf训练,分别训练头部和肩部。
生产上在ADNerf开源之前就完成了复现,为了提高效果,主要从feature提取、loss设计、网络设计、调参等过程上进行优化。
例如使用SynergyNet或者mediapipe提取head pose,利用wenet提取audio,引入hdr loss调整配比等。
但最后的结果一般,后续有机会跟ADNerf的作者进行了沟通,他承认本身团队达到的效果就一般,未能达到生产级别。