65.9K
CodeProject 正在变化。 阅读更多。
Home

DeepFaceLab:预打包的替代 DIY 深度伪造

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2021 年 4 月 8 日

CPOL

6分钟阅读

viewsIcon

19027

在本文中,我们将探讨 DeepFaceLab 作为我们之前方法的替代方案。

深度伪造——利用深度学习将一个人的脸替换到视频中的另一个人身上——是当今人工智能最有趣令人担忧的应用方式之一。

虽然深度伪造可用于合法目的,但也可用于虚假信息。通过能够轻松地将某人的脸部替换到任何视频中,我们真的能相信我们眼睛所见吗?政客或演员做出或说出令人震惊的事情的逼真视频可能根本不是真的。

在本系列文章中,我们将展示深度伪造的工作原理,并展示如何从头开始实现它们。然后,我们将介绍 DeepFaceLab,这是常用于创建令人信服的深度伪造的、基于 Tensorflow 的一体化工具。

上一篇文章中,我们完成了深度伪造 DIY 解决方案的整个流程。在本文中,我想概述如何使用 DeepFaceLab 来获得与我们之前获得的视频类似的结果。我已经为你提供了关于 DeepFaceLab 的介绍,所以在本节中,我将从一个有些不寻常的角度向你展示如何实现它:我将继续从云操作的角度出发,而不是遵循常规的本地路径。我将向你解释如何在 Google Colab 上运行 DeepFaceLab,这样即使你没有非常强大的本地机器,也可以继续学习本教程。

在开始之前,请花点时间阅读他们的GitHub 存储库DFL Google Colab 指南。你可以在这里获取官方 Colab 笔记本,在这里获取我的。话不多说,让我们开始吧!

准备输入数据和设置笔记本

DFL 要求你创建一个名为“workspace”的文件夹,其中包含两个视频:data_src.mp4 和 data_dst.mp4。前者是你想要插入转换后人脸的源视频,后者是你将从中提取目标人脸的视频。完成之后,将文件夹压缩成一个名为“workspace.zip”的文件。将此文件上传到你的Google Drive 的根目录。如果你使用我从一开始就一直在使用的示例,你可以在这里找到此文件,只需下载并上传到你的 Drive。

现在复制官方 DFL 笔记本(或我的),并确保你的笔记本实例已启用 GPU,方法是转到“Runtime”>“Change runtime type”>“Hardware accelerator: GPU”。

另外,转到“Edit”>“Notebook Settings”,并确保你看到与上面相同的选项。

初始化笔记本并安装依赖项

我不会深入解释笔记本,因为它文档非常完善。相反,我将向你展示如何获得最佳视频。在你仔细检查了实例的 GPU 已启用后,运行笔记本的前三个单元格。

重要提示:在运行第三个单元格之前,请确保在下拉列表中选择“Install”选项,并选择“Download_FFHQ”选项。

数据集导入

DFL 安装完成后,展开第四个单元格,按原样运行前两个代码块。这将导入你上传到 Drive 的数据集,并将笔记本输出导出到你的 Drive。

从原始视频中提取和降噪帧

让我们处理从你的 Drive 中获取的视频。为此,展开第五个单元格,从下拉列表中选择“data_src”,然后运行该块。脚本将需要你输入一些信息:输入“0”作为 FPS(每秒帧数),在询问输出图像格式时输入“png”,然后让它提取帧。

然后,在提取完成后,返回下拉列表,这次选择“data_dst”,然后重复该过程。

提取完两组帧后,就可以对这些帧进行降噪了。此步骤完全是可选的,但我建议你这样做。继续为“data_src”和“data_dst”运行第二个块,并在询问降噪因子时,使用默认值 7。

人脸检测

帧降噪完成后,就可以检测其中的人脸了。继续为“data_src”和“data_dst”运行第六个块,使用“S3FD”检测器。它将要求你输入几个参数:将“Face type”(人脸类型)设置为“wf”(代表“whole face”,整张脸),将“Max number of faces from image”(每张图像最多检测的人脸数)设置为 0,将“JPEG quality”(JPEG 质量)设置为 90。

可选:对面部数据集进行排序和增强

尽管这些步骤是可选的,但我还是鼓励你运行它们。第一个是按直方图相似度对数据集进行排序,第二个是增强面部数据集,从而在训练中获得更好的结果。对“data_src”和“data_dst”运行这两个块,使用 GPU 进行面部数据集增强(在要求时输入选项 0),并在询问是否合并数据集时同意。

模型训练

要开始此过程,请在“Model”(模型)选项的下拉列表中选择“SAEHD”,选择每小时备份一次的选项,并选择“Silent start”(静默启动)。你会被要求定义几个关于训练的参数。使用所有默认选项,仅修改“Autobackup every N hour”(每 N 小时自动备份一次)为 1。

对于我们简化的数据集,训练的默认周期非常长,因此在 2 到 3 小时后,你可以按 Enter 键停止它。它将停止训练过程并保存最后一个模型。作为参考,这是我在训练过程中获得的样本结果,分别在 8200、23000 和 37300 次迭代后。请注意右侧列随着迭代次数的增加而改进。

一旦模型训练开始输出可接受的转换预览,就停止它。(你可以在左侧的 Colab 文件浏览器中,在“Model”下看到它们。找到 DFL_SAEHD_preview_SAEHD masked.jpg 文件并下载它)。

合并生成的帧

使用“SAEHD”模型和所有默认参数运行下一个块,但

  • Choose mode(选择模式):输入“3”进行无缝人脸交换。
  • Choose sharpen mode(选择锐化模式):输入“2”进行高斯模糊。这有助于提高人脸交换的质量。
  • Choose super resolution power(选择超分辨率功率):输入“20”。

获取生成的视频:一个深度伪造

最后,通过运行最后一个块来获取生成的视频。如果需要,选择“Copy to drive”(复制到 Drive)选项,并保持参数为默认值。

完成后,你将在 Drive 中找到最终视频,路径为 /content/workspace/result.mp4。我的最终深度伪造看起来是这样的。

令人惊叹,不是吗?如果你想查看,可以在这里找到最终视频 。作为最后的想法,我想强调 DFL 的结果比我们用 DIY 方法获得的结果要好得多,但请记住,DeepFaceLab 付出了大量的时间和精力,而我们的 DIY 方法只用了几天。我鼓励你自己改进我的结果。这仅仅是花费时间调整细节和训练你的自编码器更多 epoch 的问题。

我们已经到达了这个系列文章的结尾。希望你喜欢这段漫长而精彩的旅程!记住,请怀着善意使用深度伪造。希望很快再见到你。感谢你的时间!

© . All rights reserved.