干货!具有三维感知的换脸算法

news2024/11/25 8:21:47

点击蓝字

23c0f45e25ae2f05f635746c5feb1b22.jpeg

关注我们

AI TIME欢迎每一位AI爱好者的加入!

作者介绍

163845f64fba8d13537f5e31e7bcf640.png

李逸轩

上海交通大学2022级硕士研究生,研究兴趣主要是三维人脸生成

报告题目

具有三维感知的换脸算法

内容简介

AI换脸旨在将一张给定目标图片中的人脸五官替换成源图片中的另一个人,其在影视制作、隐私保护等领域有着广泛的应用。以往的换脸算法研究往往忽略了人脸的3D特性,仅以2D图像处理的角度生成单一视角下换脸结果。针对这一问题,本文提出了首个能生成多视角结果与几何形状的换脸框架3dSwap。具体来说,我们设计了一个伪多视角的优化方法,通过将输入的2D图片映射到3D生成模型的隐空间中来提取人脸几何与纹路先验;而后,我们提出使用一个参数自适应的插值模块直接在隐空间中获取对应换脸结果的隐码,有效地完成了身份信息的迁移。与现有方法相比,3dSwap在权威的高清人脸数据集CelebA-HQ上取得了最好的身份迁移准确性。

代码链接:https://lyx0208.github.io/3dSwap

01

Background

Face swapping

Face swapping,即换脸,它的问题定义是:给定两张人脸的图片,将其中一张人脸的五官迁移到另一张人脸上,并保留原图中五官以外的部分,例如脸型、肤色、发色等。这两张照片中提供五官的人脸照片,我们称之为source image,而被换脸的照片则称之为target image。

65a921fb61768905fb4ec4d9f3acb744.png

换脸算法是计算机视觉领域一个重要且历史悠久的研究方向,一些研究者在2000年左右便开始涉及这一方向。对于一张照片是否被换过脸的检测,我们称之为face forgery detection,也是计算机视觉领域一个热门的研究问题。

Existing face swapping approaches

现有的换脸算法大致可以分为两类:基于3D模型的换脸算法和基于对抗生成网络的换脸算法。早期的换脸算法都属于第一类,他们大多将输入的人脸照片fit到一个参数化的人脸模型(例如3DMM)上,再进行换脸。2014年,对抗生成网络被提出以后,研究者便将其引入到了换脸算法的领域中,并取得了较好成果。由于计算资源的限制,大多基于GAN的换脸算法生成的结果的分辨率都在256*256或512*512的分辨率,近期的一些工作将GAN反演(GAN inversion)与换脸相结合,利用能生成高分辨率人脸的预训练GAN模型来生成高清换脸结果。

93df1b62a36f9136549efd95a7a201e2.png

Problems of existing approaches

这两大类换脸算法中,基于3D模型的方法更多地考虑了人脸几何信息,但这些参数化人脸模型提供的脸部纹路较为有限,生成的换脸结果往往较为模糊。而基于GAN的方法由于仅从2D照片中提取特征,更多地考虑了人脸纹路信息而没有很好地利用几何先验,在一些输入照片人脸角度差异较大的情况下可能生成的结果不够理想。因此,我们思考是否可以设计一种换脸算法,同时考虑几何与纹路先验,这也是我们本篇文章的研究动机。

Challenges of 3D-aware face swapping task

但是想要实现一个3D-aware的换脸算法,我们需要解决以下两大挑战:

1)如何从单一视角的输入照片中同时提取几何与纹理先验?

2)如何利用这些先验来实现一个3D-aware的换脸?

02

Method

我们回到之前提出的两个问题上。首先是:如何从单一视角的输入照片中同时提取几何与纹理先验?针对这一问题,我们给出的解决方案是:设计一个3D GAN反演的框架,将输入的2D照片投影到3D-aware生成模型的隐空间中,并将得到的隐码作为先验信息。在设计这样一个3D GAN inversion的框架时,我们需要考虑到其与常规的2D GAN inversion的不同点。以下是2D GAN inversion和3D GAN inversion的表达形式,我们可以注意到其唯一的区别在于2D GAN模型是直接使用w来生成结果,而3D GAN的输入除了w之外还有相机参数p。

a870e4c3fb19a9f6020f074fdb3a77f5.png

这一问题最直接的解决方案就是使用大量的数据集,用同一个人不同视角的图片来训练我们的inversion网络,但是目前来看这样的数据集是稀有的。

Pseudo-multi-view train strategy

为解决这一问题,我们设计了一个伪多视角的训练框架来训练一个learning-based的3D GAN inversion模型。此外,我们额外采样了一个随机的相机参数d hat,并且合成了input x,在d hat下的重建结果x hat,作为输入图片在其他视角下的伪输入,并将这一输入再次送到E-G的结构中。

36198cd2e9389302ee5d0b07a2b3d44f.png

第二个问题:如何利用这些先验来实现一个3D-aware的换脸?我们的解决方案是:设计一个基于latent code的换脸算法计算对应换脸结果的隐码,并使用预训练好的3D GAN直接合成换脸结果。

990e9aa3cf74c09003f28ea5ec0cebd9.png

由于latent code包含了人脸所有的信息,而换脸的结果也是两个人脸的某一种中间状态,一个很直接的思路就是使用插值来获得对应换脸结果的隐码。而受之前提到style mixing的启发,较粗糙的style能控制脸部朝向、脸型、发型等high-level的特征,较精细的style控制发色等细节,而这些部分正是换脸中target image不需要被改变的部分,于是我们在插值的基础上将style mixing与插值相结合,保留target粗糙和精细的部分,只在代表五官的中间部分进行插值。插值的表达式为:

c7bd32c805c49bbcd03b274298899107.png

由于3D GAN使用NeRF的方式来渲染最终结果,其inversion质量与直接的2D生成不可避免的有一些差距,同时基于隐码插值的换脸思路还是在一定程度上会对非五官的区域造成一些影响。受pivot tuning inversion的启发,我们设计了一套联合参数优化的方法在测试时微调预训练EG3D的参数,同时增强inversion质量和face swapping的表现。

最后,在得到微调参数以及对应的换脸结果之后,我们就可以去合成任意视角下的换脸结果。下图是我们训练的流程图。

204e3b39fe5a53d4a4dd600b602961f0.png

03

Experiments

我们的实验数据集主要来自CelebA-HD,下面的实验结果可以证明我们的算法在很多具有挑战的条件设定下的性能。下图中,在性别、年龄、肤色、打光角度有很大差异的情况下,换脸的效果都很好,并且id similarity这一定量指标会比2D方法更好。

20baf8070f0fd8a510e4da90857e58fd.png

下图是与近些年效果较好的2D换脸方法的对比。结果显示,我们的方法在迁移之后与五官的相似性是最好的,能够较好地保留五官的细节。

a6c60151b907c01f4c7f8a965882af66.png

下图是多视角下的换脸结果,可以看到,不论是在源图片视角还是目标图片视角,我们都能很好地看到原图的五官特征,这说明我们的方法可以生成多视角的结果。

9445a96b07dfe5da7e7bd6bb3b21abeb.png

04

Ablation Study

Effectiveness of the learning-based 3D GAN Inversion

这里主要是证明基于学习的三维GAN反演的有效性,通过对比发现我们的方法在眼睛、眼镜的细节上表现更好,并且定量的指标也是更高的。

70cc10756fd0801555598ab57ec889c4.png

4b744f8a11811f3e04885d0e51916731.png

Effectiveness of Style Mixing

下图证明了style mixing的有效性。由第三列与第四列的对比可以看出,当使用style mixing时,目标图像能够更好地保留发色、肤色等特征。

818204d6dc1695ed7d97757166bd3769.png

05

Conclusion

我们提出了首个具有3D感知的换脸框架,它

(1)通过3D GAN反演从单视角图像中同时提取几何和纹路的人脸先验

(2)使用一种独特的基于隐码的换脸算法

(3)通过一个联合的参数优化弥补了2D生成和3D渲染的之间的效果差距。

整理:陈研

审核:李逸轩

点击“阅读原文”跳转到33:11可以查看回放哦!

往期精彩文章推荐

e31be0d91d4b39db3080faaec323c078.jpeg

记得关注我们呀!每天都有新知识!

 关于AI TIME 

AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。

迄今为止,AI TIME已经邀请了1100多位海内外讲者,举办了逾550场活动,超600万人次观看。

2346116a33031039de8d97510bd6a07f.png

我知道你

在看

~

c6c80cdf74b238effbc059fb1ad61b73.gif

点击 阅读原文 查看回放!

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

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

相关文章

操作系统中的进程调度与优先级算法:理论与实践探索

前言 在计算机科学领域中,进程调度是操作系统中一个重要的组成部分,它负责决定哪个进程能够获得 CPU 的执行权,以及如何合理地分配 CPU 时间。通过合理的进程调度算法,可以提高系统的性能和响应能力。在本篇博客中,我…

ubuntu开发环境

boost介绍 Boost是一个广受欢迎的、开源的C程序库集合,提供了许多高质量和可重用的组件,涵盖了广泛的领域,如容器、算法、函数对象、日期与时间、正则表达式、文件系统、线程等。Boost旨在通过提供开发人员友好的C工具和组件来增强C的功能。…

阿里云主机详解:ECS/轻量/虚拟主机/GPU/裸金属/云电脑详解

阿里云云主机分为云虚拟主机、云服务器ECS、轻量应用服务器、GPU云服务器、弹性裸金属服务器、专有宿主机、FPGA云服务器、高性能计算E-HPC、无影云电脑等,阿里云百科来详细说下阿里云云主机详解: 目录 阿里云云主机 云服务器ECS 轻量应用服务器 云…

博泰应宜伦:把Vision Pro放大二十倍,就是未来汽车的终极形态

作者 | Amy 编辑 | 德新 新能源是上半场,智能化是下半场。 而随着智能汽车发展,智能座舱也不断革新,过去智能座舱的各项功能全面开花,竞争愈演愈烈,未来的座舱将如何被定义? 6月15日,博泰车联…

微信小程序手机号授权登录

文章目录 小程序端服务端注意事项 微信小程序,手机号授权登录需求。 大体流程是这样的: 小程序端使用 getPhoneNumber 向微信平台获取授权通过微信授权后,小程序端接收微信授权后的回调小程序携带微信的回调请求自己的服务端服务端请求微信获…

QML 模型和视图

模型/视图架构简介 使用 QML 时,有些情况下需要使用模型视图结构显示一些列表等控件,比较好的方式是用 Python 接管数据模型部分,方便处理数据;QML 和 JavaScript 负责前端部分,实现前端和后端的分离。 MVD 简介 Mo…

C# 特性(一)——什么是特性

目录 什么是特性 Serializable DllImport Obsolete Conditional Attribute类 自定义特性 AttributeUsage的使用例子 特性非常常见,官方解释为: 特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法…

【批处理DOS-CMD命令-汇总和小结】上网和通信相关命令-查看路由表,查看网卡GUID UUID(route、getmac)

一、查看、编辑路由表(route) 首先我们看看route命令的帮助信息,可以发现这个命令其实就是用来查看路由表、以及添加(或编辑、删除)路由项目的。 路由项目是指操作系统对数据包的导向规则,往往包括目标IP…

《统计学习方法》——条件随机场#习题解答#

引言 这是统计学习方法第十一章条件随机场的阅读笔记,包含所有公式的详细推导。 条件随机场(conditional random field,CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。 建议先阅…

【计算机网络】为什么是TCP四次挥手,可以变成三次吗?

【计算机网络】为什么是TCP四次挥手,可以变成三次吗? 文章目录 【计算机网络】为什么是TCP四次挥手,可以变成三次吗?引言TCP 四次挥手为什么 TCP 挥手需要四次呢?粗暴关闭 vs 优雅关闭 什么情况会出现三次挥手&#xf…

MySQL—SQL优化详解(下)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

FFmpeg 内存模型分析

标题 1. 内存模型图2. 分析流程3.追溯本源————源码分析3.1 AVPacket队列 什么时候生成的? 4 .AVPacket和AVFrame相关操作API5. av_read_frame源码分析 1. 内存模型图 2. 分析流程 我们解复用后,媒体流数据就会被分离开来,分别生成对应AVPacketList,然后通过av_…

BART论文解读

1 概述 全称:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension。BART来源于Bidirectional and Auto-Regressive Transformers发表时间: 2019.10.29团队:Facebook AI Paper地址​arxiv.o…

chatgpt赋能python:Python怎么求解方程

Python怎么求解方程 在数学中,求解方程是一种基本的技能。Python作为一种广泛应用于科学计算和数据分析领域的编程语言,可以帮助我们求解各种类型的方程。Python提供了多个库和函数,使得求解方程在Python中变得非常轻松。 一元方程求解 一…

Android Framework分析SystemServer进程

SystemServer进程是Android系统的核心进程,运行在Android系统启动后,负责管理和加载系统服务。本文将介绍SystemServer进程的详细结构和工作原理,并使用代码注释的方式阐述其关键部分代码。 结构: SystemServer进程的核心是Syste…

SSH基本概念,带你了解SSH

1、SSH基本概念 SSH(Secure Shell)是一种网络协议,用于在不安全的网络中安全地传输数据。它是一种加密协议,可以保护数据在传输过程中不被窃取、篡改或伪造。SSH协议最初是由芬兰的Tatu Ylonen开发的,现在已经成为了一…

Hadoop集群之模板虚拟机的安装

Hadoop集群之模板虚拟机的安装 文章目录 Hadoop集群之模板虚拟机的安装0. 写在前面1. CentOS的安装1.1 配置电脑1.1.1 进入VMware1.1.2 自定义新的虚拟机1.1.3 解决虚拟机的兼容性1.1.4 选择当前虚拟机的操作系统1.1.5 选择虚拟机将来需要安装的系统1.1.6 电脑的具体配置1.1.7 …

KUKA机器人通过示教器进行关机冷启动的具体方法演示

KUKA机器人通过示教器进行关机冷启动的具体方法演示 如下图所示,首先需要登录管理员权限,默认密码:KUKA,然后点击左上角的机器人图标进行菜单选项,找到并点击“关机”选项, 如下图所示,找到并点击“重新启动控制系统PC”, 如下图所示,此时系统提示:确实要重新启动…

chatgpt赋能python:Python生成序列的方法详解

Python生成序列的方法详解 在Python编程中,序列(Sequence)是常用的数据类型之一。序列是有序的,可以通过下标访问其中的元素。Python中有多种方法可以生成序列,下面将对常用的几种方法进行详细介绍。 利用range函数生…

2023-06-16 Android Studio 使用CMakeList编译JNI ,最简单的demo源码

一、代码结构图,代码路径https://download.csdn.net/download/qq_37858386/87913001 二、cmakedemo\app\build.gradle 加下面的代码 externalNativeBuild {cmake {cppFlags "-frtti -fexceptions"}}externalNativeBuild {cmake {path src/main/jni/CMakeL…