杨超越的声音+高晓松的脸~如此酸爽的技术,你值得拥有!

AI科技大本营 2018-12-06 15:31
关注文章




什么是 Talking Face Generation 任务?


简单来讲,给定音频或视频后,可以让任意一个人的面部特征与输入信息保持一致。比如在下面的 Demo 视频中,通过输入一段音频,让其他五位个人都能说出这段话。如何利用这个技术?以后大家恶搞,就不只是给奥巴马、特朗普嫁接一段声音了。你可以让高晓松“燃烧我的卡路里”,也可以让好运锦鲤杨超越每天为你讲“晓说”。要油要甜,全看你的选择~(我要吴彦祖,胡歌,新垣结衣,神仙姐姐每天给我讲段子~)



其实,当人们说话时,面部区域一些细微的运动是非常复杂的,通常由讲话者个人固有的面部特征和所传递的外部信息共同决定。现有的研究中,一部分专注于前者,即对一个主体构建特定的面部特征模型;另一部分专注于后者,即构建唇部运动和言语信息之间的 identity-agnostic 变换的模型。



在这项工作中,作者将两方面整合一起开展了一系列研究,并提出了一种 DAVS (Disentangled Audio-Visual System)结构。通过学习分解的视觉和听觉表征,实现对任意说话主体的脸部生成。我们假设说话人的脸部序列是主体相关信息和语音相关信息的组合,通过一种新颖的关联-对抗训练过程来明确地解开这两个空间。这种分解方法的另外一个优点就是能将分解得到的音频和视频信息都可以用于语音信息的生成。大量实验表明,作者所提出的方法可以对任意对象上生成逼真的人脸序列,并且唇部运动模式更加清晰。此外,作者还发现,学习到的视听表征在唇语自动解读和音频视频检索等应用中也非常有用。


传送门


项目主页:https://liuziwei7.github.io/projects/TalkingFace


论文链接:

https://arxiv.org/pdf/1807.07860.pdf

Github 地址:

https://github.com/Hangz-nju-cuhk/Talking-Face-Generation-DAVS


目前,作者准备把这个项目开源,大家可以在源码公开后进行深入实践了!


首先,你需要先准备:


  • Python2.7

  • PyTorch (0.2.0)

  • Opencv2


测试结果如何生成?


1.下载预训练的模型的 checkpoint



2.测试数据在0572_0019_0003文件夹,这是从 Voxceleb 数据集中筛选,经预处理后的样本数据。


3.运行测试脚本,利用视频生成视频



4.运行测试脚本,从语音生成视频



▌数据样本的生成结果

1.对人脸面部特征的影响



2.对非真是人脸面部特征的影响(只用人脸数据作为训练样本)



创造更多的样本

Demo 视频中使用的面部检测工具可以在 rsa 中找到。每张图像的一行中,将返回一个带5个关键点的 Matfile 输出。这个工具在其他面部对齐方法中也同样适用,如 dlib。在这个项目中,作者使用的面部对齐关键点是眼睛的中心和嘴角的平均点。使用的每个图像的 PATH和 face POINTS,大家可以在 preprocess / face_align.py 文件中找到作者使用的方法。


此外,作者对音频文件的预处理方法是相同的,调用了SyncNet 的matlab 的代码,在将 mfcc 特征保存到 bin 文件中。


训练代码


训练代码正在整理中,后续会公布。此项目的代码结构参考了 pix2pix 的实现代码:


https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix


后处理细节


直接生成的结果可能会受到缩放条件 (放大和缩小) 的影响,假设这是由训练集对齐引起的。作者在 demo 中使用 subspace video stabilization 方式来解决这种不稳定问题。

参考阅读:

http://web.cecs.pdx.edu/~fliu/papers/tog2010.pdf

作者 | 香港中文大学 Multimedia Laboratory

译者 | linstancy

整理 | Jane

出品 | AI科技大本营

微信扫一扫
关注该公众号

{{panelTitle}}
支持Markdown和数学公式,公式格式:\\(...\\)或\\[...\\]

还没有内容

关注微信公众号