【数字人】9、DiffTalk | 使用扩散模型基于 audio-driven+对应人物视频 合成说话头(CVPR2023)

在这里插入图片描述

论文:DiffTalk: Crafting Diffusion Models for Generalized Audio-Driven Portraits Animation

代码:https://sstzal.github.io/DiffTalk/

出处:CVPR2023

特点:需要音频+对应人物的视频来合成新的说话头视频,嘴部抖动严重

一、背景

talking head 合成任务相关的工作最近都集中于提升合成视频的质量或者提升模型的泛化性,很少有工作聚焦于同时提升这两个方面,而这对实际的使用很重要

所以,本文作者引入扩散模型来实现 audio-driven talking head,同时使用的声音信号、面部、关键点来作为驱动信号,可以在不同的的说话人上进行泛化

当前的研究现状:

  • 2D:主要是基于 GAN 来实现 audio-to-lip 的驱动,也就是主要是声音到嘴型的驱动,不同的模特都可以被驱动,能泛化于不同的模特之间(因为主要是驱动的嘴巴,其他部分还是保持视频原状即可)。但 GAN 训练容易坍塌,且生成的视频分辨率不高,看着比较模糊
  • 3D:如 NeRF,能够生成看起来质量较高的视频,但很难泛化,一般一个模型只能支持一个模特的渲染,泛化性较差

因此,作者选择了更好训练的扩散模型,将 audio-driven talking head 的合成看做一个 audio-driven 的连续时序的去噪过程

如图 1 所示,输入一个语音序列,DiffTalk 可以根据一个人物的一段视频来生成这个人物的新的说话视频

在这里插入图片描述

二、方法

DiffTalk 的整体结构如图 2 所示

在这里插入图片描述

2.1 针对 Talking head 的条件扩散模型

现在潜在扩散模型 LDM 应用很广泛,所以这里作者使用的也是 LDM

作者使用了一对儿训练好的 image encoder E I E_I EI 和 decoder D I D_I DI,在后续训练的时候固定权重不做训练

基于此,输入的人脸图片就会被编码到隐空间 z 0 = E I ( x ) ∈ R h × w × 3 z_0=E_I(x) \in R ^{h \times w \times 3} z0=EI(x)Rh×w×3,h 和 w 是原图大小 H 和 W 经过压缩后的大小,压缩倍数是下采样参数

一般的 LDM 都是一个时间序列的 UNet 去噪网络 M M M,学习的是反向去噪过程:

在这里插入图片描述

但在本文中,给定一个人物的 source identity 和 driven audio,本文的目标是训练一个模型能够生成和语音匹配的说话头视频,且要保留原始 identity 信息

所以,语音信号是一个基础条件来控制如何去噪

2.2 Identity-Preserving Model Generalization

在学习音频到唇部翻译的同时,另一个重要任务是在保留源图像中完整身份信息的同时实现模型的泛化。泛化的身份信息包括面部外观、头部姿态和图像背景。

为此,作者设计了一个参考机制,使模型能够泛化到训练中未见过的新个体

如图 2 所示,选择一个随机的源身份面部图像 xr 作为参考,其中包含外观和背景信息。为了防止训练中的捷径,会限制选择的 xr 与目标图像相距 60 帧以上。然而,由于真实的面部图像与 xr 的姿态完全不同,模型预期在没有任何先验信息的情况下将 xr 的姿态转移到目标面部上。

因此,作者将掩蔽的真实图像 xm 作为另一个参考条件来提供目标头部姿态的指导。xm 的嘴部区域被完全掩盖,以确保网络看不到真实的唇部动作。这样,参考 xr 专注于提供嘴部外观信息,这也降低了训练的难度。

同时,还使用 MLP encoder E L E_L EL 对面部关键点(除过嘴部)进行了编码,也作为条件

所以整个输入条件就变成了:

在这里插入图片描述
整个优化目标就是:

在这里插入图片描述

三、效果

数据:

  • HDTF 数据集,包括 16 小时视频,分辨率为 720P 或 1080P 的,超过 300 个人物
  • 作者随机选择了 100 个视频,抽取了约 100 min 时长的视频作为训练
  • resize 输入数据到 256x256,隐空间编码大小为 64x64x3,如果要训练大分辨率模型,输入是 512x512,隐空间编码大小同样为 64x64x3

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/343055.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字体包大小缩小的软件

Fontmin - 字体子集化方案https://ecomfe.github.io/fontmin/#app

【教3妹学编程-算法题】统计出现过一次的公共字符串

3妹:哈哈哈哈哈哈,太搞笑了~ 呵呵呵呵呵呵 2哥:3妹干嘛呢, 笑的这么魔性! 3妹:在看王牌对王牌,老搞笑了 2哥:这季好像没有贾玲吧。 3妹:是啊,听说贾玲去导电影…

OpenAI 自带的检索功能好用吗?定量测评带你深度了解!

向量数据库的劲敌来了?又有一批赛道创业公司要倒下? …… 这是 OpenAI 上线 Assistant 检索功能后,技术圈传出的部分声音。原因在于,此功能可以为用户提供基于知识库问答的 RAG(检索增强生成) 能力。而此前…

2024年解决网络抓取中CAPTCHA问题的顶级CAPTCHA解决方案

在网络抓取领域,CAPTCHA作为一种安全措施用于区分人类用户和自动化机器人。CAPTCHA是“Completely Automated Public Turing Test to Tell Computers and Humans Apart”的缩写,向用户提出挑战,例如扭曲的文本、图像或谜题,用户必…

制作 CentOS Stream9 的U盘系统启动盘

一、简述 注:请勿用于商用,如有版权纠纷,于博主无任何关系。(仅用于学习研究使用) 由于CentOs Linux 7和CentOs Stream8终止日期是2024年,需要将系统升级到最新版本的CentOs Stream9,下面是刻录系统盘的操…

Laravel 框架中队列的使用

概述 Laravel 框架内置了强大的队列系统,用于处理异步任务、提高系统性能等。队列可以让任务异步执行,而不会阻塞当前进程,可以提高系统的处理能力。 Laravel 的队列系统支持多种驱动,如 Redis、Beanstalkd、SQS 等,…

大语言模型下载,huggingface和modelscope加速

huggingface 下载模型 如果服务器翻墙了,不用租机器 如果服务器没翻墙,可以建议使用下面的方式 可以租一台**autodl**不用显卡的机器,一小时只有1毛钱,启动学术加速,然后下载,下载完之后,用scp…

版本控制系统教程

1.Git的基本介绍 1.1 Git的概念 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件.Git与常用的版本控制工具CVS,Subversion等不同&#xff…

【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(上)

HashMap工作原理全揭秘 — 核心源码解析 知识盲点概念介绍数据结构数组链表数组VS链表哈希表不同JVM版本HashMap的展现形式 HashMap VS HashTable特性区别对比 hashcodehashCode的作用equals方法和hashcode的关系key为null怎么办执行步骤 核心参数容量探讨负载因子探讨加载因子…

宏集案例丨宏集PC Runtime软件助推食品行业生产线数字化革新

来源:宏集科技 工业物联网 宏集案例丨宏集PC Runtime软件助推食品行业生产线数字化革新 原文链接:https://mp.weixin.qq.com/s/DwzVzifUiidNr-FT3Zfzpg 欢迎关注虹科,为您提供最新资讯! 01 前言 近年来,中国食品行业…

怎样创建vue项目(分别基于vue-cli和vite两种的创建方式)

一、基于vue-cli脚手架创建 1、安装node.js 1、首先需要安装node.js,推荐下载地址:Node.js 2、检查是否安装成功,使用打开黑窗口的快捷键windowR,输入cmd,在黑窗口输入node -v,如果输出版本号&#xff0…

Triangulated Surface Mesh Simplification 三角表面网格简化

文章目录 Triangulated Surface Mesh Simplification 三角表面网格简化1 介绍2 简化过程概述3 成本策略3.1 Lindstrom-Turk 成本和布局策略3.2 Garland-Heckbert 成本和布局策略3.3 成本策略政策 4 应用程序编程接口4.1 API概述4.2 强制参数4.3 可选的命名参数4.4 调用示例 5 例…