AI换脸的基本原理

描述

 

前不久,社交媒体平台上一款名为“蚂蚁呀嘿”的特效火爆全网,许多网友都将自己的照片导入换脸软件Avatarify中,照片便可以被算法驱动,生成一段表情夸张扭曲且跟着节奏晃动的换脸短视频。

魔幻的特效让这类的视频迅速侵袭社交平台,网友惊呼:简直就像捅了蚂蚁窝。

例如:马云、马化腾、马斯克等大佬们,正在集体演唱神曲《蚂蚁呀嘿》。

 

例如,李开复老师便友情上演了一首《Only You》。

 

这项技术可以完成在给定一张源图片和一个目标动作视频,将目标视频的表情和动作迁移到源图片上,使得源图片中的人物做出目标视频相同的表情动作。

Faceswap

  这种换脸的算法,其实有很多。   例如 Faceswap 、DeepFaceLab、Faceswap-GAN 等等。   本文以 star 量最多的 Faceswap 为例,进行说明。  

AI

算法原理

  Faceswap 是一个名为 deepfakes 的 Github 用户开源的项目。   Deepfake 就是“Deep Machine Learning”(深度学习)和“Fake Photo”(假照片)组合而成的。   早期技术可以追溯到 2018 年,当时在构建模型的时候使用了 Encoder-Decoder 自编解码架构。   而 Faceswap 算法,在此之上又引入 GAN(生成对抗网络)技术,显著提升了换脸的效果。   总体上,「Faceswap」换脸主要分为以下三个过程:  

人脸检测

特征提取

人脸转换

  人脸检测   想要替换人脸,那首先得找到人脸的位置,这就需要用到人脸检测算法。  

 

  Faceswap 算法采用了 SSD 这类比较成熟的检测框架,同于提取面部图像。   与传统人脸检测略有不同的,Faceswap 算法需要裁剪的人脸边界框(bouding box, bbox)是正方形的,同时还会适当的向外扩充一些,以保证人脸都在 bbox 内。   特征提取   检测到人脸后,需要提取人脸的特征。   首先要做的就是,人脸关键点检测,也就是 landmark。  

 

  这些关键点,抽取了人脸的表情特征,同时大致描述了人脸的器官分布。   我们可以直接通过 dlib 和 OpenCV 等主流的工具包直接提取人脸的关键点。   当然,为了取得更好的定位精度,也可以使用 CNN 训练一个人脸关键点检测模型,简单好用。   人脸转换

人脸转换的思想,就是采用自编码器的原理。   简单来讲,就是将人脸图像压缩到短向量,再由短向量恢复到人脸图像。这些短向量包含了人脸的主要信息,例如该向量的元素可能表示人脸肤色、眉毛位置、眼睛大小等等。  

AI

  所以如果我们用某个编码器学习所有人,那么它就能学习到人脸的共性;如果再用某个解码器学习特定的某个人,那么就能学习到这个人的特性。   简单而言,当我们用通用编码器编码人脸 A,再使用特定解码器 B 解码短向量,那么就能生成出拥有 A 的人脸表情,但却是 B 人脸的图像。   就好比,你摆出一个表情,我根据你睁眼的大小嘴巴咧开的大小等面部特征,模仿出你的表情。   我们表情一样,但长相不一样。   人脸转换,除了自编码器的方法,还有一种 GAN 方法。   GAN 会利用提取的人脸特征点,使用生成器直接生成对应的目标人脸图像,这跟 StyleGAN 人脸生成算法很类似,但不同的是需要生成指定表情的人脸。   在生成的图片后,会接一个判别器,判断图片的逼真程度。  

AI

  上述算法都是针对单张图片而言的,对于视频而言,就是多了一个视频拆分成图片,图片拼接成视频的过程。   DeepFakes 技术发展已久,2020 年有一篇发表的综述论文,包含了各种 DeepFakes 算法的概述,想了解更多的读者,可以去“啃”一下论文了。   论文地址: https://arxiv.org/pdf/2001.00179.pdf   预处理和后处理   大致思路就是这样,里面还有很多细节,我们称之为 Tricks ,这就需要通过阅读源码去学习了。   比如,在进行提取人脸特征之前,需要进行图像的预处理。   对数据进行规范化(Normalization),使训练的图像的分布信息尽可能相近:  

 

  训练的数据集是分为 A 数据集和 B 数据集的,如上图,A 数据集为川普,B 数据集为凯奇。   我们可以将 A 数据集(川普)加上两者数据集的平均差值(RGB三通道差值)来使两个输入图像图像的分布尽可以相近,这样我们的损失函数曲线下降会更快些。   用代码表示就是:

images_A += images_B.mean(axis=(0, 1, 2)) - images_A.mean(axis=(0, 1, 2))
  再比如,换脸之后,需要进行图像的后处理。   为了是生成的人脸效果更加,会进行诸如边缘融合、色彩均衡等处理方法。   想要了解算法背后的实现方法,那就得耐着性子看源码了。

 

最后我们再简单解释一下换脸的基本原理:提取两个例子,分为A&B,进行以下三步:1.人脸侦测和识别。2.确定变换矩阵。3.人脸替换。对于视频中的每一帧信息重复以上操作直至结束即可!

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分