首页 > 编程知识 正文

微软faceswap,faceswap优点

时间:2023-05-05 01:09:26 阅读:12791 作者:2657

来自Github上的作者shaoanlu http://www.Sina.com/https://github.com/shaoanlu/face swap-gan

我最近在研究Faceswap。 随之而来的是,我们一定要了解GAN网络在工程中的使用方式。 谷歌也没有太多资料。 在Github上搜索优秀作者“shaoanlu”的工程,需要自己学习,很容易就了解了工程自述. MD。

faceswap-GAN

deepfake的auto编码体系结构中添加了Adversarial loss和Perceptual loss。 (第五章简要介绍网络是如何工作的。 关于变脸的解码-编码原理请看这里。 https://www.jiqi zhixin.com/articles/2018-05-04-2。 这篇博文介绍了学习人脸共性和个性特征的过程,其中运用了编码和解码器。

(“align”理解为校准。 可能是错的。 欢迎您的指正。 谢谢你)

链接:2018.6.6模型框架:已将SAGAN模型的自保护机制添加到GAN v2.2中。

2018.6.25新版本: faceswap-GAN v2.2发布。 此版本的主要贡献是生成真实一致的眼球运动,从而提高“脸部对齐”(face alignment )的视频质量。

2018.6.29模型框架: faceswap-GAN v2.2的输出支持各种大小的分辨率,包括64 * 64、128 * 128、256 * 256。 请通过构成参数变更对应的位置。

2018.7.25准备数据模块更新:添加了人脸视频预处理方法,即基于MTCNN的人脸检测和人脸定位。

2018.8.27提供了基于GAN v2.2的Demo

在33558www.Sina.com/Google浏览器中发表了可以训练模型的demo。 用户可以在浏览器中培训自己的faceswap-GAN v2.2。 (具体链接请用原文查看。 总之我的VPN没有打开。 ) )

http://www.Sina.com/http://www.Sina.com /

face swap _ gan _ v 2.2 _ train _ test.ipynb :

faceswap-GAN V2.2模型培训说明;

此文件还提供静止图像转换的代码;

如果需要额外生成训练图像,只需单击他提供的链接查看代码。

face swap _ gan _ v 2.2 _ video _ conversion.ipynb :

faceswap-GAN V2.2机型视频转换步骤说明;

其中介绍了“面联盟”(face alignment )使用的5点语言方法。

prep_binary_masks.ipynb :

faceswap-GAN V2.2机型培训数据预处理步骤说明;

的两个路径,由存在二进制掩码指示:/binary_masks/faceA_eyes和./binary_masks/faceB_eyes;

包含face_alignment模块。 另一种获得可选二进制掩码的方法位于名为MTCNN_video .的模块(链接)中。

mt CNN _ video _ face _ detection _ alignment.ipynb :

该模块展示了对输入视频的人脸检测和校准过程。

检测到的面部根据是否进行校准,分别存在于./faces/raw_facesa和./faces/aligned_faces两个文件中。

粗糙的二进制掩码也被生成并存在于./faces/binary_masks_eyes .中。 在上述模块之一的prep_binary_mask .ipynb中,使用这些粗糙的二进制掩码是最好的选择。

一、GAN v2.2 的更新过程的介绍:

1 .运行mt CNN _ video _ face _ detection _ alignment.ipynb从视频中分离(Extract )脸部。 手动将校准的面部移动/重命名为两个文件:/faceA/和./faceB/folders。

运行prep_binary_masks.ipynb为训练数据生成二进制掩码; 可以跳过这一步。

)1)将u

se_bm_eyes参数设置为False

              (2)使用步骤1中生成的低质量二进制掩码

       3. 运行 FaceSwap_GAN_v2.2_train_test.ipynb  来训练模型。

       4.运行  FaceSwap_GAN_v2.2_video_conversion.ipynb,运用训练出来的模型进行转换。

Demo应用:

       faceswap-GAN_colab_demo.ipynb 它说是一个demo,实际上和上面介绍Google所支持的那个demo是一个东西。

训练数据的格式:

       Face的图像都应存在 ./faceA/ 和 ./faceB/中。

       训练的话,图像大小resize为256x256。

四、将生成的对抗性网络(GAN)应用于Faceswap

1.架构:

       今天只是翻译一下,具体的原理还没看,不过Generator的部分(Encoder+Decoder),如果看了最上面我推荐的博客,应该算有初步了解,至于下面的Discriminator,就涉及到了GAN的"对抗“”原理。(起到了一个监督Generator的作用)

2.Result:

(1)Adversarial loss提高了生成的图片的重建质量,也就是提高了输出质量。如下图:

(2)额外的Result:

        文章中 This image 这个链接点进去是这个工程生成的160个生成结果(利用GAN v2.2 结合self-attention机制)。

(3)一致的眼球运动:

        上文介绍GAN的更新过程时提到过,把眼球检测加了进来。这就是说GAN v2.2在较短时间内生成了更为真实的眼睛(输入的gif是根据DeepWap这个工程生成的)

       第一行是v2版本的GAN的效果,第二行是v2.2.版本的效果(其中第1.3.5列为输入的gif,2.4.6为效果)

(4)评估:

       这里给了一个传送门,点 here 里面有他们关于 Trump/Cage 这个训练集的输出质量的评估结果。

3.Features:

(1)VGGface 的 perceptual loss: 
       perceptual loss 改善了眼球的方向,使其更加真实,与输入的人脸更加一致。它还平滑了分割掩模中的工件,从而提高了输出质量。(还不太明白)

(2)Attention mask: 

       模型预测了一种Attention mask,可以帮助处理遮挡,消除人为干扰,并产生看起来自然的肤色。下图是Hinako佐(贪玩的麦片)对Emi武井(寂寞的眼神)的转换的结果。

       下图:从左到右:  原始图、转换后的图(没有Attention mask),转换后的图(有Am)

               

       下图:从左到右:  原始图、转换后的图(有Am),转换后的掩膜热图

       

(3)输入输出分辨率是可以配置的:

       支持64*64,128*128,256*256分辨率的输出

(4)在视频转换过程中使用MTCNN和卡尔曼滤波器进行人脸跟踪/校准:

       引入MTCNN进行更稳定的检测和可靠的人脸校准。

       利用卡尔曼滤波器取平滑每一帧上的边界框位置,消除脸部的抖动。(Kalman Filter是进行运动模型检测研究的经典方法)

       

       

(5)训练的时间建议:

       给的demo提供了一个预定义的训练时间表。以上展示的Trump/Cage换脸的模型是经过设置迭代次数为30000的同时实际迭代21000次之后的结果。

       (训练技巧:在训练后期交换解码器,减少极端面部表情造成的伪影。例如,使用这个技巧可以更好地转换(上面结果的)一些失败案例)(在尝试)

(6)Eye-aware的训练:

       在眼周区域引入reconstruction loss 和 edge los,引导模型生成逼真的眼睛。

五、常见问题和故障排除

1.这个网络是怎么工作的?

       下面的插图显示了一个非常高级和抽象(但不是完全相同)的去噪自动编码器算法流程图。跟着的链接展示了这个算法的目标函数。

 

        (来源: shaoanlu/faceswap-GAN) 

       图片中展示了文章开头提到的Adversarial loss 和 Perceptual loss,上方的MAE loss指的是GAN网络的Generator部分的auto-Encoding(自编码)网络的loss,loss越低说明自编码网络的Encoder训练的越好(一般情况下)。

2. 预览看起来是不错的,不知道转换为输出视频,效果会怎样?

      当使用人脸校准方法对输入图像进行预处理后,模型效果还是不错的。

      

六、环境需求 keras 2.1.5Tensorflow 1.6.0Python 3.6.4OpenCVkeras-vggfacemoviepyprefetch_generator (required for v2.2 model)face-alignment (required as preprocessing for v2.2 model)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。