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

论文: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.xdnf.cn/news/1522941.html

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

相关文章

缓存分布式一致性问题

缓存一致性问题发生的原因&#xff0c;是在更新数据时数据库和缓存数据的不一致。我们要做到保证缓存的最终一致性。如果数据需要强一致性建议直接查询数据库。 双写模式 双写模式为先写数据库&#xff0c;在写缓存。 进来两个请求&#xff0c;先执行“请求1”的操作写入数据…

装WebVideoCreator记录

背景&#xff0c;需要在docker容器内配置WebVideoCreator环境&#xff0c;配置npm、node.js https://github.com/Vinlic/WebVideoCreatorWebVideoCreator地址&#xff1a;https://github.com/Vinlic/WebVideoCreator 配置环境&#xff0c;使用这个教程&#xff1a; linux下安…

Spring Boot-自定义banner

在 Spring Boot 应用中&#xff0c;你可以自定义启动时显示的 banner。这些 banner 可以包括图形、文字或者其他形式的标识。如图所示&#xff1a; 1. 使用 banner.txt 文件 默认情况下&#xff0c;Spring Boot 使用项目的 banner.txt 文件中的内容作为启动时的 banner。你可以…

文献阅读:对区域间皮层投射神经元命运多样性的时间控制

文献介绍 文献题目&#xff1a; 对区域间皮层投射神经元命运多样性的时间控制 研究团队&#xff1a; Denis Jabaudon&#xff08;瑞士日内瓦大学&#xff09; 发表时间&#xff1a; 2021-11-09 发表期刊&#xff1a; Nature 影响因子&#xff1a; 49.9&#xff08;2021年&am…

关于电力系统的几个疑问

非电力专业人员对于电力中的某些知识不能够形成系统的认识&#xff0c;接下有空也有补充下这方面知识&#xff0c;吹水时候才有水可以吹&#xff0c;嘻嘻&#xff01;这里舍不得删掉下边chatgpt这几张图片&#xff0c;暂时先保留着。因为一直有个因为在电网里边用发电端和用电端…

EmguCV学习笔记 C# 9.3 移动检测类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

爬取图片保存为pdf

本文章想借着爬虫给大家介绍一下图片转pdf,有需要的友友们可以看看参考参考&#xff0c;有帮助到友友的可以收藏&#xff0b;关注。下面以爬取初中7年级数学上册为例给大家演示一下。网址是这个 https://mp.weixin.qq.com/s?__bizMzAxOTE4NjI1Mw&mid2650214000&idx…

智慧医院是什么?建设智慧医院的关键步骤

智慧医院是什么&#xff1f; 智慧医院是一种新型的医疗机构&#xff0c;它利用先进的信息技术、数据分析和智能化系统&#xff0c;优化医院的管理和服务流程&#xff0c;提高医疗质量和效率。在智慧医院中&#xff0c;所有的运营和管理环节都可以通过数据驱动的方式来实现优化…

Trollspeed网速悬浮窗,精简且强大

我很喜欢iOS的界面UI&#xff0c;它的设计哲学是以人为本&#xff0c;简约而不简单。不过有时候&#xff0c;我也会觉得iOS简约过头了。人类是很没安全感的动物&#xff0c;获取的信息量足够多&#xff0c;我们才会感觉到安全。 在iOS16中&#xff0c;苹果加入了电量百分比显示…

一种快速edit的方法

后端的CURD&#xff0c;通过chatgpt很容易。 前端的CURD&#xff0c;编辑操作稍微有点复杂。 我一开始的想法是编辑的时候使用一个模态框&#xff0c;但是发现不舒服&#xff0c;为了快速实现&#xff0c;我决定点击编辑的时候&#xff0c;直接打开新的页面&#xff0c;这样开…

[数据集][目标检测]街头摊贩识别检测数据集VOC+YOLO格式758张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;758 标注数量(xml文件个数)&#xff1a;758 标注数量(txt文件个数)&#xff1a;758 标注类别…

航电系统,无人机的核心!!!

一、核心组成部分 飞控系统 定义&#xff1a;无人机飞行控制系统&#xff0c;负责接收来自传感器的数据&#xff0c;并根据飞行任务指令&#xff0c;通过算法计算出无人机的姿态和位置信息&#xff0c;进而控制无人机的飞行状态。 组成&#xff1a;通常由主控制器、姿态传感…

深度学习助力病理切片虚拟组织染色|文献精析·24-09-03

小罗碎碎念 这篇文章综述了深度学习技术在生物样本虚拟组织染色领域的最新研究进展&#xff0c;探讨了其在提高病理诊断效率和降低成本方面的潜力。 作者角色作者姓名单位名称&#xff08;英文&#xff09;单位名称&#xff08;中文&#xff09;第一作者Bijie BaiElectrical an…

Flutter App名称跟随手机语言改变而改变

Android 1.修改android/app/src/main/AndroidManifest.xml中的android:lable的值为string/app_name 2.在android/app/src/main/res/values/styles.xml文件中添加App的名称&#xff0c;如果没有这个文件请自行添加。 这里说明一下&#xff0c;如果没有手机语言对应的App名称&a…

Linux之nginx部署项目【前后端分离】(外加redis安装)

nginx安装和访问 1.使用apt安装Nginx apt install -y nginx 用whereis nginx找到和nginx相关目录 nginx目录结构 /usr/sbin/nginx 服务文件 /etc/nginx 配置目录 /usr/share/nginx/html 发部项目 服务名: nginx.service ps -ef | grep nginx apt install -y net-tools …

kafka及异步通知文章上下架

1)自媒体文章上下架 需求分析 2)kafka概述 消息中间件对比 特 性 ActiveMQ RabbitMQ RocketMQ Kafka 开 发 语 言 java erlang java scala 单 机 吞 吐 量 万级 万级 10万级 100万级 时 效 性 ms us ms ms级以内 可 用 性 高&#xff08;主从&#xff0…

c++(list)

目录 迭代器 sort(随机迭代器)​编辑 list(双向迭代器) vector(随记迭代器) find(input迭代器--只读--可传任意类型迭代器) ​编辑 尾插 push_back/emplace_back 插入数据 删除 交换(swap) 排序 链表合并(merge) 删除(remove) 剪切(splice) 去重(un…

Opencv中的直方图(3)直方图比较函数compareHist()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 比较两个直方图。 函数 cv::compareHist 使用指定的方法比较两个密集或两个稀疏直方图。 该函数返回 d ( H 1 , H 2 ) d(H_1, H_2) d(H1​,H2​…

巧用xrename批量重命名下载的影视文件

网上下载了个电视剧&#xff0c;可是文件名比较长&#xff0c;而且是集数用中文表示的&#xff0c;排序都是乱的。期望的是&#xff1a; 1.文件名改短 2.中文的数字改成阿拉伯数字 看下原始文件名&#xff1a; 期望将文件名改短&#xff0c;例如&#xff1a; 修改前&#xff…

Golang环境安装、配置详细

Windows下安装Go开发环境 点我下载 Windows配置Go环境变量 出现工具install失败时&#xff0c;切换其它代理 # 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOP…