程序员体验AI换脸就不要用ZAO了,详解Github周冠军项目Faceswap的变脸攻略

本文链接:https://blog.csdn.net/BEYONDMA/article/details/100594136
       上个月笔者曾在《银行家杂志》发文传统银行如何引领开放银行时代潮流,就曾指出AI换脸等技术的兴起将会我们未来的身份认证手段造成一定的麻烦。而最近ZAO换脸软件再次爆红社交媒体,而且其接近于霸王条款的使用协议也将对于用户隐私造成一定的风险,虽然后来ZAO公开致歉,不过这波热点效应也让Faceswap这个开源的AI换脸项目登顶Github周排行的榜首。

       AI换脸历程简介       
         AI换脸首次走进国人视线是在19年3月,一名叫做换脸哥的网友,就上传了一段轰动全网的视频,将扮演94版射雕中黄蓉的演员由朱菌换成了杨幂,而且几乎真假难辩。

       而AI换脸在学界早就有所涉及,在18年年中人工智能替换人脸面部特征的技术在科研学术研究领域和开源社区两个方向上都获得了不小的发展,首先是在SIGGRAPH(暨国际计算机图形学会)的18年年会上一个由斯坦福大学、慕尼黑技术大学、巴斯大学等科研究机构联系研发的”Deep Video portrait”系统横空出世,该技术不但能让被替换的人脸完全模板原视频中人物的表情,甚至在放大对比时,两个视频在发丝和睫毛的表现上都能做到极度的精确,后来描述该技术的论文被发表在了《ACM图形交易上》,不过所幸的是研发”Deep Video portrait”技术的几家机构并没有公开其项目的源代码。     

       而在开源社区中“AI换脸技术”也是得到了相当多的关注,先是一种叫做Reddit上的deepfakes论坛发布多款使用AI换脸技术生成的不雅视频,使多名女星中招,后来Reddit被迫直接关闭了deepfakes的板块,后来在Github由deepfakes衍生而来的开源项目数量不下十几个,其中以faceswap、Openfaceswap等开源项目为代码的换脸技术在github上的更新与讨论十分热烈,极快的推动了开源换脸技术的迭代速度。

     Faceswap安装教程
       而在之前AI换脸软件还一般只能安装在LINUX平台,而有算力不低于1.0的N卡、装有PYTHON、CONDA环境及CUDA和CUDAN等苛刻要求,这一番操作下来至少不是专业的IT人员还真是难以搞定,不过笔者亲测了一下最新的Faceswap for windows版本的程序,其安装布署的简单快捷程度出乎我的意料,下面我就来详细介绍一下安装步骤。

    1.下载Faceswap安装程序

    首先到Githhub上下载最新的Release版本目前最新的链接如下https://github.com/deepfakes/faceswap/releases/latest/download/faceswap_setup_x64.exe

特别揭示:deepfakes相关软件在github被限制使用,必须登陆用户才可以访问,所以如果出现以下页面,请登陆Github:

 

 

2.双击安装程序进行安装

      只需要在开始界面选择安装路径,在以下界面选择显卡类型,其余就不需要关心了,安装程序会自行配置好Git和conda,还会自行配置环境变量。

 

 

      Faceswap使用教程
      首先需要明确一下AI换脸的基本概念,我在之前的博文终于把AI换脸的原理搞清了曾经介绍过AI换脸的基本原理,AI换脸当中两大最重要的技术就是人脸检测和人脸对齐。其中人脸检测顾名思义就是在图像中将人脸的部分检测出来,人脸对齐其实就是要把从不同角度、光照、遮挡等情况下得到的人脸信息还原同标准场景下。

     虽然安装步骤比之前简单了,不过Faceswap使用起来还是相对比较麻烦的,其基本流程如下:

     获取人脸A的信息:首先对于含有人脸A信息的视频进行处理,侦测所有人脸并及人脸的对齐信息,然后需要用户确认对于人脸A的侦测结果正确,如果含有其它人脸不属于人脸A的信息则进行删除,当然如果其它视频中也包含人脸A的信息你也可以将上述文件合并,形成更大的人脸、人脸对齐信息

    获取人脸A的信息:重复上述步骤得到人脸B的侦测和对齐信息

    模型训练:使用人脸A和人脸B的侦测及对齐信息进行训练。

    视频转换:使用刚刚训练好的模型就可以进行视频转换了。

    接下来咱们分步介绍Faceswap的一般使用流程

   1、启动程序

  在上面安装成功后桌面上会自动多出一个“Faceswap"的图标,双击程序会自动调起对应的Python及conda版本进行启动

 

首次启动大概需要几分钟,然后就可以进入相关图像界面了。

2、处理视频获得人脸A的信息

进行图型界面后直接在EXACT页进行视频的处理,其中

Input Dir: 如果是使用视频则需要选定一个文件,如果使用一组图片则选定一个文件夹。

Output Dir: Faceswap会把处理得到的人脸图像放在output文件夹中

Alignments:不需要填写,使用默认即可,注这里的对齐文件实际是指眉、眼、鼻子、嘴等68个

Serializer: 使用默认即可。

Detector:S3FD的效果的确比较不错。

其余选项不需要更改均使用默认即可。

 

点击Exact按扭即可开始。

揭示:这项操作非常吃内存,我这边的经验值是每1G内存可以处理40张1280*768的图像,以此类推。

具体如下:

 

3.删除不必要的信息

我们除了人脸的图像外,还会得到一些如杂志封面的图像,那么接下来我们就要把我们不需要处理的图像删除。

 

选择tools标签的sort选项,这时的input是实际是我们刚刚解压完成的output文件压,确保Final process选为rename选项,其余按默认可。

 

然后点击Sort即可完成排序。

接下来将Sort完成的结果进行处理,删除不需要的对齐信息。

选择tools标签的Alignment选项,job选项Remove-Faces具体如下:

 

其中Alignments files是步骤2生成的对齐文件,Face Folder是我们刚刚sort后的输出目录。设置完毕后点击Alignments 即可。

4.重复2、3步获得人脸B的相关侦测及对齐信息

5.训练模型

获得了人脸A和B的信息后就可以训练模型了,其中

Input A:人脸A的图像文件。

Alignments A:人脸A的对齐文件

Input B:人脸B的图像文件。

Alignments B:人脸B的对齐文件

选定完成之后点击Train按扭即可,不过这个时间一般比较长,笔者的2080处理的图像数量在1000张左右,截止目前已经运行了接近一天,还未结束。

 

6.正式换脸

训练完成后,就可以进行换脸了:

Input Dir: 要转换的包含有人脸A的视频。注意如果Input Dir中输入的视频不是步骤2中提取人脸A特征的视频,也需要对于此视频按照步骤2生成对齐文件。

Output Dir: 转换后视频的位置

Alignments:对齐文件位置

Model Dir:我们在步骤5中生成模型的位置。

配置完成后点击convert即可完成转换。

 

       但是笔者的模型尚未训练完成,且为了避免侵权,就放一个Github已训练完成的模型效果图吧(把詹尼佛.劳伦斯换成史蒂夫·布西密吧:

 

 

     写在最后 
      首先对于IT人员来说Faceswap的代码质量上乘,值得一读,重点推荐https://github.com/deepfakes/faceswap/tree/master/lib/alignments.py这个有关对齐的代码质量不错,找时间可以给大家详细解读一下。

         其次目前尚没有可靠的技术能够鉴定视频的真伪,虽然目前脸书、微软t联合麻省理工学院等一票大学共同发起了Deepfake挑战赛,但是我之前的博客中也介绍过AI假新闻满天飞,打假神器GROVER帮你看清一切中利用AI去鉴定假新闻的尝试,不过其鉴定成功率和可靠率还很低,而且从目前AI换脸的原理来看,其技术破破绽更少,鉴定难度比NLP会更大。所以不排除今后实时的监控视频都需要按照《GB/T 25724-2017公共安全视频监控数字视音频编解码技术要求》进行安全加固,才算有效了。

posted @ 2019-10-27 19:41  瘋耔  阅读(3510)  评论(0编辑  收藏  举报
跳至侧栏