FortisCK Blog

记录研究生活

论文阅读——Generation of Facial Animation from Voice using End-to-End Learning

论文 「2017 SIGGRAPH」Audio-Driven Facial Animation by Joint End-to-End Learning of Pose and Emotion

有一个实现的代码,暂时还没时间研究

GitHub - leventt/surat: implementation based on “Audio-Driven Facial Animation by Joint End-to-End Learning of Pose and Emotion”

论文阅读

摘要与介绍

  • 本文提出了一种基于深度学习的、低延迟的声音-三维人脸动画驱动方法。
  • 方法从声音中提取了一种潜在编码(latent code),并认为其与情绪有关(同时链接声音与表情)。因此在推理三维表情的时候,就可以用latent code来进行直观的控制表情。
  • 我们用3-5分钟的高质量动画数据来训练我们的网络,这些数据是使用传统的、基于视觉的性能捕捉方法获得的
  • 尽管主要目标是模拟单个演员的说话风格,但本文模型在使用不同性别、口音或语言的其他说话者的音频驱动时也能产生合理的结果。

输入为半秒的语音,输出是一个固定拓扑结构mesh的三维顶点坐标

创新点

  • 一种卷积神经网络架构,用来处理人类语音
  • 一种全身的方法,使得网络可以提取语音中的情绪状态
  • 三路损失函数,以保证网络在高度混淆的训练数据下有很好的响应和稳定性。

网络架构

深度神经网络结构由1个专用层、10个卷积层和2个全连接层组成。具体结构如下表所示:

具体来说分为3大层次

  1. formant analysis network
    人语分析层,提取随时间变化的语音特征序列,它随后将驱动发音
  • 首先使用一个固定功能的自相关分析函数提取信息,再用5个卷积层来提炼信息
  • 经过训练,这一层的网络可提取人声中的短时特征:音素、语调、重音和特定的音素
  1. articulation network:由5个卷积层组成,分析特征的时间演化,并最终输出一个抽象特征向量,描述在音频窗口中心的面部姿态。
  • 这一层接收(习得的)情绪状态(emotional state)作为输入,消除不同表情和说话风格间的歧义
  • 情绪状态被表示为一个E维向量,我们将其直接连接到连接网络中每一层的输出,使随后的层能够相应地改变它们的行为
  • 每一层输出$F_l \times W_l \times H_l$个激活$F_l$:抽象的特征图的个数;$W_l$时间轴的尺寸;$H_l$:语音轴的尺度
  • 结果对层或特征图的确切数量不是非常敏感,但我们发现有必要将卷积组织成两个不同的阶段,以避免过拟合
  • 这层网络输出一组256+E 维度的抽象特征,这些特征一起表示所需的面部姿势
  1. output network:生成最终的5022个控制顶点的3D位置
  • 输出网络被实现为一对全连接层,它们对数据执行简单的线性转换。
  • 我们将第二层初始化为150个预先计算的PCA组件,这些组件共同解释了训练数据中看到的99.9%的方差
  1. 技术细节:Audio processing
  • 输入声音格式转化为:16 kHz mono
  • 音量被正则化在[-1,+1]之间
  • 输入的声音最终变为2D 表达,这里本文用了自己方法,不同于MFCC等的。
  1. 技术细节:Representation of emotional states
  • 人声到表情转换问题是个高度”歧义”的问题,本文解决这些歧义的方法是向网络引入第二输入(情绪状态)
  • 将少量额外的潜在数据与每个训练样本相关联,这样网络就有足够的信息来明确地推断出正确的输出姿态
  • 使用一种自动学习的算法,提取语音的简洁情感表达 E 维度参数:16或24维的可调整参数
  • 情绪状态专注于长期影响
  1. 网络训练

    训练目标:使用di4d系统获取数据,使用9个HD摄像机,30hz,最终获得同拓扑的头部4D数据

    训练数据:对于每个演员数据包含两部分:pangrams 和 in-character material 3-5分钟的数据

    • Pangrams:这个集合试图覆盖在一个给定的目标语言的正常讲话中可能的面部运动
    • In-character material:个性化数据,或是于游戏、影片相关的特殊表演

      损失函数:包含三个部分position term、motion term、regularization term

    • Position term:我们的主要误差指标是期望输出$y$和网络$\hat{y}$产生的输出之间的平方差最小

      $P(x)=\frac{1}{3 V} \sum_{i=1}^{3 V}\left(y^{(i)}(x)-\hat{y}^{(i)}(x)\right)^2$

    • Motion term:保证动画前后帧之间的运动连贯性,我们定义算子$m[·]$为成对帧之间的有限差

      $M(x)=\frac{2}{3 V} \sum_{i=1}^{3 V}\left(m\left[y^{(i)}(x)\right]-m\left[\hat{y}^{(i)}(x)\right]\right)^2$

    • Regularization term:确保网络正确地将短期效应归因于音频信号,而将长期效应归因于所描述的情绪状态(同时考虑出去除平凡解)

      其中

    • Normalization: 为了平衡三个损失函数,在Adam优化的过程中,分别对每个损失项执行相似的标准化

      数据增强:为了提高时间稳定性和减少过拟合,对训练样本采用了随机时移。当向网络呈现一个minibatch时,随机地将输入音频窗口向任意方向移动16.6ms(以30帧每秒±0.5帧)。 为了补偿,通过线性插值对期望的输出姿态应用相同的位移

      训练设置:使用Theano和Lasagne框架。使用Adam(默认参数)训练网络, 500 epochs。每个epchs训练所有样本(随机顺序输入),每个batch 50个数据对

      训练效果:Theano实现中,单帧的推理需要6.3ms,当同时处理一批100帧时,每帧需要0.2ms