腾讯放大招了!AniPortrait开源上线!音频驱动逼真人像动画合成!人人都是歌手!

文章链接:https://arxiv.org/pdf/2403.17694
github链接:https://github.com/Zejun-Yang/AniPortrait

本文提出了AniPortrait,一个新颖的框架,用于生成由音频和参考肖像驱动的高质量动画。方法分为两个阶段。首先,从音频中提取3D中间表示,并将它们投影到一系列2D面部关键点上。随后,采用了一个强大的扩散模型,结合一个运动模块,将关键点序列转换为逼真且时间上连贯的肖像动画。

实验结果表明,在面部自然性、姿势多样性和视觉质量方面,AniPortrait具有优越性,从而提供了增强的感知体验。此外,我们的方法在灵活性和可控性方面表现出了相当大的潜力,可以有效应用于面部运动编辑或面部再现等领域。

介绍

从音频和静态图像中创建逼真而富有表现力的肖像动画具有各种应用,从虚拟现实和游戏到数字媒体都有涉及。然而,制作视觉上引人入胜且保持时间一致性的高质量动画是一个重大挑战。这种复杂性源于需要精细协调嘴唇运动面部表情头部位置,以营造出视觉上引人入胜的效果。

现有方法通常未能克服这一挑战,主要是因为它们依赖于用于视觉内容创建的容量有限的生成器,如GANs、NeRF或基于运动的解码器。这些网络展现出有限的泛化能力,并且在生成高质量内容方面经常缺乏稳定性。最近,扩散模型的出现促进了高质量图像的生成。一些研究在此基础上进行了进一步探索,通过引入时间模块,使扩散模型在创建引人入胜的视频方面表现出色。

在扩散模型的进展基础上,介绍AniPortrait,这是一个新颖的框架,旨在生成由音频和参考图像驱动的高质量动画肖像。AniPortrait分为两个明确的阶段。

第一个阶段,采用基于transformer的模型从音频输入中提取一系列3D面部网格和头部姿势,随后将它们投影到一系列2D面部关键点上。这一阶段能够从音频中捕捉微妙的表情和嘴唇运动,以及与音频节奏同步的头部运动。

第二个阶段,利用了一个强大的扩散模型,结合了一个运动模块,将面部关键点序列转换为时间一致且逼真的动态肖像。具体地,借鉴了AnimateAnyone的网络架构,该架构利用了强大的扩散模型 Stable Diffusion 1.5,根据身体运动序列和参考图像生成流畅而逼真的视频。特别值得注意的是我们对该网络内姿势引导模块的重新设计。这种修改不仅保持了轻量级设计,而且在生成嘴唇运动方面表现出了更高的精度。

实验结果显示了AniPortrait在创建具有出色面部自然性、多样化姿势和优秀视觉质量的动画方面的优越性。通过使用3D面部表示作为中间特征,我们获得了根据需要修改这些表示的灵活性。这种适应性极大地增强了本文的框架在面部运动编辑和面部再现等领域的适用性。

方法

所提出的框架包括两个模块,Audio2LmkLmk2Video。前者旨在从音频输入中提取一系列能够捕捉复杂面部表情和嘴唇运动的关键点序列。后者利用这些关键点序列生成具有时间稳定性的高质量肖像视频。下图1中概述了该框架,并在下文提供了更多细节。

Audio2Lmk

设 表示一系列语音片段,目标是预测相应的 3D 面部网格序列 ,其中每个 ,并且姿势序列 ,其中每个 是一个表示旋转和平移的 6 维向量。

采用预训练的 wav2vec 来提取音频特征。该模型具有很高的泛化能力,并且能够准确识别音频中的发音和语调,这在生成逼真的面部动画中起着关键作用。通过利用获得的稳健语音特征,可以有效地使用由两个全连接层组成的简单架构将这些特征转换为 3D 面部网格。观察到,这种简单的设计不仅确保了准确性,还提高了推理过程的效率。

在将音频转换为姿势的任务中,我用相同的 wav2vec 网络作为骨干。然而,不与音频到网格模块共享权重。这是因为姿势与音频中存在的节奏和语调更为密切相关,这与音频到网格任务有不同的重点。为了考虑前面状态的影响,使用 transformer 解码器来解码姿势序列。在此过程中,使用交叉注意力机制将音频特征集成到解码器中。对于上述两个模块,使用简单的 L1 损失进行训练。

在获得网格和姿势序列后,使用透视投影将它们转换为一系列 2D 面部关键点。这些关键点随后被用作下一阶段的输入信号。

Lmk2Video

给定一个参考肖像图像,表示为 ,并且一个表示为 的面部关键点序列,其中每个 ,本文提出的 Lmk2Video 模块创建一个时间上连贯的肖像动画。这个动画将运动与关键点序列对齐,并保持与参考图像一致的外观。将肖像动画表示为一个肖像帧序列,表示为 。

Lmk2Video 的网络结构设计受到 AnimateAnyone 的启发。本文利用 SD-1.5 作为骨干,集成了一个时间运动模块,将多帧噪声输入有效地转换为一系列视频帧。同时,使用一个 ReferenceNet,镜像了 SD-1.5 的结构,用于从参考图像中提取外观信息并将其整合到骨干中。这种战略性的设计确保了输出视频中的人脸ID保持一致。与 AnimateAnyone 不同的是,我们增强了 PoseGuider 的设计复杂性。原始版本仅包括几个卷积层,之后关键点特征与骨干输入层的潜变量合并。这种基本设计无法捕捉到嘴唇的复杂运动。因此,本文采用了 ControlNet 的多尺度策略,将相应尺度的关键点特征合并到骨干的不同模块中。尽管进行了这些增强,也成功地保持了参数数量相对较低。

本文还引入了一个额外的改进:将参考图像的关键点作为额外输入。PoseGuider 的交叉注意力模块促进了参考关键点和每帧目标关键点之间的交互。这个过程为网络提供了额外的线索,以理解面部关键点和外观之间的相关性,从而有助于生成具有更精确运动的肖像动画。

实验

实施细节

在 Audio2Lmk 阶段,采用 wav2vec2.0 作为我们的骨干网络。利用 MediaPipe 提取 3D 网格和 6D 姿势进行标注。Audio2Mesh 的训练数据来自内部数据集,该数据集包含来自单个发言者的近一小时高质量语音数据。为了确保 MediaPipe 提取的 3D 网格稳定,我们指示演员在整个录制过程中保持稳定的头部位置,面向摄像机。使用 HDTF 训练 Audio2Pose。所有训练操作都在一台 A100 上执行,利用 Adam 优化器,学习率为 。

在 Lmk2Video 过程中,实施了两步训练方法。在初始步骤中,专注于训练骨干网络、ReferenceNet 和 PoseGuider 的 2D 组件,略过运动模块。在随后的步骤中,冻结所有其他组件,并集中精力训练运动模块。利用两个大规模、高质量的面部视频数据集 VFHQ 和 CelebV-HQ 训练模型。所有数据经过 MediaPipe 处理,以提取 2D 面部关键点。为了增强网络对嘴唇运动的敏感性,在从 2D 关键点渲染姿势图像时使用不同的颜色区分上下嘴唇。所有图像都被调整为 512x512 分辨率。利用 4 个 A100 GPU 进行模型训练,每个步骤耗时两天。采用 AdamW 优化器,保持学习率为 。

结果

如下图2所示,我们的方法生成了一系列在质量和真实感上引人注目的动画。利用中间的3D表示,可以对其进行编辑以操控最终输出。例如,可以从源中提取关键点并改变其ID,从而使我们能够创建面部重现效果。

结论和未来工作

本研究提出了基于扩散模型的肖像动画框架。通过简单地输入音频片段和参考图像,该框架能够生成具有流畅嘴唇运动和自然头部运动的肖像视频。利用扩散模型强大的泛化能力,该框架创建的动画展现出令人印象深刻的逼真图像质量和令人信服的运动。然而,这种方法需要使用中间的3D表示,获取大规模、高质量的3D数据的成本相当高。因此,生成的肖像视频中的面部表情和头部姿势无法摆脱“诡异谷”效应。在未来,我们计划采用EMO的方法,直接从音频预测肖像视频,以实现更令人惊叹的生成结果。

参考文献

[1] AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animation

 更多精彩内容,请关注公众号:AI生成未来

欢迎加群交流AIGC技术,添加小助手

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

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

相关文章

linux i2c-tools使用总结

1,安装iic-tools sudo apt install i2c-tools -y 2,查看有几条iic总线 [root@sino-platform:/root]# ls /dev/i2c- i2c-0 i2c-1 i2c-2 i2c-3 3,查看i2c命令 [root@sino-platform:/root]# i2c i2cdetect i2cdump i2cget i2cset 4,iic-help命令 [root@sino-platform…

【vue3学习笔记(二)】(第141-143节)初识setup;ref函数_处理基本类型;ref函数_处理对象类型

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 本篇内容对应课程第141-143节 课程 P141节 《初识setup》笔记 1、setup是所有组合式API“表演的舞台”,组件中所用到的所有数据、方法、监视数据、生命周期钩子等都需要配置在setup中。 2、setup的两种返回值&…

Go语言介绍以及如何在Go语言中操作MySQL数据库

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

「Nginx」Nginx配置详解

「Nginx」Nginx配置详解 参考文章1、正向代理和方向代理2、指定域名允许跨域 参考文章 1、Nginx反向代理 2、nginx配置详解 3、Nginx服务器之负载均衡策略(6种) 1、正向代理和方向代理 2、指定域名允许跨域 map $http_origin $allow_cors {default 1;…

uniApp使用XR-Frame创建3D场景(6)播放模型动画

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用 这篇我们讲解播放模型动画 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"> <xr-node visible"{{sec6}}"><xr-light type"ambient&qu…

【Qt学习】了解Qt文件系统 + 利用QFile类实现记事本功能

文章目录 1. 前言 - 关于Qt文件1.1 QIODevice 介绍1.2 QFile 介绍1.2 打开文件的方式 2. 实例 - 记事本功能2.1 功能实现2.2 getOpenFileName() 与 getSaveFileName() 的区别2.3 效果演示 3. 资源文件 1. 前言 - 关于Qt文件 文件操作 是应⽤程序必不可少的部分&#xff0c;Qt作…

android 消息提醒

1.创建 MyBackgroundService.java 继承 Service public class MyBackgroundService extends Service {Overridepublic void onCreate() {super.onCreate();Log.i("业务服务", "开起业务服务");//调用服务后在页面手机上创建一个通知消息。if (android.os…

日本EPSON 爱普生HUD汽车抬头显示系统芯片

目前HUD产品在新车上的配装率逐年上升&#xff0c;预计在2025年将达到30%。那么在介绍爱普生HUD整合方案之前&#xff0c;让我们先了解一下什么叫HUD。 HUD&#xff08;Head Up Display&#xff09;中文叫抬头显示系统&#xff0c;又被叫做平行显示系统。早被应用在飞机辅助…

vue基础——java程序员版(总集)

前言&#xff1a; ​ 这是一个java程序员的vue学习记录。 ​ vue是前端的主流框架&#xff0c;按照如今的就业形式作为后端开发的java程序员也是要有所了解的&#xff0c;下面是本人的vue学习记录&#xff0c;包括vue2的基本使用以及引入element-ui&#xff0c;使用的开发工具…

Github 2024-03-28 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-28统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Jupyter Notebook项目2TypeScript项目2非开发语言项目2Solidity项目1Go项目1Open Interpreter: 本地代码运行和自然语言界面 创建周…

大型驱动水冷负载电阻、缓冲器、滤波器和快速放电电阻

EAK业界首创双面水冷负载电阻器&#xff0c;独特的设计&#xff0c;用户更方便的串联并联使用&#xff0c;强大的水流带走更多因充放电带来的热量。AlN高可靠性氮化铝基板保证了热膨胀不会影响电阻的工作。 液冷电阻器使用水或离子水作为冷却剂。通过添加乙二醇&#xff0c;可以…

如何高效阅读嵌入式代码

大家好&#xff0c;今天给大家介绍如何高效阅读嵌入式代码&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 高效阅读嵌入式代码需要一些技巧和实践经验。以下是一些建议&#xff…

HarmonyOS入门笔记--页面和自定义组件生命周期

文章目录 页面和自定义组件生命周期页面生命周期组件生命周期生命周期的调用时机 页面和自定义组件生命周期 生命周期流程如下图所示&#xff0c;下图展示的是被Entry装饰的组件&#xff08;首页&#xff09;生命周期。 自定义组件和页面的关系&#xff1a; 自定义组件&…

EdgeGallery开发指南

API接口 简介 EdgeGallery支持第三方业务系统通过北向接口网关调用EdgeGallery的业务接口。调用流程如下图所示&#xff08;融合前端edgegallery-fe包含融合前端界面以及北向接口网关功能&#xff0c;通过浏览器访问时打开的是融合前端的界面&#xff0c;通过IP:Port/urlPref…

机器学习——聚类算法-KMeans聚类

机器学习——聚类算法-KMeans聚类 在机器学习中&#xff0c;聚类是一种无监督学习方法&#xff0c;用于将数据集中的样本划分为若干个簇&#xff0c;使得同一簇内的样本相似度高&#xff0c;不同簇之间的样本相似度低。KMeans聚类是一种常用的聚类算法之一&#xff0c;本文将介…

反应式编程(二)什么是粘包、拆包?如何解决?

目录 一、粘包、拆包介绍1.1 什么是 TCP 协议&#xff1f;1.2 什么是粘包、拆包&#xff1f;1.3 粘包、拆包的四种情况1.4 粘包、拆包的原因1&#xff09;TCP协议中的滑动窗口机制2&#xff09;传输层的 MSS 与链路层的 MTU3&#xff09;TCP协议中的 Nagle 算法4&#xff09;应…

布隆过滤器详讲

本文旨在讲解布隆过滤器的原理以及实现方式&#xff0c;希望通过本文能使读者对布隆过滤器有一定的认识&#xff01; 一、布隆过滤器的引入 在讲解布隆过滤器之前&#xff0c;我们还是先提及一下前面讲的位图行&#xff0c;位图可以处理大量的数据&#xff0c;广泛用于查找等…

LoadBalance 负载均衡服务调用

前身:Ribbon LB负载均衡(Load Balance)是什么 简单的说就是将用户的请求平摊的分配到多个服务上&#xff0c;从而达到系统的HA&#xff08;高可用&#xff09;&#xff0c;常见的负载均衡有软件Nginx&#xff0c;LVS&#xff0c;硬件 F5等 spring-cloud-starter-loadbalancer组…

【独立开发前线】Vol.23 这个卖Excel课程的网站,月访问量14.5万,年销售额超过200万美金

今天要给大家分享的案例网站是&#xff1a;Miss-Excel 网址是&#xff1a;Miss Excel 这是一个专门销售Excel课程的网站&#xff0c;网址一共有18个系列的视频课程&#xff0c;最便宜的44美金&#xff0c;最贵的1197美金。所有的课程都是网站的创始人Kat Norton录制的&#xf…

C语言文件操作详解

文件是什么 在我们日常使用的电脑上我们在电脑磁盘上会看到许许多多的文件夹&#xff0c;那里面的东西其实就是文件&#xff0c;为什么我们要使用文件&#xff1f;那是因为我们的电脑肯定会要用来存储东西的&#xff0c;如果没有文件&#xff0c;那么我们的东西都全部存放在内…