数字人深度思考(唇形优化)

面了一家北京公司,提到希望对唇形优化,测试了官方的微信小程序,背景分割有锯齿状,口型与TTS对不上,脸部超分存在色差,应该是类似wav2lip GAN的方案,这是大部分初创公司会选择的方案。

口型驱动背景

逃不开的 wav2lip, 第一阶段训练一个专家鉴别器,鉴别口型和audio的匹配度,第二阶段通过encoder-decoder或者GAN的方式训练,减少输入audio和ref图片生成图片与GT的差距;

SadTalker比较新,可以认为是集大成者,分为嘴部和头部pose两部分,对于嘴部,用3DMM(Deep3DRecon)做中间表示,基于wav2lip的输出利用表情系数的间接表示来学习唇形运动;对于头部,使用VAE结构,输入audio+第一帧姿态+style系数,来学习t帧与第一帧的残差(更稳定);生成上借鉴了vid2vid和PIRenderer,只使用表情系数和头部pose来生成最终结果。

最大的问题在于wav2lip是在 LRS2(BBC视频)上train的,SadTalker又在VoxCeleb上train,最终的尺寸也只有256x256,这种配置在中文上不可能取得好的效果,也不可能获得高清图像。


一些细节

APB2Face第一阶段使用audio/pose/eye blink生成landmark,然后用pix2pix方式生成真实人脸,基于鉴别器的方式提升图像质量,每个人脸需要训练一个模型,由于audio/pose/eye多分支的输入使得特征解耦,可以分别控制面部不同位置的姿态;

APB2FaceV2解决了一个模型换N脸的问题,引入了AdaIN设计的AdaConv风格化(kerner1->3),audio经过MFCC编码,效果仅在domain内部取得不错的效果,而在domain外面的人脸显然不能cover;

pix2pix在基础的GAN上引入了conditionGAN,提供了一张inference图片用于计算generator(UNet)生成图像与domain的差距(L1);

pix2pixHD引入multi scale,解决高分辨率生成问题,使网络兼顾局部和全局特征;

CycleGAN 克服了 pix2pix 在图像转换中必须一一配对的限制,给定两个无序图像集 X 和 Y,CycleGAN基于两个生成器+cycle loss实现了domain adaption;

instagan引入了图像实例mask,网络结构与cyclegan相似,将多个不同的实例分割标签图一起concat进入网络,实现了跨实例的生成;

  1. 从分辨率的角度看,256x在人头生成上不支持高清效果,至少要512x;
  2. 从数据集上,要解决静音问题,
  3. 从生成图像质量的角度看,主要从网络结构和Loss的方向去考虑,
    1. Loss方向:L1 L2的生成图像与domain差异loss,提高图像质量的vgg loss (perception loss),基于鉴别器的GAN loss;
    2. 网络结构:生成器 UNet/ResNet, Multi-scale鉴别器;
  4. 音频输入的角度,MFCC/deepspeech等开源方案可以将audio转换为feature;
  5. 控制生成稳定性的方面,引入inference对G D在loss层面上进行引导;
  6. 增强泛化性上(语速和音色),需要对img和audio加噪;
  7. 从解决口型的问题上,关键应该是数据集mask的处理;

总结

  1. 基于GAN/VAE做audio2face的路线,为了解决高清问题,256的分辨率是无法支撑的,必须要有大量中文音频512以上的数据支撑;
  2. 基于一些开源实现wav2lip Deep3DFace等等,难以避免的会陷入到domain limit里面,受限于训练数据,无法在某些场景上取得好的效果;
  3. 如果没有大量数据的支撑,应当尽量简化问题,例如预测更少的区域,限定在更特殊的数据背景下,限定在某种TTS音色下,等等;
  4. 牙齿生成大部分开源思路还是依托于SR模型,受限制严重,teethnet或许是一种好的思路;

数字人深度思考(唇形优化)
http://example.com/posts/60083/
作者
ykk648
发布于
2023年5月10日
许可协议