我们是好莱坞艺术家!Deepfake原版软件实测干货教程拿走

讲Deepfake的公众号文章那么多,但无一不是拿着杨幂换朱茵、徐锦江换海王的老图蹭热度、炒作。作为一个负责任的关注科技前沿的公众号,我们怎么能忍受这么不清不楚的报道,小编找到了Deepfake的源头:开源软件Faceswap的项目网址和官方教程,带着大家通过换脸来娱乐、通过娱乐来学习计算机视觉的相关知识!

从2018-2019年,DeepFake整整火了两年。作为合成小电影最受欢迎的素材,斯嘉丽.约翰逊也只能无奈的表示:有人要把我的脸,贴在其他人身上,也没办法阻止。继BT种子之后,成人影片又大力扶持了一个高科技产业。是啊,地球上满是血气方刚的人类,很多时候,技术往往是需要需求推动的!

陌陌更是趁着这股东风推出了烧钱软件ZAO,一时圈粉无数,只可惜枪打出头鸟,随后的隐私泄露事件直接将这款冉冉升起的新星打的一蹶不振。Facebook,Reddit各大社交论坛公司不仅集体转变风向,还着手研发技术、举办比赛来约束Deepfake黑色产业。

Deepfake的前世今生

如我们开头所说的,大众熟知的Deepfake源于一项技术Faceswapping,据开发者表示,在2年前该技术刚刚问世的时候由于代码零碎复杂,需要花费很多精力才能实现,因此在学术界以外被完全忽视了!直到某个大神将它集成单一的软件平台,使其成为任何人都可以下载、运行和学习的AI代码,这就是Deepfake。可以说它的问世改变了一切,让更多的人参与了AI开发。对于开发人员而言,此代码的发布使其能够借鉴其他人提出的想法,与各种熟练的编码人员合作,从而不断克服来自新技术的挑战。
尽管开发人员一直遵循严格的道德标准。他们中的许多人甚至不使用它来创建视频,只是修改代码以查看其功能。
”可悲的是,媒体只专注于该软件的不道德使用。不幸的是,这就是它首次向公众公开的性质,但不能代表其创建的原因。我们现在的使用方式或未来的前景。像任何技术一样,它可以永久使用或被滥用。我们的目的是开发FaceSwap,以便最大程度地减少其滥用的可能性,同时最大程度地提高其作为学习,实验的合法换脸工具的潜力。我们不是要诋毁名人或贬低任何人。我们是程序员,我们是工程师,我们是好莱坞VFX艺术家,我们是激进主义者,我们是业余爱好者,我们是人类。为此,我们认为是时候就该软件的含义和对我们开发人员而言不甚明确的问题发表标准了”。by FaceSwap开发者。

FaceSwap使用规则
FaceSwap不能用于创建不适当的内容。
FaceSwap不适用于未经同意或隐藏其使用目的而更改面孔。
FaceSwap并非出于任何非法,不道德或可疑目的。
FaceSwap的存在是为了实验和发现AI技术,用于社会或政治评论,电影以及各种符合道德的实验。
FaceSwap使用指南:https://faceswap.dev/#content

安装篇

FaceSwap是一个Python程序,它将在多种操作系统(包括Windows,Linux和MacOS)上运行。你需要具有CUDA支持的现代GPU,以实现最佳性能。部分支持AMD GPU(尽管FaceSwap具有基于CPU的配置环境,但总是会因为内存不足而意外中断)。

扫描二维码关注公众号,回复: 8750741 查看本文章

在windows安装FaceSwap易如反掌,因为开发者已经提供了GUI界面版本。安装指南:

https://forum.faceswap.dev/viewtopic.php?f=4&t=20。

安装完成后,您的桌面将会出现一个快捷方式,可以直接进入FacceSwap进行操作。在接下来的教程中,我们将以windows版本的FaceSwap为例进行说明。至于Linux版本的安装请参考以下链接:https://forum.faceswap.dev/viewtopic.php?f=4&t=68

提取篇

提取指南链接:https://forum.faceswap.dev/viewtopic.php?f=5&t=27
提取包括三个阶段:检测,对齐和遮罩生成。检测是在框架中查找面部的过程,对齐是在面部中查找“地标”并一致地定向面部的过程。最终,遮罩生成将创建一个“遮罩”,该遮罩将识别最终面部图像的哪些部分是面部,哪些是背景/障碍物。
提取有两个主要目的:生成一组面部文件,以及可选的路线文件和蒙版,以训练模型;

生成路线文件和遮罩以转换最终帧。

虽然转换时不需要提取的面部文件(仅需要路线文件),但是它们很有用,我们可以为转换过程过滤数据集。

点击桌面图标,看到下图的界面,输入准备提取人物面部的视频地址和输出文件地址,按指南选择参数,点击Extract即可直接进行提取!是不是很简单!

训练篇

训练指南链接:https://forum.faceswap.dev/viewtopic.php?f=6&t=146
训练是在教我们的神经网络(neural network,NN)如何重建面孔。大多数模型主要由两部分组成:
编码器:这项工作是将人脸作为输入并将其“编码”为“矢量”的表示形式。要注意的是,它并不是在学习您输入的每张脸的确切表示,而是在尝试创建一种算法,该算法可用于以后尽可能地与输入图像最接近的脸;
解码器:这项工作是获取由编码器创建的矢量,并尝试将这种表示形式转换回人脸,使其与输入图像尽可能地匹配。

某些模型的构造略有不同,但基本前提保持不变。
神经网络需要知道它在编码和解码人脸方面做得如何。它使用2个主要工具来执行此操作:
损失:对于输入模型的每批面孔,NN将查看尝试通过当前的编码和解码算法重新创建的面孔,并将其与输入的实际面孔进行比较。完成后,它将给自己一个分数(损失值)并相应地更新其权重;
权重:模型评估重现脸部的效果后,便会更新其权重。这些权重被输入到编码器/解码器算法中。如果它在一个方向上调整了权重,但感觉到重建脸部的工作比以前做得差,那么它就知道权重在错误的方向上移动,因此它将以另一种方式进行调整。如果感觉到它已经改善,那么它将知道继续沿前进方向调整权重。

然后,该模型多次重复执行此操作,并根据其损失值不断更新其权重,理论上会随着时间的推移而不断改进,直到达到您认为已学到足以有效地重建面部的程度,或者损失值停止下降为止。

现在我们有了神经网络的基本知识,以及它如何学习创建面孔,这对面孔交换有何作用?在上面的环节中,您可能已经注意到,该NN学习如何对一个人的面孔进行加载,然后重建这些面孔。这不是我们想要的……我们要承担很多的面孔并重建别人的面孔。为了实现这一目标,我们的NN做了两件事:

共享编码器:训练模型时,我们将为其提供2组面孔。A集(我们要替换的原始面孔)和B集(我们要放置在场景中的交换面孔)。实现此目的的第一步是共享A和B集的编码器。这样,我们的编码器就可以为2个不同的人学习单个算法。这一点非常重要,因为我们最终将告诉我们的神经网络采用一张脸的编码并将其解码为另一张脸。因此,编码器需要查看和学习我们交换所需的两套面孔;

开关式解码器:训练模型时,我们训练2个解码器。解码器A正在获取编码矢量并尝试重新创建A的面孔。解码器B正在获取编码矢量并尝试重新创建B的面孔。当涉及到最终交换人脸时,我们切换了解码器,因此我们将模型A的面孔反馈给了我们,但是将其传递给解码器B。由于已经在两组面孔上训练了编码器,因此模型将对输入的A面孔进行编码,然后尝试从解码器B重构它,从而从模型中输出交换的面孔。

关于训练过程的具体操作,请大家参考训练指南依次操作即可。
整个训练的过程和结果都是可以可视化的,下图反映了可视化模型的当前状态,这表明模型重新创建和交换面孔的能力。每次保存模型时都会更新。

知道模型是否训练完成的最好办法就是看预览效果,一旦你对换脸效果满意率,就可以停止训练了!如下图所示:第一列是输入到模型中的脸,第二列是试图重现该面孔的模型,第三列是试图交换面孔的模型。

转换篇

转换指南还没有出炉,大家可以关注该环节的论坛:

https://forum.faceswap.dev/viewforum.php?f=7

发布了43 篇原创文章 · 获赞 2 · 访问量 5705

猜你喜欢

转载自blog.csdn.net/ConferenceEye/article/details/104059899