人工智能与影视研究整理

来自人工智能助力教育知识百科
Xuexf讨论 | 贡献2022年6月18日 (六) 12:42的版本 一对一的人脸替换方法
跳转至: 导航搜索
网站首页 | 百科首页 | 3D虚拟世界 | 音乐与人工智能 | 人工智能机器人 | 知识百科 | 关于我们
背景知识 | DeepFaceLab | 研究整理

人脸替换

人脸替换(Face Swapping),是指用人物 A 的面部替换目标图像或视频中人物 B 的面部,使结果中的人物具有 A 的身份,并保持 B 的面部属性,包括表情、姿态、肤色、光照等。

人脸替换定义.png

人脸替换可以应用在:1)替换图像中的人脸以保护目标人物的隐私,但又不破坏原图的完整性; 2)可以应用于娱乐,比如将某个经典的电影桥段中的主角替换为搞笑明星,产生滑稽效果;3)将影视作品中某演员面部替换为其他人,保持作品的合法和完整。

此处约定人脸替换中用于替换的人脸为源人脸(src),被替换的目标图像中的人脸为目标人脸(dst)。人脸替换的方法可分为三类:(1)基于图像编辑的方法;(2)基于三维模型的方法;(3)基于深度学习的方法。

基于图像编辑的人脸替换

早期的人脸交换采用图像编辑的方法,在建立好的人脸库中寻找姿态和光照与目标人脸相似的源人脸,利用泊松融合等方法进行融合。这种方法无法指定源人脸,只能应用到隐私保护上。为了实现指定人脸的替换,一些方法利用面部关键点对源人脸进行形变以匹配目标人脸。基于图像编辑的方法有立体感和真实感缺失、光线难以匹配等问题。

基于三维模型的人脸替换

Blanz 等人利用3DMM从单张图得到源人脸的三维模型估计,用估计的目标图像的渲染参数对源人脸的三维模型进行重新渲染,将渲染后的人脸融合到目标图像,在合成过程中需要手动进行对齐和面部区域的标记。Cheng 等人提出了一种三维表情估计算法用来使源人脸表情匹配目标人脸,并对形变后的人脸模型进行重新光照以保证替换后源人脸与目标背景的一致性。三维模型的不足在于从二维图像估计三维模型和光照条件本身是病态的,难以处理复杂的光照、遮挡等问题,且比较繁琐,自动化程度低。

基于深度学习的人脸替换

基于深度学习的人脸替换是比较流行的方法,如Deepfakes、FaceSwap、FaceShifter、DeepFaceLab、SimSwap等。从笔者看来,基于深度学习的方法又可以分为可以进行任意人脸替换的方法和一对一的替换方法。一对一人脸替换是指模型训练好之后只能将输入人脸替换成特定身份的人脸。任意人脸替换是指模型训练完成后,给定任意两张人脸图像,都能够以其中一张为源图像、另一张为目的图像进行替换。

一对一的人脸替换方法

DeepFaceLab

论文:https://arxiv.org/abs/2005.05535

代码:https://github.com/iperov/DeepFaceLab

DeepFaceLab的网络基于自编码器结构,以传统的DF结构为例进行分析(如下图所示)。整体分为编码器Encoder、中间层Inter、解码器Decoder三部分。编码器为一系列降采样的卷积模块;中间层为两层全连接层;解码器为一系列升采样的反卷积模块。

DFL-DF结构.png

src和dst共用编码器、中间层,分用解码器。训练时src和dst交替输入,将图像进行随机扭曲,通过编码器、中间层、各自的解码器,最后得到还原的非扭曲图像。在预测时将dst输入,通过编码器、中间层以及src的解码器,得到换脸之后的结果。

关于自编码器换脸的原理,可以解释为:编码器将人脸图像进行编码,得到人脸的抽象表示,编码器训练理想的情况下,可以把人脸编码成一个与身份无关的向量。输入解码器后还原为对应的人脸,这种情况下相当于人脸的身份、细节信息存储在对应的解码器中。比如src的解码器可以将向量还原为src,dst的解码器可以将人脸还原为dst。

为什么训练时要扭曲图像?一种说法是为了增强编码器的编码能力;另一种说法是可以把dst理解为扭曲之后的src,这样经过src的还原路径就可以得到一张src的人脸。个人认为第一种说法靠谱一点,因为不扭曲图像进行训练也可以进行换脸。

任意人脸替换