语音生成视频论文:Audio-driven Talking Face Video Generation with Learning-based Personalized Head Pose

科研 同时被 2 个专栏收录
77 篇文章 5 订阅
39 篇文章 0 订阅

前言

近期在做语音驱动人脸视频生成的相关工作,在学习过程中发现了几篇比较好的论文。其中有一篇是清华大学在上个月发布的,并且提供了源码。这篇文章中我将解读一下这篇论文:Audio-driven Talking Face Video Generation with Learning-based Personalized Head Pose,并给出展示效果。
总结论文输入:任意输入一个声音和一个固定的300帧左右某人说话视频,输出某人说话的视频。(声音为任意输入的声音)。

摘要

现实世界中经常说话的脸通常伴随自然的头部运动。但是大多数现有的说话人面部视频生成方法仅考虑具有固定头部姿势的面部动画。在本文中,提出一个深度神经网络模型来解决此问题,该模型将源人的音频信号A和目标人的非常短的视频V作为输入,并输出具有个性化特征的合成高质量说话人脸视频头部姿势(利用V中的视觉信息),表情和嘴唇同步(同时考虑A和V)。我们工作中最具挑战性的问题是,自然的姿势通常会导致面内和面外头部旋转,这使合成的有声面部视频远非现实。为了应对这一挑战,我们重建了3D人脸动画并将其重新渲染为合成帧。为了将这些帧微调为具有平滑背景过渡的逼真的帧,我们提出了一种新颖的内存增强GAN模块。通过首先基于可公开获取的数据集训练通用映射并使用目标人员的输入短视频对映射进行微调,我们开发了一种有效的策略,该策略仅需要少量帧(约300帧)即可学习个性化的谈话行为包括头部姿势。大量的实验和两项用户研究表明,我们的方法可以生成高质量(即,个性化的头部运动,表情和良好的嘴唇同步)说话的面部视频,这些面部视频自然看起来比头部状态更具区别性。艺术方法。通过首先基于可公开获取的数据集训练通用映射并使用目标人员的输入短视频对映射进行微调,我们开发了一种有效的策略,该策略仅需要少量帧(约300帧)即可学习个性化的谈话行为包括头部姿势。大量的实验和两项用户研究表明,我们的方法可以生成高质量(即,个性化的头部运动,表情和良好的嘴唇同步)说话的面部视频,这些面部视频自然看起来比头部状态更具区别性。艺术方法。通过首先基于可公开获取的数据集训练通用映射并使用目标人员的输入短视频对映射进行微调,我们开发了一种有效的策略,该策略仅需要少量帧(约300帧)即可学习个性化的谈话行为包括头部姿势。大量的实验和两项用户研究表明,我们的方法可以生成高质量(即,个性化的头部运动,表情和良好的嘴唇同步)说话的面部视频,这些面部视频自然看起来比头部状态更具区别性。艺术方法。我们开发了一种有效的策略,只需要少量的帧(约300帧)即可学习个性化的谈话行为,包括头部姿势。大量的实验和两项用户研究表明,我们的方法可以生成高质量(即,个性化的头部运动,表情和良好的嘴唇同步)说话的面部视频,这些面部视频自然看起来比头部状态更具区别性。艺术方法。我们开发了一种有效的策略,只需要少量的帧(约300帧)即可学习个性化的谈话行为,包括头部姿势。大量的实验和两项用户研究表明,我们的方法可以生成高质量(即,个性化的头部运动,表情和良好的嘴唇同步)说话的面部视频,这些面部视频自然看起来比固定头部状态视频更具区别性。(ps:翻译原文)

1 介绍

文章介绍部分首先介绍了视觉和声音是两个关联的东西,在虚拟现实和计算机视觉中有很多应用。而这篇论文集中解决人脸说话视频,在之前的相关工作中都是固定人脸位置进行变化,有一定的缺陷。本篇论文可以通过神经网络实现一个高质量的视频并带有头部动作。之前从声音获取头部姿态的相关研究也有,但是仍然具有挑战。由于人脸头部状态会有一些变化,很难从二维空间进行学习,因此这篇论文提出使用3D 人脸动画,再将动画进行渲染成2D,在渲染完成之后匹配背景得到一个模糊的帧,再通过a novel memory-augmented GAN 去实现逼真度的实验。这篇论文是最先解决任意人头部姿态视频生成。之前的相关工作可以生成奥巴马的说话视频但是需要很多数据,且只能是奥巴马。并且论文在调整网络时候只需要很短的视频甚至图片,再加上任意声音片段就可以合成新的某人说话视频。
文章主要工作有三个:

  1. 提出一个网络可以得到高质量的头部嘴部同步视频
  2. 相比较特定人物视频生成,该网络可以实现自定的人物视频。
  3. 在Lip reading in the wild数据中预训练了网络,因此后面只需要300帧视频和语音就可以合成视频。

2 相关工作

说话人脸视频生成

人脸说话视频可以由声音和视频两种信号驱动。其中视频信号驱动14,15,16,17.。。常用方法是将人脸的视频转成3DMM参数,之后通过Gan网络学习,将我们输入的人脸转换成训练人脸的说话视频。类似于下图但是效果应该会更好:
在这里插入图片描述
第二种方法是通过语音信号驱动,语音信号驱动又可以分为特定人脸7,21和任意人脸2,4,8,9。在任意人脸中相关工作都是2D的。2D固有的问题就是人脸难以转动,尽管有人在特定的情况下作了姿态变化,但是并没有提供细节部分,因此本文使用了3D中的几何学,实现头部姿态
,表情和嘴部的合成。

3D 人脸重建

3D人脸是从2D图片重建过来。常常使用3DMM表示和PCA参数降维。基于学习的方法[29,[30],[31,[32],[31,[34],35,[36],(37),[38],[39]使用CNN学习人脸图像到3DMM参数的映射。为了解决训练数据不足的问题,一些方法使用合成数据[29,[30,[33,[38],而另一些方法使用无监督或弱监督学习[34],[35,[36],[39]。本文采用[39]方法进行三维人脸重建。

GAN网络和记忆网络

Kim等人使用GAN将渲染后的人脸图像转换为真实的视频帧。虽然这种方法可以取得很好的效果,但它只适用于特定的目标人群,需要经过与该特定人群相关的上千个样本的训练。不适合任意人物转换。而记忆网络因为其可以保存过去的记忆,常用在问答和总结系统,在这篇论文通过GAN和记忆网络结合可以对单个人的视频帧进行微调。

3 本文工作

在本文中,我们解决的问题是生成高质量的说话人脸视频,当给出一个人的语音讲话和一个目标人的短视频(约10秒)。除了学习语音语音到唇动和面部表情的转换,我们的说话面孔生成还考虑了个性化的说话行为(头部姿势)。
为了实现上面的目标进行了两个阶段的实验,整个流程如下图所示:
在这里插入图片描述
阶段一:使用LRW数据集从声音中提取人脸表情和头部姿势,之后当我们输入一个声音和短视频,会首先重建3D人脸,并且会微调网络用来适应短视频中的说话行为,这个网络最后会得到3D人脸动画和个人的头部姿势。
阶段二:从三维人脸动画到现实的会说话的人脸视频生成。 我们使用从输入视频中获得的纹理和照明信息将3D面部动画渲染成视频帧… 带着它 有限的信息,图形引擎只能提供一个粗略的渲染效果,通常是不够现实的高质量视频。 把这些合成的框架提炼成现实的 我们提出了一种新的记忆GaN模块。GaN模块可以处理各种身份,并生成高质量的帧,其中包含与从输入视频中提取的人脸身份匹配的真实会话人脸。请注意上述的步骤中每个步骤有两个小步骤:先在公开数据集中训练好,再针对个人进行微调。

3D人脸重建

3D人脸重建采用了最新的方法,该方法使用CNN将人脸转换成3D的参数。它使用CNN将三维人脸几何、纹理和光照参数模型拟合到输入人脸照片I中。最后输的3DMM参数和声音网络提取的特征结合,将3D人脸渲染成2D,再进行一个背景匹配。

从音频中提取表情和姿势

很容易知道声音和嘴唇、下半脸动作有关,但如果忽略上半脸会造成一定的失去真。所以我们提取语音的信息和3D的几何信息从输入数据中心,并且建立一个语音到人脸表达和头部变化的映射关系。虽然我们说同样的话时候人各有差异,但是附录A证明短期语音和pose有一定相关性。具体做法是:语音方面提取mfcc输入到LSTM中去,然后得到表情和pose序列。公式定义如下:
在这里插入图片描述
之后描述了损失函数并且使用了L2正则化计算pose和expression梯度。

渲染和背景颜色匹配

渲染

完成语音网络和3D特定人脸映射网络之后,我们得到一个混合参数,其中身份、纹理和光照系数来自目标人物,表情和姿态系数来自音频。将这些3D参数放入一个渲染网络[36]中,完成渲染。在渲染过程中需要计算反照率,如果从得到系数中去计算会光滑,导致无法和真实的照片匹配。因此直接在上一节中得到的3D人脸中计算,效果更好一些。在映射中,使用详细的反照率进行渲染,因为LRW数据集中的视频非常短(大约1秒)。 在个性化映射(即通过输入短视频进行调优)中,w 使用低频反照率来容忍头部姿态的变化,输入视频(约10秒)可以提供更多的目标人的训练数据来微调合成的帧(渲染) 用低频反照率变成现实的。

背景颜色匹配

生成人脸之后需要加头发和背景之类的,而文章说到模板匹配方法很不合适,我们输入的帧已经很小了。本文提出了一种关键帧方法:选择关键帧作为在短时间内一个轴上头部方向最大的帧,例如,最左或最右头部姿态的帧,然后我们只匹配这些关键帧的背景。我们称这些匹配的背景为关键背景。对于相邻关键帧之间的帧,我们使用线性插值来确定它们的背景。每一帧的姿态也被修改以适应背景。最后,通过包含匹配的背景来组装整个渲染框架。如果只输入一个信号人脸图像I而不是一个短视频,我们使用[30]中的人脸仿形方法将I旋转到预测的姿态,从而获得匹配的背景。

记忆Gan网络渲染视频帧

之前使用参考文献36渲染的帧距离真实的视频还有一定的距离,为了让该网络能够生成一个逼真的视频,相比较生成特定一个人的视频方法[14],提出了一个新的Gan网络结构

在这里插入图片描述这个网络挺复杂,需要好好琢磨,关于代码部分我还在看,就不献丑了。

实验

环境是pytorch,gpu使用的titan xp代码公开在:
这里
效果可以从这里查看:效果连接

实验步骤

这一环节介绍了实验步骤和微调的过程,首先呢作者通过训练和预训练发现300帧效果可以达到很好,太少的话会导致图片学习的程度不够。
在这里插入图片描述

部分环节暂停的效果

之后作者在实验过程中逐步改进网络,发现头部移动和省份确定网络的重要性。如下图23行所示,第四行中加入制定人的网络会导致网络效果更好一些。
在这里插入图片描述

和最近研究方法进行比较

与特定人微调后的网络比较

作者是第一个实现头部动作,之前的方法(2,3,4行)都是固定的,结果如下图所示,在这一节作者对视频效果进行了主观评价测试,发现本文方法比之前的方法提升效果显著。
在这里插入图片描述

与本文的预训练方法比较

由于之前相关工作没有考虑到头部,所以为了公平起见,本文不使用特定人物视频进行微调。结果显示如下图,还是可以看出本文的效果要好一些。
在这里插入图片描述

分析头部动作的真实度

作者设计了一种方法计算生成头部动作和真实的视频之间的差距,并召集测试志愿者。结果显示该方法生成的头部动作和原视频相关性很好。

结论

总结了本文的工作,主要强调了2D–3D-2D方法可以解决头部姿态问题,并且使用GAN网络可以更接近真实视频。总的来说该方法效果比之前的都要好。

附录A

作者在研究所工作中发现声音mfcc和头部状态是成正相关的。具体的方法是在一个区域内计算变化。详情参照原文。

附录 B

微调的视频长度对结果的影响也很大,从图中可以看出300帧效果刚刚好。
在这里插入图片描述

计划

看完论文之后抓紧看懂代码,找到数据集之后再进行扩展。
目前发现参考文献中8,22,9有github源码,但是作者对比试验中参考文献you said that ,ATVG暂时没有搜到源码。
数据集得去申请LRW,想用中文的,但是看有的人说效果不好。
github地址:

https://github.com/yiranran/Audio-driven-TalkingFace-HeadPose

  • 4
    点赞
  • 17
    评论
  • 9
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p style="color:#24292E;"> 这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定;<br /><br /> 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。<br /><br /> 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。<br /><br /> 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。<br /><br /> 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。<br /><br /> 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。<br /></p> <br />
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值