【数字人】Facevid2vid:用于视频会议的一次性自由视图说话头合成

news2024/12/23 18:57:15

论文:https://arxiv.org/pdf/2011.15126

github:GitHub - zhanglonghao1992/One-Shot_Free-View_Neural_Talking_Head_Synthesis: Pytorch implementation of paper "One-Shot Free-View Neural Talking-Head Synthesis for Video Conferencing"

 

一种新颖的 3D 关键点分解方案允许在不同姿势下重新渲染说话头视频,模拟经常遗漏的面对面视频会议体验

摘要

我们模型输入目标参考图像和驱动视频来合成说话头视频。我们的运动是基于新颖的关键点表示编码的,特定身份和运动相关信息被无监督分解。该方法产生的视频质量达到了商用的H.264标准。我们的关键点表示允许用户在合成过程中旋转头部。

引言

使用深度网络而不是使用3D人类头部的图形模型。与3D模型对比,基于2D模型的方法有不少好处。

首先,它避免了3D模型的获取,这通常是费力和昂贵的

其次,基于2d的方法可以更好地处理头发、胡须等区域的合成,而获取这些区域的详细三维几何形状具有挑战性。

最后,他们可以直接合成源图像中的配件,包括眼镜、帽子和围巾,而不需要他们的3D模型。

以前的一些基于2D模型的方法,只能基于原始图像的视角合成说话头像,不能合成视角freestyle。

我们的模型通过使用一种新颖的3D关键点表示来表示视频,其中分解了特定于人的和运动相关的信息,从而实现了这种功能。关键点以及分解都是基于无监督的。使用分解,我们可以将3D变换应用于特定于人的表示来模拟头部。

贡献1。一种新颖的单次神经说话头合成方法,在基准数据集上获得了比现有方法更好的视觉质量。

贡献2。本地自由视图控制输出视频,无需3D图形模型。我们的模型允许在合成过程中改变说话人的视点。

贡献3。减少视频流的带宽。我们将我们的方法与商业H.264标准在基准对讲头数据集上进行了比较,并表明我们的方法可以实现10倍的带宽减少。

视频压缩

残差与光流的分层插值与联合编码,可以减少比特率

其他研究[53,85,91,97]侧重于使用深度网络恢复低比特率视频的质量。

与我们的工作最相关的是david - net[97],它使用来自音频流的信息来恢复有声视频。我们提出的方法在许多方面与这些作品不同,无论是在目标还是用于实现压缩的方法上。

人的脸部有内在的结构,从形状到诸如眼睛,鼻子,嘴等不同部分的相对排列。

我们的方法不能保证像素对齐的输出视频;然而,它忠实地模拟了面部运动和情绪。它也更适合视频流,因为它不使用双向或b帧。

方法

s表示一个原图片中的人物

{d1,d2,......,dN}表示一个说话驱动视频,di表示某帧,N表示总帧数。

我们的目标是生成一个视频{y1,y2,......,yN},身份特征是s,动作参考来源于di

当s是驱动视频中的一帧,叫做视频重建任务,当不源于驱动视频,叫做动作迁移任务

方法主要分为三个步骤

1)原图特征提取

2)驱动视频特征提取

3)视频生成

我们主要的成分基于无监督的方法学习一组3D关键点以及他们的分解。我们分解这些关键点为两部分:

1.模拟人物的面部表情

2.模拟人物的几何特征

当关键点被学习到之后,他们会被用于学习一个两个图像之间的映射函数,通过一组网络来实现这些步骤,并进行联合训练

 

上面的图诠释1)和2)过程

(a)从原图中,我们提取外观特征和3D 规范化关键点。我们还估计头部的姿态和由于表情引起的关键点扰动

(b)从驱动图片中,我们再次估计头部姿态和表情形变。通过再利用原图的规范化关键点,我们计算驱动的关键点。

原图特征提取

         合成一个说话人物需要知道人物的外观,例如皮肤和眼睛颜色。如(a)所示,我们使用了一个3D外观特征提取网络F将原图像s映射到3D外观特征体fs。不像2D特征图,fs有三个空间维度:宽度,高度,深度。映射到3D特征是一个很关键的步骤。它允许我们在三维空间中操作关键点,以便在合成过程中旋转和平移说话头。

        我们使用一个规范化的3D关键点检测网络L提取一组K个3D关键点xc,k属于R3。我们设置K=20。值得注意的是这些关键点是基于非监督学习的并且不同于普通的面部关键点。仅仅带有个人特征,没有表情和姿态。

        紧接着,我们从图片中提取姿态和表情信息。我们使用一个姿态估计网络H估计s中人物的头部姿态,由一个旋转矩阵Rs属于R3x3和一个平移向量ts属于R3。除此之外,我们使用一个表情形变估计网络\Delta去估计一组K个3D形变\delta_{s,k},这些关键点的形变来源于神经网络表示。H和\Delta提取图像中动作相关的几何信息。我们将L提取的身份信息与H、∆提取的运动相关信息相结合,通过变换T得到源三维关键点xs,k:

 最后的关键点是特定于图像的,包含个人签名、姿势和表情信息。

上图是关键点计算的可视化过程 

 3D关键点分解至关重要。它致力于关键点的先验分解:几何特征、头部姿态、表情。它有助于学习可操作的表示,并将我们的方法与先前的2D基于关键点的神经方法不同。值得注意的是,我们不同与FOMM,我们不需要计算雅可比矩阵。雅可比矩阵表示如何通过仿射变换将关键点周围的局部补丁转换为另一图像中相应的补丁。我们的模型没有明确地估计它们,而是假设头部大部分是刚性的,并且局部斑块变换可以通过Js=Rs直接从头部旋转中得到。避免估计雅可比矩阵使我们能够进一步减少视频会议应用的传输带宽,详见第5节。

上图诠释3) 过程

 我们使用源图关键点和驱动图片的关键点来估计K个光流场,w_{k}。这些光流场可以用来对原图特征fs做变形处理。m和w_{k}的线性结合产生组合光流场w,它将用于对3D原特征做变形。最后,生成器G将形变特征转换为输出图像。

 驱动视频特征提取

 我们用d表示{d1, d2,…,dN}中的坐标系,作为单独的帧以相同的方式处理。为了提取运动相关信息,我们使用头部姿态估计器H得到Rd和td,并应用表情变形估计器\Delta获得\delta_{d,k},如图3所示。

现在,我们不再使用L从驱动图像d中提取规范的3D关键点,而是重用从源图像s中提取的xc,k。这是因为输出图像中的人脸必须与源图像s中的人脸具有相同的身份,不需要再次计算它们。最后,结合身份相关信息和运动相关信息计算驾驶图像d的驾驶关键点,方法与获取源关键点的方法相同:

 我们将这个应用到驱动视频的每一帧,每一帧都可以简洁的表示为Rd,td,和\delta_{d,k}。这个简洁地表示对于低宽带会议非常有用。在第5节中,我们将介绍一个熵编码方案来进一步压缩这些数量来减少宽带使用。

 我们的方法允许在合成过程中更改3D姿态。让Ru和Tu分别表示用户指定的旋转和平移矩阵。那么最终输出图像的头部姿态Rd<-RuRd和td<-tu+td。在视频会议中,我们可以自由的改变人物的姿态不需要关注这个原来的视角。

视频合成

如图5所示,我们通过变形原特征并经过生成器G产生结果图y。 该形变近似于从s到d的非线性变换。它为合成任务重新定位源特征。

为了获得所需的形变函数w,我们采用自下而上的方法。我们首先使用一阶近似[68]计算由第k个关键点引起的形变流,该近似仅在关键点附近可靠。在获得所有K个翘曲流之后,我们应用它们中的每一个来翘曲源特征体。利用运动场估计网络m,对k个扭曲特征进行聚合以估计流组成掩码m。该掩码指示在每个空间3D位置使用K流中的哪一个。我们使用这个掩码来组合Kflows以产生最终的flow w。操作的细节在附录A.1中给出。

训练

 我们使用一个说话的视频数据集来训练我们的模型,每个视频都包含一个人。对于每个视频,我们采样两帧:一帧作为源图像s,另一帧作为驱动图像d。我们通过最小化后续损失来训练网络F、∆、H、L、M和G

 简而言之,前两项确保输出图像看起来与地面真实情况相似接下来的两个项强制预测的关键点是一致的,并满足一些关于关键点的先验知识最后两项约束了估计的头部姿态和关键点扰动。我们将在下面简要讨论这些损失,并将实现细节留在附录A.2中。

 

 

实验 

 实现细节

 网络结构和训练超参数在补充材料3中。

数据集

 我们的评估基于VoxCeleb2[13]和talkinghead - 1kh,这是一个新收集的大规模谈话视频数据集。它包含180K视频,通常具有比VoxCeleb2更高的质量和更大的分辨率。详情见附录B.1。

说话头像合成 

 网络

我们将我们的神经说话头模型与三种最先进的方法进行了比较:FOMM[68]、few-shot vid2vid (fs-vid2vid)[82]和双层神经avatar (bilayer)[92]。我们使用VoxCeleb2上发布的预训练模型进行双层[92],并在相应的数据集上从头开始重新训练其他模型。由于双层不能预测背景,我们在做定量分析时减去背景。 

 评价指标

我们评估了一个综合模型:1)使用L1、PSNR、SSIM/MS-SSIM的重建信度,2)使用FID的输出视觉质量,以及3)使用平均关键点距离(AKD)的语义一致性。有关性能指标的详情,请参阅附录B.2。

 相同的身份重建

我们首先比较了源图像和驱动图像为同一人的人脸合成结果。定量评价见表1。可以看出,我们的方法在两个数据集的所有指标上都优于其他竞争方法。为了验证我们的卓越性能不是来自于更多的参数,我们训练了另一个比我们的模型更大的具有双倍过滤器大小的大型FOMM模型(FOMM- l)。我们可以看到,放大模型实际上损害了性能,证明简单地把模型做大并没有帮助。图6和7显示了定性比较。该方法能更真实地再现车辆的驾驶动作。

不同身份运动迁移

接下来,我们比较源图像和驱动图像来自不同人的结果(交叉身份)。从表2可以看出,与其他方法相比,我们的方法获得了最好的结果。图8比较了不同方法的结果。可以看出,我们的方法在保持原始身份的同时,生成了更加真实的图像。对于交叉同一性运动传输,有时使用相对运动是有用的[68],其中仅传输驾驶视频中相邻两帧之间的运动差异。我们在附录B.3中报告了使用相对运动的比较。

 面部重定向

网络

我们使用最新的人脸正面化方法:pixel2style2pixel (pSp)[64]和Rotate-and-Render (RaR)[99]对我们的talking-head模型的人脸重定向能力进行基准测试。pSp将原始图像投影到潜在代码中,然后使用预训练的StyleGAN[1]合成前置图像。RaR采用3D人脸模型对输入图像进行旋转,并以不同的姿态重新渲染。 

评价指标 

        结果通过两个指标进行评估:身份保存和头部姿势角度。我们使用预训练的人脸识别网络[59]来提取高级特征,并计算旋转后的人脸与原始人脸之间的距离。我们使用预训练的头部姿态估计器[66]来获得旋转面部的头部角度。对于旋转后的图像,如果它与原始图像的恒等距离在某个阈值内,并且/或者它的头部角度在期望角度的一定公差范围内,我们认为它是一个“好”图像。

        我们使用表3中每种方法的度量报告了“好”图像的比例。图9为示例比较。可以看出,虽然pSp总是可以正面化,但通常会丢失身份。由于RaR采用了3D人脸模型,因此产生了更吸引人的视觉效果,但在面部内部区域之外存在问题。此外,两种方法都存在时间稳定性方面的问题。只有我们的方法才能实际地处理输入。 

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

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

相关文章

ip地址的管理方法有哪些?是什么

IP地址的管理方法有哪些&#xff1f;随着互联网的快速发展&#xff0c;‌IP地址作为网络设备的唯一标识&#xff0c;‌其管理显得尤为重要。‌有效的IP地址管理不仅可以确保网络的稳定运行&#xff0c;‌还能提高网络资源的利用率。‌本文将深入探讨IP地址的管理方法&#xff0…

网银U盾:财务眼中钉,会计肉中刺!

随着网银U盾的广泛应用&#xff0c;虽然使得财务安全有了大幅提升&#xff0c;但企业财务管理效率却越来越低了。 近期&#xff0c;我们发现&#xff0c;高达85%的企业在采购我们的USB Server时&#xff0c;都是出于网银U盾反复插拔的繁琐、效率低下、管理困难等原因。 想象一…

sqli-labs靶场通关攻略(五十一到六十关)

sqli-labs-master靶场第五十一关 步骤一&#xff0c;尝试输入?sort1 我们发现这关可以报错注入 步骤二&#xff0c;爆库名 ?sort1 and updatexml(1,concat(0x7e,database(),0x7e),1)-- 步骤三&#xff0c;爆表名 ?sort1 and updatexml(1,concat(0x7e,(select group_conc…

CentOS 7 docker 部署遇到内网通,外网不通 问题

CentOS 7 docker 部署遇到内网通&#xff0c;外网不通 问题 [rootlocalhost ~]# systemctl status network ● network.service - LSB: Bring up/down networkingLoaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)Active: failed (Result: exit-code) …

多角度解读WMS:探寻仓库管理系统的核心功能

多角度解读 WMS 仓库管理系统 1. 概述 WMS 在数字化工厂中具有举足轻重的地位&#xff0c;它不仅提高了仓储管理的效率与准确性&#xff0c;还能优化整个供应链的管理&#xff0c;支持灵活生产模式&#xff0c;并提供决策支持的关键数据。通过现代前后端技术的架构设计&#xf…

几十块的麦克风能用吗?一文看懂哪个牌子的麦克风好

无论是拍摄短视频、直播还是采访&#xff0c;说一款好的音频设备是非常重要的&#xff0c;它决定了音频质量的高低&#xff0c;如今市面上的麦克风种类也是各式各样的都有&#xff0c;价格上也是参差不齐&#xff0c;有些小伙伴问“几十块的麦克风能用吗”&#xff1f; 我觉得最…

Docker部署项目时的服务端口设置——给容器添加新端口映射

Docker给容器添加新端口映射 1 Docker安装Ubuntu22.042 创建新容器3 给容器添加端口映射3.1 查看运行的容器3.2 查看容器挂载目录3.3 停止容器3.4 停止docker服务3.5 进入容器挂载目录3.6 修改config.v2.json文件3.7 修改hostconfig.json文件3.8 启动docker3.9 启动容器 4 端口…

C语言中volatile与const关键字的深入解析

在C语言编程中&#xff0c;volatile和const是两个非常重要的关键字&#xff0c;它们各自有着独特的用途。本文将深入探讨这两个关键字的工作原理、底层实现机制以及在实际开发中的应用。 volatile关键字 1. 原理与作用 volatile关键字用于告诉编译器&#xff0c;所修饰的变量…

若楠带你初识OpenCV(2)--图片修改、运算,边界填充以及阈值调整

文章目录 OpenCV图片修改1. 图片缩放2. 图片打码3. 图片组合 图像运算1. 直接相加2. add()方法相加3. 权重相加 边界填充阈值调整总结 OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习库&#xff0c;它主要用于实…

Nginx负载均衡数据流分析

1、各机器ip信息 客户端IP&#xff1a;192.168.3.239 Nginx代理服务器IP&#xff1a;192.168.3.241 服务端IP&#xff1a;192.168.3.238 2、架构图&#xff08;略&#xff09; 3、 下图是在服务端上面的抓包分析。 下图是在客户端上面的抓包分析&#xff1a; 下图是在代理服务…

32 配置多路由的静态路由

配置多路由的静态路由 一、多路由器的静态路由配置 ​ 配置网络拓扑配置接口IP地址并通过静态路由的配置实现全网的互通 R0&#xff1a; # 进入特权 Router>enable# 进入全局 Router#configure terminal # 进入接口 Router(config)#interface fastEthernet 0/0# 配置IP R…

如何使用 Mistral 和 Llama2 构建 AI 聊天机器人

开始使用 Mistral 让我们从 Mistral 7B Instruct 的 GGUF 量化版本开始&#xff0c;并使用 AutoClasses ‘AutoModelForCausalLM’ 之一来加载模型。AutoClasses 可以帮助我们自动检索给定模型路径的模型。AudoModelForCausalLM 是具有因果语言建模的模型类之一&#xff0c;这…

SpringBoot如何对接口防刷限流处理

一、API防刷限流&#xff1a; API接口限流&#xff0c;旨在预防用户过度频繁地访问特定接口&#xff0c;以及抵御潜在的恶意攻击行为&#xff0c;这些行为可能导致后端服务器承受过高的负载&#xff0c;进而引发内存资源紧张。为了有效缓解服务器面临的压力&#xff0c;确保服…

数据结构代码集训day15(适合考研、自学、期末和专升本)

本份题目来自B站up&#xff1a;白话拆解数据结构 今日题目如下; &#xff08;1&#xff09;编写算法&#xff0c;实现十进制转十六进制&#xff1b; &#xff08;2&#xff09;汉诺塔&#xff08;Hanoi Tower&#xff09;&#xff0c;又称河内塔&#xff0c;源于印度一个古老…

javascript网页设计案例,非常详细

这里我将为你提供一个详细的JavaScript网页设计案例。我们将创建一个简单的动态网页&#xff0c;包含一个可以显示当前时间的时钟和一个可以切换背景颜色的按钮。 1. HTML部分 首先&#xff0c;我们需要创建一个HTML文件来定义网页的基本结构。 <!DOCTYPE html> <h…

Python ppt

python生成ppt&#xff0c;数据源为html from lxml import html from pptx import Presentation from pptx.util import Inches from pptx.dml.color import RGBColor from pptx.enum.shapes import MSO_SHAPE# HTML代码 html_content """ <html><b…

【深度学习 transformer】使用pytorch 训练transformer 模型,hugginface 来啦

Hugging Face是一个致力于开源自然语言处理&#xff08;NLP&#xff09;和机器学习项目的社区。它由几个关键组件组成&#xff1a; Transformers&#xff1a;这是一个基于PyTorch的库&#xff0c;提供了各种预训练的NLP模型&#xff0c;如BERT、GPT、RoBERTa、DistilBERT等。它…

【陪诊系统-PC管理端】动态路由

先说说这里为什么要使用动态路由&#xff1f; 因为前面的菜单管理功能模块中&#xff0c;可以创建或修改不同权限&#xff0c;当前登录账号可以绑定不同的权限&#xff0c;不同权限能访问的功能页面不同&#xff0c;所以使用动态路由来控制。 而登录成功后&#xff0c;服务器…

Sentence-BERT实现文本匹配【对比损失函数】

引言 还是基于Sentence-BERT架构&#xff0c;或者说Bi-Encoder架构&#xff0c;但是本文使用的是参考2中提出的对比损失函数。 架构 如上图&#xff0c;计算两个句嵌入 u \pmb u u和 v \pmb v v​之间的距离(1-余弦相似度)&#xff0c;然后使用参考2中提出的对比损失函数作为…

docker 安装 rabbitmq

参考文档&#xff1a; https://hub.docker.com/_/rabbitmq/ https://www.rabbitmq.com/docs/download https://www.kuangstudy.com/zl/rabbitmq#1366643532940484610 执行下面的命令 docker run -d -it --name myrabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PA…