目录
准备输入数据和设置笔记本
初始化Notebook并安装依赖项
数据集导入
从原始视频中提取和去噪帧
人脸检测
可选:排序和增强Facesets
模型训练
合并结果帧
获取结果视频:深度伪造
- 下载项目文件 - 75.5 MB
深度伪造——使用深度学习在视频中将一个人的脸换成另一个人的脸——是当今使用人工智能的最有趣和最可怕的方式之一。
虽然深度伪造可用于合法目的,但它们也可用于虚假信息。能够轻松地将某人的脸换成任何视频,我们真的可以相信我们的眼睛告诉我们的吗?政治家或演员做或说令人震惊的事情的真实视频可能根本不是真实的。
在本系列文章中,我们将展示深度伪造的工作原理,并展示如何从头开始实现它们。然后我们将看看DeepFaceLab,它是一种多合一的Tensorflow驱动的工具,通常用于创建令人信服的深度伪造。
在上一篇文章中,我们完成了深度伪造DIY解决方案的管道。在本文中,我想为您概述如何使用DeepFaceLab来实现与我们之前获得的视频类似的结果。我已经给你介绍了DeepFaceLab,所以在本节中,我将向你展示如何从一个有点不寻常的角度实现它:我想继续从云操作的角度来看,而不是遵循常规的本地路径,所以我将向您解释如何使用运行在Google Colab之上的DeepFaceLab,这样即使您没有超级强大的本地机器,您仍然可以遵循本教程。
在开始之前,花点时间阅读他们的GitHub存储库和DFL Google Colab指南。你可以得到他们的官方Colab notebook 在这里和我的notebook 在这里。话虽如此,让我们把它完成!
准备输入数据和设置笔记本DFL要求您创建一个名为“workspace”的文件夹,其中包含两个视频:data_src.mp4 和data_dst.mp4。这些将分别是您要插入转换后的人脸的源视频和您将从中获取目标人脸的视频。完成后,将文件夹压缩到一个名为“workspace.zip”的文件中。将此文件上传到您的Google Drive的根目录。如果您使用我从一开始就使用的示例,您可以在此处找到此文件,只需下载并上传到您的云端硬盘即可。
现在复制官方DFL Notebook(或我的),并通过转到运行时 > 更改运行时类型 > 硬件加速器:GPU来确保您的Notebook实例启用了GPU。
此外,转到“编辑”>“Notebook设置”并确保您看到与上述相同的选项。
初始化Notebook并安装依赖项我不会深入探讨Notebook的解释,因为它的文档非常详细。相反,我将向您展示如何获得最佳视频。仔细检查实例是否启用了GPU后,运行Notebook的前三个单元格:
重要提示:确保在运行第三个单元格之前选择下拉列表中的“安装”选项并选择“Download_FFHQ”选项。
数据集导入DFL安装完成后,展开第四个单元并按原样运行第一和第二个代码块。这将导入您上传到云端硬盘的数据集,并将笔记本输出导出设置为您的云端硬盘:
让我们处理从您的云端硬盘获取的视频。为此,展开第五个单元格,从下拉列表中选择“data_src”并运行该块。该脚本需要您提供一些输入:在询问输出图像格式时输入“0”作为 FPS(每秒帧数)和“png”,然后让它提取帧。
然后,当它完成提取时,返回下拉列表,这次选择“data_dst”,并重复该过程:
一旦提取了两组帧,就可以对这些帧进行去噪。这一步是完全可选的,但无论如何我都会这样做。继续为"data_src"和"data_dst"运行第二个块,每当它要求去噪因子时,使用默认值7:
一旦帧被去噪,就该检测它们上的人脸了。使用“S3FD”检测器继续运行“data_src”和“data_dst”的第六个块。它将要求您输入一些参数:将“人脸类型”设置为“wf”(意思是“整张脸”),将“图像的最大人脸数”设置为0,将“JPEG质量”设置为90:
尽管这些步骤是可选的,但我鼓励您运行它们。第一个是通过直方图相似性对数据集进行排序,第二个是增强人脸集合,从而在训练中获得更好的结果。为“data_src”和“data_dst”运行两个块,使用GPU增强的人脸集合(在需要时输入选项0)并在询问您是否要合并数据集时同意:
要开始此过程,请在“模型”选项的下拉列表中选择“SAEHD”,选择每小时备份的选项,并选择“静默启动”。你会被要求定义几个关于训练的参数。使用所有默认选项,仅将“每N小时自动备份”修改为1:
我们缩减的数据集的训练默认时间非常长,因此在2或3小时后,您可以按Enter停止它。它将停止训练过程并保存最后一个模型。作为参考,这些是我在8200、23000和37300次迭代后在训练期间获得的一些示例结果。请注意右侧列在迭代增加时如何改进:
一旦模型训练开始输出可接受的转换预览,停止它。(您可以在左侧的Colab文件浏览器中看到它们,在模型下。找到DFL_SAEHD_preview_SAEHD masked.jpg文件并下载它)
合并结果帧使用“SAEHD”模型和所有默认参数运行下一个模块,除了:
- 选择模式:输入“3”进行无缝换脸。
- 选择锐化模式:为高斯输入“2”。这是为了提高换脸质量。
- 选择超分辨率功率:输入“20”。
最后,通过运行最后一个块来获取结果视频。如果需要,请选择“复制到驱动器”选项并将参数保留为默认值:
结束后,您将找到保存在云端硬盘和/content/workspace/result.mp4中的最终视频。这是我最后的深度伪造的样子:
很神奇,不是吗?如果您想查看最终视频,请在此处找到 。最后,我想强调的是,DFL结果比我们使用DIY解决方案实现的结果要好得多,但请记住,DeepFaceLab背后有大量的时间和奉献,与我们的DIY解决方案相比只有几天。我鼓励你自己改进我的结果。这只是花时间调整细节和训练更多时期的自动编码器的问题。
我们已经到了本系列文章的结尾。我希望你喜欢这段漫长而激动人心的旅程!请记住,出于善意使用深度伪造。
https://www.codeproject.com/Articles/5298031/DeepFaceLab-A-Pre-Packaged-Alternative-DIY-Deep-Fa