查看: 6075|回复: 16

【进阶文章】Ai换脸基础逻辑浅析

[复制链接]

1万

积分

372

帖子

8529

符石

玉皇大帝

Rank: 16Rank: 16Rank: 16Rank: 16

积分
13589

灌水之王论坛元老咸鱼勋章

发表于 2023-11-11 23:01:03 | 显示全部楼层 |阅读模式
注:本文仅作技术逻辑参考,不限于deepfacelab

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

%E4%BA%BA%E8%84%B8%E6%9B%BF%E6%8D%A2%E5%AE%9A%E4%B9%89.png

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

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

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

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

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

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

DFL-DF%E7%BB%93%E6%9E%84.png

src和dst共用编码器、中间层,分用解码器。训练时src和dst交替输入,将图像进行随机扭曲,通过编码器、中间层、各自的解码器,最后得到还原的非扭曲图像。损失函数采用SSIM + MSE,还有一个patch discriminator作为选项产生对抗损失。
在预测时将dst输入,通过编码器、中间层以及src的解码器,得到换脸之后的结果。

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

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

论文中还提出了一种共用编码器、解码器,分用中间层的结构,说是可以提升光影效果,但经过实测一般,而且会使还原出来的人仍保留部分dst的特征,不那么像src。

基于自编码器的改进

Disney-HighRes.png

网络结构如上图所示,在单编码器-双解码器基础上,加上了更多身份的解码器,成了单编码器-多解码器结构,论文中称之为multi-way comb network。除此之外还提到了一种步进训练的方式,最终得到了1024*1024的高质量换脸结果。

任意人脸替换风格迁移
Korshunova等人将姿态和表情视为内容,将身份视为风格,基于风格迁移的思路,通过卷积神经网络实现了人脸替换。损失函数采用内容损失、风格损失、光线损失(通过一个光照网络计算)和一个控制整体方差的正则项。下面是论文中的网络结构:

800px-Faceswap_by_style_transfer.png

RSGAN

RSGAN.png

简单来讲就是从一张图像提取人脸,一张图像提取头发,在隐空间把它们组合在一起。这个不太算严格的换脸,更多的是人脸图像编辑,还实现了人脸的属性编辑。

FSNet

FSNet.png

设计了两个网络,一个编解码网络,一个基于U-Net的生成网络。用编解码网络来提取人脸的隐编码以及分割图,将背景部分和人脸编码输入生成网络,实现了人脸替换。

IPGAN

IPGAN.png

从一张人脸图像提取identity,另一张人脸图像提取attributes,输入生成器进行生成。上图的L是损失,具体的定义见论文。

FSGAN

FSGAN.png

同时实现了人脸替换和人脸驱动两个任务。提出了一种插值方法来解决不同角度的问题。

FaceShifter

FaceShifter.png

FaceShifter-hear-net.png

用其提出的AEI-Net(Adaptive Embedding Integration Network)进行多层次的属性编码以及自适应融合, 解决了源对象和目标对象之间面部照明和脸型不一致的问题,用 HEAR-Net(Heuristic Error Acknowledging Refinement Network)通过自监督的方式解决了面部遮挡物保留的问题。

UniFaceGAN

UniFaceGAN.png

可以完成人脸替换、人脸重演(face reenactment)任务,还可以进行身份、表情、属性的解耦。
提出了一种新的基于重心坐标插值的光流损失;提出了一种区域感知条件归一化(RCN)层,以空间感知的方式调制解码过程中的特征,从而产生更真实的输出。

One Shot Face Swapping on Megapixels

MegaPixels.png

把人脸图像分成不同层次的表示,对高层表示应用迁移模块,最后将迁移后的表示输入到StyleGAN2的生成器,生成逼真的人脸替换结果。

One-stage Context and Identity Hallucination Network

One-stage_Context_and_Identity_Hallucination_Network.png

通过幻觉图(Hallucination map)来区分人脸区域和周围区域,并有效学习特征,还设计了一种新的重建损失和swap block,值得关注。属于单阶段的换脸,主要解决训练-合成这种两阶段边缘产生伪影的问题。

SimSwap

SimSwap.png

主体基于自编码器的架构,加入了ID注入模块,在隐空间将新的人脸的身份信息注入,再进行解码,完成任意人脸的替换。

评分

参与人数 1金钱 +1 收起 理由
独孤求败 + 1 很给力!

查看全部评分

Zhatv换脸论坛免责声明
全站默认解压密码:zhatv.cn
【Zhatv】论坛里的文章仅代表作者本人的观点,与本网站立场无关。
所有文章、内容、信息、资料,都不保证其准确性、完整性、有效性、时效性,请依据情况自身做出判断。
因阅读本站内容而被误导等其他因素所造成的损失责任自负,【Zhatv】不承担任何责任。
通用直播丹代练

QQ:1453174

1328

积分

73

帖子

319

符石

化神丹师

Rank: 5

积分
1328
发表于 2023-11-12 06:13:22 | 显示全部楼层
有学到了,感谢分享!太牛了!
回复

使用道具 举报

2908

积分

84

帖子

610

符石

化神丹师

Rank: 5

积分
2908

热心会员突出贡献

发表于 2023-11-12 19:15:26 | 显示全部楼层
长见识了,sd也可以加进去,图片换脸或者去衣,用这个效果往往是杠杠的
回复

使用道具 举报

1901

积分

99

帖子

456

符石

化神丹师

Rank: 5

积分
1901
发表于 2023-11-12 22:55:44 | 显示全部楼层
QQ截图20231104081257.png QQ截图20231104080320.png QQ截图20231104080518.png QQ截图20231104080047.png

楼主,你好啊。部分landmark错乱的切脸可以用于专用模型训练吗?
有遮挡的切脸太多了,如果都删掉,会缺少很多特别的表情。
特别是吃东西的表情,如果不是在吃东西,根本不会有这个表情,
所以想将这部分切脸利用起来
画好遮罩的情况下,这些切脸是不是可以用于训练啊
回复

使用道具 举报

2651

积分

147

帖子

566

符石

化神丹师

Rank: 5

积分
2651

灌水之王

发表于 2023-11-12 23:45:26 | 显示全部楼层
学到了 支持五折
回复

使用道具 举报

5968

积分

87

帖子

4656

符石

天仙丹师

Rank: 8Rank: 8Rank: 8Rank: 8

积分
5968

土豪勋章

发表于 2023-11-13 18:25:48 | 显示全部楼层
ntremok 发表于 2023-11-12 22:55
楼主,你好啊。部分landmark错乱的切脸可以用于专用模型训练吗?
有遮挡的切脸太多了,如果都删掉,会缺 ...

实在缺的话可以使用

评分

参与人数 1金钱 +1 收起 理由
ntremok + 1 很给力!

查看全部评分

回复

使用道具 举报

1901

积分

99

帖子

456

符石

化神丹师

Rank: 5

积分
1901
发表于 2023-11-13 18:33:50 | 显示全部楼层
davio 发表于 2023-11-13 18:25
实在缺的话可以使用

好的,感谢回复
回复

使用道具 举报

2511

积分

198

帖子

179

符石

化神丹师

Rank: 5

积分
2511

最佳新人热心会员

发表于 2023-11-14 14:28:42 | 显示全部楼层
学习了,菜鸟摸索中。。。
回复

使用道具 举报

413

积分

10

帖子

151

符石

金丹师

Rank: 3Rank: 3Rank: 3

积分
413
发表于 2023-12-11 00:11:38 | 显示全部楼层
学习了!
回复

使用道具 举报

634

积分

17

帖子

293

符石

元婴丹师

Rank: 4Rank: 4Rank: 4Rank: 4

积分
634
发表于 2023-12-26 10:48:08 | 显示全部楼层
太专业了可
回复

使用道具 举报

小黑屋|ZhaTV ( 滇ICP备15003127号-4 ) |网站地图

GMT+8, 2024-11-23 18:04

Powered by Zhatv.cn

© 2022-2023

快速回复 返回顶部 返回列表