作为构建未来虚拟世界诸多应用的主干,如何创造栩栩如生的虚拟数字人,一直是计算机视觉、计算机图形学与多媒体等人工智能相关学科密切关注的重要研究课题。近日,中国科学技术大学联合的卢深视科技有限公司、浙江大学与清华大学共同打造的 AD-NeRF 技术,引发了学界及业界关注。来自中科大张举勇课题组等机构的研究者们在近期大火的神经辐射场(NeRF: Neural Radiance Fields)技术基础上,提出了一种由语音信号直接生成说话人视频的算法。仅需要目标人物几分钟的说话视频,该方法即可实现对该人物超级逼真的形象复刻和语音驱动。

def transform_semantic(self, semantic, frame_index):
index = self.obtain_seq_index(frame_index, semantic.shape[0])
coeff_3dmm = semantic[index,...]
# id_coeff = coeff_3dmm[:,:80] #identity
ex_coeff = coeff_3dmm[:,80:144] #expression
# tex_coeff = coeff_3dmm[:,144:224] #texture
angles = coeff_3dmm[:,224:227] #euler angles for pose
# gamma = coeff_3dmm[:,227:254] #lighting
translation = coeff_3dmm[:,254:257] #translation
crop = coeff_3dmm[:,257:300] #crop param
coeff_3dmm = np.concatenate([ex_coeff, angles, translation, crop], 1)
返回 torch.Tensor(coeff_3dmm).permute(1,0)

论文题目
题目:AD-NeRF: Audio Driven Neural Radiance Fields for Talking Head Synthesis

作者团队:

会议:ICCV 2021

论文:https://arxiv.org/abs/2103.11078

代码:https://github.com/YudongGuo/AD-NeRF

任务定义
这篇文章主要针对的任务是talking face generation,也有一种说法是audio driven face reenactment。实际上整个流程是给定一段语音,和源人脸,生成一段说话人视频。

很多方法都是身份无关的,即模型训练好之后,可以生成多个人的说话视频。

AD-Nerf使用了Nerf作为基础架构,限定了当前人物的信息,一个模型只可以生成一个人物的说话视频,这也大大提升了生成的清晰度和分辨率。

动机/创新点
没有尝试使用复杂的音素-人脸对齐方式或者使用容易引入信息损失的二维关键点或者3DMM。

对人像使用Nerf进行建模,将头部和衣着的形变分开建模。

在这种情境下,可以很轻松的进行头部姿态的改变和背景的改变。

方法

实验结果
NeRF学习到的是一个映射函数,作者这里直观的想法是将音频信息融合到输入中。

d是视角信息(相机参数等),x是三维空间的坐标,a即音频信息。

通过一个MLP网络映射出,c颜色信息,以及密度信息。

这里的音频信息是使用DeepSpeech提取的,每20ms提取一个29维度的特征,最终每段特征的维度是16*29。

使用体渲染得到二维平面上的图像

这部分与Nerf中使用的体渲染的定义很相似。

给定近平面和远平面的信息,给定视线信息r(t)、方向d、射线的积累透明度T(t),最终得到渲染到平面上的颜色信息。

关于NeRF的表达

在AD-NeRF的训练过程中,引入了姿态的信息,因为人物在说话时会有各种不同的动作。作者发现头部的运动与衣着的运动不甚一致,所以尝试分离出头部和衣着两部分NeRF进行表达。

首先使用分割图,分割出头部、衣着、背景三部分。

每部分训练中的背景即为射线与远平面的交点的组合。

第一部分将头部视为前景,将背景图像视为背景进行训练

第二部分,将背景图和头部的组合视为背景,将衣着视为前景进行训练。

数据处理和损失函数
数据集是从网络上收集到的说话视频,3-5分钟,假定背景是不动的。

每个视频首先使用分割网络预测信息,然后预测头部的姿态,然后预测出背景图像。

损失函数使用了重建损失。

实验结果
消融实验

比较直接使用音频特征和使用表情参数作为中间表达

比较使用一个NeRF建模和分开建模

比较实验

与一些基于图像的方法进行比较(分辨率占优)

与基于模型的方法进行比较(效果更自然,甚至可以修改姿态)

定量展示,评估了lip-sync、AU误差等。

此外,作者还进行了用户调查实验。这是将神经渲染的NeRF与talking face generation领域结合的首次尝试,十分具有创新意义。
————————————————
版权声明:本文为CSDN博主「深兰深延AI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shenlanshenyanai/article/details/121639043

AD-NeRF 数据集的制作
flyfish

通过一个视频文件是如何制作数据集的

以id是Obama为例
bash process_data.sh Obama
该命令自动执行了以下内容

第0步 提取声音特征
通过ffmpeg命令提取视频中音频数据,存储路径是dataset/Obama/aud.wav
通过deepspeech获取音频特征存储路径是dataset/Obama/aud.npy
https://github.com/mozilla/DeepSpeech

第1步 原始视频转换成图像
将原始视频变成一帧帧的图像,数据存储在dataset/Obama/ori_imgs文件夹中

第3步 人脸关键点检测
https://github.com/1adrianb/face-alignment
从dataset/Obama/ori_imgs文件夹中读取每一张图像,检测关键点,然后同名存储到dataset/Obama/ori_imgs文件夹中,文件扩展名是lms
用的是face-alignment,face-alignment可以检测2D或者3D的人脸关键点
下面一个检测2D,一个检测3D
fa = face_alignment.FaceAlignment(face_alignment.LandmarksType._2D, flip_input=False)

fa = face_alignment.FaceAlignment(face_alignment.LandmarksType._3D, flip_input=False)

第3步 人脸解析
输入数据路径是dataset/Obama/ori_imgs
输出数据路径是dataset/Obama/parsing
结果是这样子的

第4步 提取背景图片
这里在第二步人脸关键点检测的时候,确定了最大有效图像个数,默认是100000
并且获取了图像的高度和宽度,后面的操作就操作这些有效的图像。
输出的背景文件是dataset/Obama/bc.jpg

第5步 存储训练数据
通过第4步得到背景数据结合第3步得到解析数据最终得到两种训练数据
一个是只有头部和背景的数据,dataset/Obama/head_imgs
另一个是背景和整个上半身的数据,dataset/Obama/com_imgs

第6步 估计头部姿态
生成文件的路径是dataset/Obama/debug/debug_render
参数存储文件是dataset/Obama/track_params.pt

第7步 写入Transform参数和配置文件
通过第6步得到track_params.pt参数,输出包括
HeadNeRF_config.txt
TorsoNeRF_config.txt
TorsoNeRFTest_config.txt
transforms_train.json
transforms_val.json
————————————————
版权声明:本文为CSDN博主「TheOldManAndTheSea」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/flyfish1986/article/details/122011036

AD-NeRF:用于说话人头部合成的音频驱动神经辐射场相关推荐

  1. ICLR 2023 | GeneFace:高可泛化高保真度的说话人视频合成

    ©PaperWeekly 原创 · 作者 | 叶振辉 单位 | 浙江大学博士生 研究方向 | 语音合成.说话人视频合成 语音驱动的说话人视频合成(Audio-driven Talking Face G ...

  2. VideoReTalking:用于野外会说话的头部视频编辑的基于音频的唇形同步

    我们展示了 VideoReTalking,这是一种新系统,可以根据输入音频编辑真实世界中说话的头部视频的面部,从而产生高质量和口型同步的输出视频,即使带有不同的情绪.我们的系统将这个目标分解为三个连续 ...

  3. INTERSPEECH 2018 | 语音识别技术之说话人自适应技术

    <Learning to adapt: a meta-learning approach for speaker adaptation> 这篇文章来自爱丁堡大学,以下是摘要: 通过调整声学 ...

  4. ICASSP2021丨多说话人多风格音色克隆大赛(M2VoC)

    竞赛简介 文语转换(TTS)又称为语音合成,旨在将文本转换成自然语音的一类技术,是智能语音领域的前沿技术,在语音助手.信息播报.有声读物等方面具有重要的应用价值.在深度学习的帮助下,语音合成已实现了效 ...

  5. 用对比学习训练说话人初步验证模型

    作者|OngKoonHan 编译|Flin 来源|towardsdatascience 在我大学的Android开发课程的组项目部分中,我们的团队构建并部署了一个认证系统,通过说话人的语音配置文件进行 ...

  6. ICCV 2021| GRF: 用于三维表征和渲染的通用神经辐射场(已开源)

    作者丨Bo Yang@知乎 来源丨https://zhuanlan.zhihu.com/p/399867075 编辑丨3D视觉工坊 论文链接: https://arxiv.org/abs/2010.0 ...

  7. 用于语音情绪识别的基于对抗学习的说话人无关的表示

    1. 用于语音情绪识别的基于对抗学习的说话人无关的表示 尝试解决的问题: 在语音情绪识别任务中,会面临到要测试的说话人未出现在训练集中的这个问题,本文尝试运用TDNN+LSTM作为特征提取部分,再通过 ...

  8. FACIAL:更可控的说话人驱动

    点击上方"机器学习与生成对抗网络",关注星标 获取有趣.好玩的前沿干货! 来源:AI科技评论 本文是对发表于计算机视觉领域的顶级会议 ICCV 2021的论文"FACIA ...

  9. UC伯克利黑科技:用语音数据预测说话人手势

    点击我爱计算机视觉标星,更快获取CVML新技术 昨天CVPR 论文终于提供下载: 重磅!CVPR 2019 论文终于全面开放下载!附百度云链接 看到一篇CVPR 2019 论文<Learning ...

最新文章

  1. iOS高级教程:处理1000张图片的内存优化
  2. python concat函数 多张表_教你用python递归函数求n的阶乘,优缺点及递归次数设置方式
  3. 没有违反GPL,他们真的给了源码
  4. Java中的函数传递
  5. Linux 进程 | 进程间的通信方式
  6. python开发转行做数据分析_转行学IT,Java、Python、大数据选择学哪个发展好?
  7. java创建链表成绩管理系统_成绩管理系统 链表版
  8. ucGUI 架构介绍
  9. java 字符串原样输出_Java 中如何原样输出转义符号
  10. ZooKeeper原生java客户端使用
  11. JVM高级特性与实践(二):对象存活判定算法(引用) 与 回收
  12. Idea 破解版下载指南
  13. 思科路由器命令大全(一)
  14. 为啥将phpstudy打开,却访问不了rips
  15. 圆弧与直线相切画法_机械制图常识:圆弧连接画法
  16. python画图绘制紫荆花_春风十里,紫荆花满城
  17. 屏蔽北京IP 外地正整打开
  18. 计算机行测常识应用,行测常识知识点
  19. ToonShader-卡通渲染
  20. 简单的本地图片查看器

热门文章

  1. c51矩形波输出汇编语言,51单片机汇编语言编程:用定时器控制输出矩形波
  2. sql08 访问接口没有oraoledb_状态接口的实现方式讨论
  3. 禁用计算机系统错误汇报,技术员给你关于win10关闭自动发送错误报告的具体方法...
  4. mysql如何按行数匹配_mysql – 是否可以使用MATCH AGAINST计算每行匹配的单词数
  5. c语言中gets函数可以输入空格吗_C语言中printf和gets函数的实用技巧
  6. Error creating bean with name 'multipleEntityManagerFactory' defined in class
  7. Git011--分支管理策略
  8. SlickEdit 2016(V21)
  9. XCode5中新建工程后强制使用了ARC,如何去掉?
  10. C#调用非托管代码找不到入口点解决办法