DeepFaceLab 2.0 指南【中文版】
如果您想根据我的指南制作自己的指南或正在重新发布它,请注明出处,不要窃取它。
如果您学到了一些有用的东西,请考虑捐赠,以便我可以继续维护本指南,它花了很多时间来编写
。
DFL 2.0 下载(GITHUB、MEGA 和 TORRENT): 下载
DEEP FACE LIVE: 下载
DFL 2.0 GITHUB 页面(新更新、技术支持和问题报告): GITHUB
Colab 指南和原始实施链接: https: //mrdeepfakes.com/forums /thread-guide-deepfacelab-google-colab-tutorial
DFL 论文(代码的技术分解): https://arxiv.org/pdf/2005.05535.pdf
其他有用的指南和主题: https: //mrdeepfakes.com/forums /thread-making-deepfakes-guides-and-threads[/LEFT]
第 0 步 – 介绍
一、要求。
使用 Deep Face Lab 2.0 需要配备现代 GPU、充足的 RAM、存储空间和快速 CPU 的高性能 PC。通常建议大多数用户使用 Windows 10,但更高级的用户可能希望使用 Linux 以获得更好的性能。Windows 11 也可以。
制作非常基本和低质量/分辨率 deepfakes 的最低要求:
– 支持 AVX 和 SSE 指令的现代 4 核 CPU
– 16GB RAM
– 具有 8GB VRAM 的现代 Nvidia 或 AMD GPU
– 充足的存储空间和大页面文件
确保启用硬件- 在 Windows 10/11 下加速 GPU 调度并确保您的 GPU 驱动程序是最新的。
2. 为您的 GPU 下载正确的 DFL 构建(构建命名方案可能会更改):
– 对于 Nvidia GTX 900-1000 和 RTX 2000 系列以及使用与这些系列相同架构的其他 GPU,使用“DeepFaceLab_NVIDIA_up_to_RTX2080Ti”构建。
– 对于 Nvidia RTX 3000-4000 系列卡和其他使用相同架构的 GPU,使用“DeepFaceLab_NVIDIA_RTX3000_series”构建。
– 对于现代 AMD 卡,使用“DeepFaceLab_DirectX12”构建(可能不适用于某些较旧的 AMD GPU)。
第 1 步 – DFL 基础知识
DeepFaceLab 2.0由几个 .bat 组成,这些脚本用于运行创建 deepfakes 所需的各种进程,在主文件夹中你会看到它们和 2 个文件夹:
- _internal – 内部文件,使 DFL 工作的东西,不要敏感!
- 工作区——这是您的模型、视频、帧、数据集和最终视频输出所在的位置。
基本术语:
SRC – 总是指我们试图将其面部交换到目标视频或照片中的人的内容(帧、面部)。
SRC set/SRC dataset/Source dataset/SRC faces – 提取的人脸(源人脸的平方比图像文件,包含附加数据,如地标、掩码、xseg 标签、原始帧上的位置/大小/旋转)我们正在尝试换成视频。
DST – 总是指我们在其中交换面孔的目标视频(或 DST/DST 视频)中的内容(帧、面孔)。
DST set/DST dataset/Target dataset/DST faces – 提取的目标人脸的集合我们将替换为与 SRC 相似、相同格式并包含与 SRC 面孔相同类型的数据。
帧 – 从源视频或目标视频中提取的帧,在提取帧后,它们分别放置在“data_src”或“data_dst”文件夹中。
Faces – 从使用的视频或照片中提取的原始帧中提取的面部 SRC/DST 图像。
模型 – 构成用户可以创建/训练的 SAEHD、AMP 和 XSeg 模型的文件集合,所有这些都放在“工作区”文件夹内的“模型”文件夹中,基本描述模型如下(稍后在指南中更详细) ):
1. SAEHD – 最流行和最常用的模型,基于不同的体系结构有几种不同的变体,每个都有自己的优点和缺点,但一般来说,当 SRC 和 DST 有一些相似之处时,它意味着交换面孔,特别是一般面孔/头部形状。可以自由重复使用、预训练,并且通常可以提供质量不错的快速结果,但某些架构可能会遭受低相似度或光线和颜色匹配不佳的困扰。
2. AMP – 新的实验模型,可以更好地适应源数据并保留其形状,这意味着您可以使用它来交换看起来完全不同的面孔,但这需要手动合成,因为 DFL 没有更高级的遮罩技术,例如背景修复. 与 SAEHD 不同的是,它没有不同的架构可供选择,而且在重用方面的通用性较差,需要更长的训练时间,也没有预训练选项,但可以提供更高的质量,结果看起来更像 SRC。
3. Quick 96 – 测试模型,采用SAEHD DF-UD 96分辨率参数和Full Face人脸类型,用于快速测试。
4. XSeg – 用户可训练的遮罩模型,用于为 SRC 和 DST 面部生成更精确的遮罩,可以排除各种障碍物(取决于 SRC 和 DST 面部上的用户标签),DFL 带有经过训练的通用全脸遮罩模型,如果您可以使用不想立即创建自己的标签。
XSeg 标签 – 用户在 XSeg 编辑器中创建的定义面部形状的标签,也可能包括排除(或首先不包括)SRC 和 DST 面部障碍物,用于训练 XSeg 模型以生成掩码。
面具 – 由 XSeg 模型生成,需要面具来定义应该训练的面部区域(无论是 SRC 还是 DST 面部),以及定义合并期间最终掩蔽 (DST) 所需的形状和障碍物。默认情况下,一种基本面具也嵌入到提取的面部中,它源自面部标志,它是一种基本面具,可用于使用全脸模型或更低的面部类型进行基本交换(稍后将详细介绍面部类型和面具)指南)
现在您已经了解了一些基本术语,是时候弄清楚您到底想做什么了。
根据您要面对的视频的复杂程度,您可能只需要很少的采访,或者您可能需要收集更多的源内容来创建您的 SRC 数据集,其中可能还包括高分辨率照片、电影、电视节目和依此类推,我们的想法是构建一个包含目标视频中存在的尽可能多的角度、表情和光照条件的集合,因为你可能会怀疑这是制作好的 deepfake 最重要的部分,但并不总是可能的找到所有需要的镜头,因此即使您学会了所有技巧和技术,您制作的所有视频也永远无法获得 100% 的成功,除非您只专注于非常简单的视频。请记住,这与面孔的数量无关,而与表情的多样性有关,
一个好的 deepfake 还需要你的源人和目标人的头部形状相似,虽然可以交换看起来完全不同的人,新的 AMP 模型承诺稍微解决不同脸型的问题,宽度仍然很重要头部的长度以及下巴、下巴和面部的一般比例相似,以获得最佳效果。如果两个人的表情也差不多那就更好了。
让我们假设您知道您将使用什么视频作为目标,您收集了大量源数据来创建源集,或者至少确保有足够的数据并且质量很好,无论是您的源人还是目标人有类似形状的头,现在我们可以继续实际创建视频的过程,请按照以下步骤操作:
第 2 步 – 工作区清理/删除
1) Clear Workspace – 删除“workspace”文件夹中的所有数据,当你下载新版本的DFL时,“workspace”文件夹中默认有一些演示文件,你可以用它来练习你的第一个假动作,你可以删除它们手动或使用此 .bat 来清除您的“工作区”文件夹,但由于您很少在完成项目后删除模型和数据集,因此此 .bat 基本上无用且危险,因为您可能会不小心删除所有工作,因此我推荐您删除这个.bat。
第 3 步 – 源内容收集和提取
要创建高质量的源数据集,您需要找到主题的源材料,可以是照片或视频,视频是首选,因为需要覆盖所有可能的面部外观的各种表情和角度,以便模型可以正确地学习它,另一方面,照片通常提供出色的细节,非常适合简单的正面场景,并且会提供更清晰的结果。您还可以组合视频和照片。以下是您需要确保的一些事项,以便您的源数据集尽可能好。
1. 视频/照片应涵盖所有或至少大部分可能的面部/头部角度– 向上、向下、向左、向右、直视镜头以及介于两者之间的一切,实现这一目标的最佳方法是使用不止一次采访和多部电影,而不是依赖单一视频(主要是一个角度和一些小的变化和一种照明类型)。
提示: 如果您的 DST 视频不包含某些角度(如侧面轮廓)或照明条件,则无需包含具有此类照明和角度的源,您可以创建一个仅适用于特定类型的角度和照明的源集,或者创建一个更大更通用的集合,应该适用于多个不同的目标视频。这取决于您将使用多少不同的视频,但请记住,使用太多不同的来源实际上会降低结果的相似性,如果您可以覆盖所有角度并且所需的照明条件很少且来源较少,那么实际上使用较少的内容总是更好从而使 SRC 集更小。
2. 视频/照片应涵盖所有不同的面部表情– 包括张开/闭合的嘴巴、张开/闭上的眼睛、微笑、皱眉、眼睛看向不同的方向 – 表情的多样性越多,效果越好。
3. 源内容应该是一致的——你不希望模糊、低分辨率和严重压缩的面孔与清晰、锐利和高质量的面孔相邻,所以你应该只使用你能找到的质量最好的视频和照片,如果你能的话t 或某些角度/表情仅出现在较低质量/模糊的视频/照片中,那么您应该保留这些并尝试放大它们。
可以使用 Topaz 等软件直接在帧或视频上或在 DFDNet、DFL Enhance、Remini、GPEN 等人脸(提取后)上进行升级(新的升级方法一直在创造,机器学习在不断发展)。
提示:在以下情况下,良好的一致性尤为重要:
留胡子的脸 – 尽量只使用同一天拍摄的单部电影或照片和采访,除非你要交换的脸很小而且你不会能够区分单个头发,在这种情况下,允许混合不同日期的源镜头,但前提是胡须仍然具有相似的外观。
用短发换头——由于头上的头发更随机,你应该只使用在同一头上拍摄的内容(采访、照片),不要将它与其他内容混合,或者如果你正在使用电影然后坚持一部电影。
例外情况是头发和胡须总是以相同的方式风格化或者是假的因此不会改变,在这种情况下,可以根据需要混合任意多的来源。
化妆面孔 – 避免包括化妆与给定人通常拥有的类型明显不同的来源,如果您必须使用与其他人不一致的特定化妆的视频或照片,请尝试为正确的帧着色(在使用批处理图像提取帧后处理或在视频编辑之前),这也可以在提取后完成,但需要先保存元数据并在编辑面部后恢复它,下一步将详细介绍)。
4.大部分应该是高质量的– 如上所述,您可以保留使用一些模糊的照片/视频,但前提是您无法在其他照片/视频中找到某些表情/面部角度,但请确保将它们升级到可接受的质量,太多升级的内容可能会对质量产生负面影响所以最好只在数据集的一小部分上使用它(如果可能,在某些情况下,接近 100% 的数据集可能需要以某种方式增强)。
5.灯光要一致– 一些小的阴影是可以的,但你不应该包含带有刺眼、定向照明的内容,如果可能的话,尽量只使用那些阴影柔和且光线漫射的内容。对于 LIAE 架构,它可能不如它能更好地处理光照那么重要,但对于 DF 架构,重要的是每个面角都有几个光照条件,最好至少 3 个(正面漫射,左右有柔和的阴影,不要太暗,细节必须在阴影区域仍然可见或没有阴影,只是漫射照明在脸部左侧或右侧创建更亮的区域)。源人脸集/数据集可以包含不同亮度的人脸,但不应包括过暗的人脸,除非你的 DST 也是黑暗的。
6. 如果你只使用图片或者它们是数据集的大部分– 确保他们填写了上面提到的所有检查,20 张左右的图片是不够的。甚至不必费心尝试用这么小的图片制作任何东西。
7. 将源数据集中的人脸总数保持在 3.000 – 8.000 左右– 在某些情况下可能需要更大的集合,但我建议将通用集合保持在 12k 以下,如果确实需要,则为 15k,然后使用更大的集合来产生更多模糊的结果,他们也将花费更长的时间来训练,但如果你的目标视频几乎覆盖了每个可以想象的角度,那么将需要大的 SRC 集来覆盖所有这些角度。
现在您已经收集了源内容,是时候从视频中提取帧了(照片不需要做更多的工作,但您可以浏览它们并删除任何模糊/低分辨率图片、黑白图片等)。
提示: 回复。gardles 提取您将使用的帧的方法 提前为所有不同的来源准备文件夹。
您可以将它们放在任何地方,但我喜欢将它们放在 data_src、data_dst 和模型文件夹旁边的工作区文件夹中,根据使用的来源(电影标题、采访标题、事件或照片日期)命名这些文件夹,然后放置相应的帧在提取完成后在其中重命名每组帧,以便清楚给定面孔的来源。
这些名称在面部提取(第 4 步)后嵌入到面部中,因此即使您随后重命名它们(面部)或对它们进行排序,它们也会保留原始文件名,您可以使用您将在第 4 步中了解的 .bat 恢复该文件名。
您可以通过几种不同的方式提取帧:
a) 通过使用2) 从video data_src从视频文件中提取帧,然后将它们输出到“data_src”文件夹(自动创建),可用选项:
– FPS – 跳过视频默认帧率,输入其他帧率的数值(例如输入 5 只会将视频渲染为每秒 5 帧,这意味着将提取更少的帧),具体取决于长度我建议 5-10FPS SRC 帧提取,无论您如何提取帧(方法 b 和 c)
– JPG/PNG – 选择提取帧的格式,jpg 较小且质量略低,png 较大但提取的帧质量更好,那里与原始视频相比,PNG 应该没有质量损失。
b) 将所有视频导入您选择的视频编辑软件,确保不要将不同分辨率的视频一起编辑,而是分别处理 720p、1080p、4K 视频,此时您还可以剪切视频以保持刚好最好的照片具有最好的面部质量,因此面部距离较远/较小、模糊(失焦、严重的运动模糊)、非常暗或使用单色照明或只是照明不是很好的照片自然的或同时具有非常明亮的部分和黑暗的阴影以及大部分面部被遮挡的镜头应该被丢弃,除非它是一种非常独特的表情,不经常出现或者它的角度也很少见(例如人们直接向上/向下看)或者如果你的目标视频实际上有这样的程式化灯光,有时,如果您在其他任何地方都找不到给定的角度,则只需要这些质量较低的面孔,接下来将视频直接渲染为 jpg 或 png 帧到您的 data_src 文件夹中(如果您之前删除了它,请手动创建)并渲染整个批次给定分辨率的视频或分别渲染每个剪辑。
c) 使用 MVE 和它的场景检测为你做剪辑,然后用它以特定的帧速率和文件格式将你选择的场景输出到文件夹中,然后重命名它们,这样你所有的 ace 都有唯一的名称与原视频的标题相对应,对后期很有帮助,您可以在本指南中阅读有关MVE的更多信息:
https://mrdeepfakes.com/forums/thread-mve-machine-video-editor-guide
3.视频切割(可选):3)剪切视频(将视频放在我身上)– 允许通过将任何视频拖放到该 .bat 文件上来快速将其剪切到所需的长度。如果您没有视频编辑软件并想快速剪切视频,这很有用,但是由于 MVE(免费)的存在,它的有用性值得怀疑,因为它只能简单地从 A 点剪切到 B 点的一部分视频, 手动剪切视频或使用 MVE。
第 4 步 – 从目标视频 (DATA_DST.MP4) 中提取帧
您还需要从目标视频中提取帧,在按照您希望的方式对其进行编辑后,将其呈现为 data_dst.mp4 并使用 3)从视频中提取图像 data_dst FULL FPS提取帧,帧将放入“data_dst ” 文件夹,可用选项为 JPG 或 PNG 格式输出 – 如果您想要更小的尺寸,请选择 JPG,为最佳质量选择 PNG。没有帧速率选项,因为您想以原始帧速率提取视频。
第 5 步 – DATA_SRC 人脸/数据集提取
准备 SRC 数据集的第二阶段是从位于“data_src”文件夹内的提取帧中提取人脸。假设您确实重命名了文件夹中的所有帧集,将它们移回主“data_src”文件夹并运行以下4) data_src faceset extract – 使用 S3FD 算法的自动提取器,这将处理您集中的大部分面孔,但并不完美,它将无法检测到某些面孔并产生许多误报并检测到您将不得不或多或少手动删除的其他人。
还有4) data_src faceset extract MANUAL– 手动提取器,使用方法见 5.1。您可以使用它来手动对齐某些面孔,特别是如果您有一些图片或电影中的小资源,这些图片或小源具有一些罕见的角度,这些角度对于自动提取器来说往往很难(例如直接向上或向下看)。S3FD和MANUAL
提取器 的可用选项是: –使用哪个 GPU(或 CPU)进行提取– 使用 GPU,它几乎总是更快。 –面部类型: a) Full Face/FF – 适用于 FF 模型或下半脸类型(Half Face/Hf 和 Mid-Half Face/MF,如今很少使用)。
b) Whole Face/WF – 适用于 WF 模型或更小的模型,推荐作为用于 FF 和 WF 模型的通用/面向未来的解决方案。
c) Head – 对于 HEAD 模型,可以与 WF 或 FF 等其他模型一起使用,但需要非常高分辨率的面部提取才能具有与较低覆盖面类型相同的细节水平(清晰度),使用 3D 地标而不是 2D 地标在 FF 和 WF 中,但仍然与使用这些面部类型的模型兼容。请记住,您始终可以在以后使用4.2
更改面部类型(及其分辨率)以降低一个)data_src/dst util faceset resize or MVE(它也可以将较低的分辨率/面部类型设置为较高的但需要您保留原始帧和照片). 因此,如果您使用 FF 和 WF 模型进行 primarlly 面部交换,我建议使用 WF,而对于主要用于 HEAD 交换的短发组,以及您可能希望在某些时候用于 FF/WF 面部交换的 HEAD。 –
图像中的最大面孔数量——提取器应从帧中提取多少面孔,推荐值为 0,因为它会尽可能多地提取它能找到的面孔。选择 1 或 2 将仅从每一帧中提取 1 或 2 个面孔。
– Resolution of the dataset:这个值将在很大程度上取决于你的源帧的分辨率,下面是我个人的建议取决于源剪辑的分辨率,你当然可以使用不同的值,你甚至可以测量最大的脸有多大给定源是并将其用作值(请记住以 16 为增量使用值)。
稍后也可以使用4.2) data_src/dst util faceset resize更改分辨率或 MVE,您甚至可以使用 MVE 来提取具有估计面部大小选项的面部,该选项将使用提取的面部、原始帧中的地标数据,并以每张面部在框架上的实际大小再次重新提取整个集合。您可以在这两个 MVE 指南线程中阅读有关更改面部类型、数据集分辨率等的更多信息: https:
//mrdeepfakes.com/forums/thread-how-to-fix-face-landmarks-with-mve
https://mrdeepfakes。 com/forums/thread-mve-machine-video-editor-guide
我建议 WF 使用以下值:
720p 或更低分辨率的源 – 512-768
1080p 源 – 768-1024
4K 源 – 1024-2048
对于 HEAD 提取,添加额外的 256-512 只是为了确保您不会遗漏所提取面部的任何细节,或者在距离相机最近的帧上测量头部的实际大小。如有疑问,请使用 MVE 提取人脸并启用估计人脸大小选项。
– Jpeg 质量– 使用 100 以获得最佳质量。DFL只能提取JPG格式的人脸。没有理由低于 100,尺寸差异不会很大,但质量会急剧下降,从而导致质量变差。
–选择是否生成“aligned_debug”图像– 可以在之后生成,它们用于检查地标是否正确,但这也可以用 MVE 完成,你实际上可以用 MVE 手动修复地标,所以在大多数情况下这对 SRC 数据集不是很有用。
第 6 步 – DATA_SRC 排序和清理
SRC 数据集提取完成后,下一步是清除 SRC 数据集中的误报和错误对齐的面孔。为了帮助你对你的脸进行分类,如果它是一个小集合并且只有几个视频使用提供的排序方法应该绰绰有余,如果你正在处理更大的集合,请使用 MVE 进行排序(查看指南获取更多信息)。
要执行排序,请使用4.2) data_src sort –它允许您使用各种排序算法对数据集进行排序,这些是可用的排序类型:
[0] blur – 按图像模糊度排序(通过对比确定),相当慢的排序方法,不幸的是不是完美地检测和正确分类模糊的面孔。
[1] 运动模糊 – 通过检查运动模糊对图像进行排序,有助于去除具有大量运动模糊的面部,比 [0] 模糊更快,可以用作替代方案但类似于 [0] 并不完美。
[2] 面部偏航方向 – 按偏航排序(从向左看到向右看)。
[3] 面部俯仰方向 – 按俯仰排序(从仰视到俯视的面部)。
[4] 源图像中的面部矩形大小 – 按原始帧上面部的大小排序(从最大到最小的面部)。比模糊快得多。
[5] histogram similarity – 按直方图相似度排序,最后是不相似的面孔,对于去除看起来完全不同的面孔很有用,还将它们分组在一起。
[6] histogram dissimilarity – 同上,但不相似的面孔在开始处。
[7] 亮度 – 按整体图像/面部亮度排序。
[8] hue——按色相排序。
[9] 黑色像素的数量 – 按完全黑色像素的数量排序(例如当面部从框架中切掉并且仅部分可见时)。
[10] 原始文件名 – 按原始文件名(从中提取面部的帧的文件名)排序。没有 _0/_1 后缀(假设每帧只有一张脸)。
[11] 图像中的一张脸 – 按照原始帧中有多少张脸的顺序对人脸进行排序。
[12] 绝对像素差异 – 按图像工作方式的绝对差异排序,有助于删除外观截然不同的面孔。
[13] 最佳面孔 – 根据几个因素进行排序,包括模糊和删除重复/相似的面孔,目标是我们希望在排序后拥有多少面孔,丢弃的面孔被移动到文件夹“aligned_trash”。
[14] 更快的最佳人脸——类似于最佳人脸,但使用源图像中的人脸矩形大小而不是模糊来确定人脸质量,比最佳人脸快得多。
我建议从简单的直方图排序 [5] 开始,这会将看起来相似的面孔组合在一起,这包括我们要删除的所有不良面孔,从而使手动选择过程更加容易。
初始排序完成后,打开对齐的文件夹,您可以使用 Windows 资源管理器浏览它,也可以使用 DFL 附带的外部应用程序,它可以更快地加载图像,打开它使用4.1) data_src 查看对齐结果。
之后,您可以通过偏航和俯仰进行额外的排序,以删除任何看起来正确但实际上具有不良地标的面孔。
接下来,您可以按色调和亮度进行排序,以删除任何颜色很深或很暗的面孔,假设您在直方图排序后还没有这样做。
然后,您可以使用按模糊、运动模糊和面部矩形大小排序来删除任何模糊的面部、具有大量运动模糊的面部和小面部。之后你应该有相对干净的数据集。
最后,您可以使用您想要的任何其他方法对它们进行排序, SRC 面孔的顺序和文件名根本不重要,但是我总是建议恢复原始文件名,但不要使用排序选项 10,而是使用 –4.2.other) data_src util 恢复原始文件名。
但是,如果您有包含数十个采访、数千张高分辨率图片以及许多电影和电视节目剧集的大型数据集,您应该考虑采用不同的方法来清理和分类您的场景。
大多数认真制作 deepfakes 并处理大型复杂源集的人很少使用 DFL 进行排序,而是使用称为 Machine Video Editor 或简称 MVE 的外部免费软件。MVE 带有自己的排序方法,几乎可以用于制作 deepfake 视频的所有步骤。这还包括自动场景切割和帧导出(方法 c),用于从您的源内容中获取帧,如步骤 2 – SRC 数据收集中提到的)、数据集增强、标记/遮罩、编辑地标等等。
要关注她的是 Nvidia 相似性排序选项,它的工作方式类似于直方图排序,但它是一种机器学习方法,可以更好地分组面孔,这样你就可以在列表中按顺序获得你想要的人的 99% 的面孔,而且速度要快得多要删除其他面孔,它通常还会更精确地将不正确的面孔、戴眼镜的面孔、黑白面孔或深色面孔组合在一起,您会得到一个面孔组预览,您可以在其中选择或删除特定的面孔组,甚至可以检查哪些面孔在你删除它们之前,面孔在那个组中,但你也可以像在 Windows 资源管理器中或使用 XnView 一样浏览它们。
有关 MVE 的更多信息,请在此处查看可用指南: https: //mrdeepfakes.com/forums/forum-guides-and-tutorials[/LEFT]
MVE GITHUB: https://github.com/MachineEditor/MachineVideoEditor[/LEFT]
MVE 也有一个 discord 服务器(SFW,那里不允许成人 deeepfake 谈话),你可以在 github 页面上找到它的链接。该服务器上有其他指南,请在提问之前先观看它们。
无论您是使用 MVE 还是 DFL 对集合进行排序,最后都可以执行几个最后的步骤 – 重复删除:
这将略微减少面孔数量,从而加快训练速度,并减少集合中不必要的相似面孔和重复面孔。您可以删除 0 级(完全相同的面)和 1 级的面,具体取决于有多少重复项,然后在电源上执行 2 级和 3 级,然后将两者移动到相应命名的两个单独的文件夹中。然后,您可以随时检索它们以查找具有不同眼睛方向或细微表情变化的其他面孔。
接下来(假设你在提取前重命名了帧)最好根据它们的来源将面孔移动到不同的文件夹中:
创建适合你的文件夹结构,我建议采用以下结构:
– 电影、电视节目、访谈和照片的主文件夹(随意根据素材类型添加其他类别)
-在每个类别中,每个单独来源的更多文件夹(对于照片,您可以根据照片类型或按年份分类或将它们全部放在一个文件夹中)-在每个单独的文件夹
中对于给定的源,最清晰、最好的面孔的文件夹和剩下的应该松散地放在基本文件夹中
——你计划增强/放大的所有模糊面孔的文件夹(更多关于它在下面的高级)
– 所有放大面孔的文件夹
– 所有重复面孔的文件夹
– 最后是主文件夹,您可以简单地将其命名为对齐或主数据集,您可以在其中组合所有来源的最佳面孔和放大面孔。
请记住,所有数据都在图像本身中,您可以自由地将它们移动到不同的文件夹、制作副本/备份、将它们存档在不同的驱动器、计算机上,通常您可以自由地将它们移动到 DFL 之外。RAID 不是备份 – 2-3 个副本、冷存储、不同位置不同介质上的额外副本。根据您最终创建的数据量,至少每周或每两周备份一次新数据,最坏的情况下只需几个便携式硬盘驱动器(基于 ssd 的显然更好)。
在你完成之后你应该在你的“data_src”文件夹中有一堆文件夹并且你的“aligned”文件夹现在应该是空的,因为你已经将所有面移动到不同的面,删除它。
您可能希望或需要在提取后提高某些面部的质量和清晰度/细节水平。有些人升级整个数据集,而有些人只移动他们想要升级的模糊人脸,以分离文件夹和数据集的升级部分,这可以在制作最终集之前完成(升级所有模糊的人脸,无论您是否在期间使用它们)训练与否)或在完成最终设置后(仅放大那些你真正需要训练的面孔)。然而,你应该只升级你真正需要的内容,例如,如果你已经有很少的高质量采访并且想要升级另一个具有相似灯光,表情和角度的采访然后跳过它,最好使用已经清晰且质量好的内容而不是为了它而升级一切。高档难得的面孔,难得的表情,
首先收集所有你想要放大的模糊面孔并将它们放入名为“blurry”的文件夹中(例如,随意命名),接下来根据放大方法你可能需要或可能不需要保存你的元数据,一些放大方法将重新训练此信息,但大多数不会,因此您需要这样做。我还建议备份您的模糊文件夹,以防您使用的某些升级方法会替换文件夹中的原始图像(大多数输出到不同的文件夹)。将“blurry”重命名为“aligned”并运行:
4.2) data_src util faceset metadata save – 将 SRC 数据集的嵌入元数据保存在对齐的文件夹中作为 meta.dat 文件,如果你要放大面孔或对它们进行任何类型的编辑,例如颜色校正(旋转或水平/垂直翻转是不允许)。
在你完成增强/放大/编辑你的脸之后,你需要恢复元数据(在某些情况下),这样做将你的“放大”文件夹重命名为“对齐”(或者如果你使用 Colab 或没有在本地放大面一般然后只需将它们复制到新的“对齐”文件夹),将您的 meta.dat 文件从原始“模糊”文件夹复制到“对齐”文件夹并运行:4.2)data_src util faceset metadata restore – 这将恢复元数据和现在这些面孔可以使用了。
如果您忘记保存元数据,只要您拥有原始的模糊文件夹,您可以稍后再做,但是如果您丢失了原始文件夹并且现在只有没有元数据的放大结果,您唯一能做的就是从中提取人脸那些面孔。
第 7 步 – DATA_DST 人脸/数据集提取
这里的步骤与源数据集几乎相同,只有少数例外。首先使用以下方法从 DST 帧中提取人脸:5) data_dst faceset extract – 一种使用 S3FD 人脸检测算法的自动人脸提取器。
除了它你还会注意到其他提取方法,现在不要使用它们但你需要熟悉它们:
5)data_dst faceset extract MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG – 这个也很重要,它被使用从提取后沿“aligned”文件夹创建的文件夹“aligned_debug”删除相应的调试图像后,手动重新提取丢失的面孔,这使得交换所有面孔成为可能,更多关于它在步骤中的使用5.1.
5) data_dst faceset extract MANUAL – 手动提取器,使用方法见5.1。
5) data_dst faceset extract + manual fix – S3FD + manual pass for frames where model didn’t detect any faces, you can use this instead of 5) data_dst faceset extract – 初始提取完成后,将打开一个窗口(与手动提取相同)或重新提取),您将能够从提取器无法检测到任何面部的帧中提取面部,甚至不能检测到误报,但这意味着在您重新提取所有面部之前提取不会完成,所以这是不建议。
现在只需使用第一种方法。
所有提取器模式的可用选项与 SRC 相同,除了没有选择我们要提取的面孔数量 – 它总是尝试提取所有,也没有选择我们是否需要 aligned_debug 文件夹,它是生成的总是因为它需要手动重新提取。
第 8 步 – DATA_DST 排序、清理和面部重新提取
在我们对齐 data_dst 面之后,我们必须清理该集合。
运行5.2) data_dst 排序– 与 src 排序相同,使用 [5] 直方图相似性排序选项,下次运行5.1) data_dst 查看对齐结果– 这将允许您使用提供更快的外部应用程序查看“对齐”文件夹的内容缩略图生成比默认的 Windows 资源管理器,在这里你可以简单地浏览所有面孔并删除所有坏面孔(由于不正确的地标以及误报和其他人faces),完成后运行5.2)data_dst util recover original filename – 与 source 的工作方式相同,它将恢复原始文件名和所有面孔的顺序。
接下来我们必须删除调试帧,以便我们可以使用手动重新提取器从提取器无法正确提取人脸的帧中提取人脸,为此运行 5.1) data_dst 查看 aligned_debug结果– 这将允许您快速浏览“aligned_debug”的内容,在这里您检查所有调试帧以找到目标人脸上的地标放置不正确的地方(没有与脸部、眼睛、鼻子、嘴巴的边缘对齐,眉毛)或丢失,这些帧必须被删除,这将告诉手动重新提取器向您显示哪些帧,以便您可以手动重新提取它们。您可以手动选择所有要删除的调试帧,但这意味着几乎所有的调试帧都需要手动删除,这样很容易错过一些帧,更好的方法是利用对齐的文件夹 (在你清理它之后)现在应该只包含好的面孔,利用它来发挥你的优势(你可以复制调试文件夹,使用对齐文件夹中的面从中删除所有好的帧,然后检查剩下的内容并使用它从原始调试文件夹中删除那些坏帧)。一旦你完成删除所有缺少/坏脸的调试帧被删除运行5) data_dst faceset extract MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG手动从相应帧中重新提取人脸。
手动提取器的使用:
启动手动提取器后,将打开一个窗口,您可以在其中手动定位要提取的面孔和显示进度的命令行窗口:
– 使用 yo。你的鼠标定位面部
– 使用鼠标滚轮改变搜索区域的大小(矩形大小,你在排序中看到了这个选项,你可以根据提取过程中矩形大小的大小对面部进行排序) – 确保全部或至少
大部分地标(在某些情况下,取决于角度、光照或存在的障碍物,可能无法精确对齐所有地标,因此请尝试找到一个覆盖所有地标的点. 可见位最多并且不会太错位)落在眼睛,嘴巴,鼻子,眉毛等重要位置并正确跟随脸部形状,向上箭头显示脸部的“向上”或“顶部”位置
-使用键 A 更改精度模式,现在地标不会“粘”到检测到的面部,您可以更正确地定位地标,它也会运行得更快 – 使用 < 和 > 键(或 , 和。
)前后移动,以确认检测点击鼠标左键并移动到下一个或按回车键确认选择并移动到下一张脸
– 鼠标右键用于对齐不可检测的前向或非人脸(需要应用 xseg正确掩蔽)
– q 跳过剩余的面孔,保存你所做的并退出提取器(当你到达最后一张面孔并确认时它也会关闭并保存)现在
你应该提取所有面孔但在某些情况下你必须运行它几次(我上面提到的情况,反射,分割场景,过渡)。在这种情况下,将您的“对齐”文件夹重命名为其他名称,然后通过重命名对齐面重复这些步骤,将它们复制到“aligned_debug”的副本,替换,删除所选内容,从需要提取的内容中删除剩余内容,复制到原始的“aligned_debug”文件夹,替换,删除荧光笔,再次运行手动重新提取器,然后合并两个对齐的文件夹,确保不会意外地替换一些面孔。
完成后,您可以选择额外的 .bats 来与几乎完成的 dst 数据集一起使用:
5.2) data_dst util faceset pack 和5.2) data_dst util faceset unpack – 与源相同,让您快速将整个数据集打包成一个文件。
5.2) data_dst util faceset resize – 与 SRC 数据集的工作方式相同。
但在你开始训练之前,你还必须屏蔽你的数据集,两者都是。
第 9 步 – XSEG 模型训练、数据集标记和屏蔽
XSeg 有什么用?某些人脸类型需要应用与提取后从数据集获得的默认掩码不同的掩码,这些默认掩码源自与全脸类型相似的地标和覆盖区域,因此为什么要使用全脸或较低覆盖率面部类型 XSeg 不是必需的,但对于整个面部和头部是必需的。在训练 SAEHD/AMP 模型时,无论面部类型如何,XSeg mask 也需要使用 Face and Background Style Power (FSP, BGSP)。
XSeg 允许您定义您希望如何遮盖面部,面部的哪些部分将被训练,哪些不会。
它还需要排除面部上的障碍物进行训练,并且在您合并视频后,例如在面部前面的手被正确排除,这意味着交换的面部以这种方式被掩盖以使手可见而不是覆盖它。
XSeg 可用于排除几乎所有障碍物:您可以完全控制模型认为哪些是人脸,哪些不是。
请先熟悉一些术语,了解 XSeg 模型、数据集、标签和蒙版之间的区别很重要:
XSeg 模型 – 用于将蒙版应用于 SRC 和 DST 数据集以及在合并期间蒙版人脸的用户可训练模型过程。
XSeg 标签 – 用户在脸上绘制的多边形,用于定义面部区域以及 XSeg 模型用于训练的内容。
XSeg 掩码 – 由经过训练的 XSeg 模型生成并应用于 SRC 或 DST 数据集的掩码。
XSeg 数据集——标记人脸的集合(只是一种特定类型或 SRC 和 DST 数据集,以类似方式标记),这些通常由用户在论坛上共享,并且是开始制作自己的集合的好方法,因为您可以下载一个,然后选择您需要的特定面孔,或者向其中添加以类似方式标记的自己标记的面孔。
既然您知道这 4 件事中的每一个意味着什么,那么您理解标记和屏蔽 SRC 人脸和 DST 人脸之间的主要区别是很重要的。
Masks 定义面部样本上的哪个区域是面部本身以及什么是背景或障碍物,对于 SRC 来说,这意味着无论您包含什么,都将由模型以更高的优先级进行训练,而其他所有内容都将以较低的优先级(或精度)进行训练). 对于 DST,它是相同的,但您还需要排除障碍物,以便模型不会将它们视为面部的一部分,并且稍后在合并时这些障碍物是可见的并且不会被最终预测的面部覆盖(不是与预测的 SRC 和预测的 DST 面相混淆)。
要使用 XSeg,您可以使用以下 .bats:
5.XSeg) data_dst mask – edit – XSeg 标签/多边形编辑器,这定义了您希望 XSeg 模型如何训练 DST 面孔的掩码。
5.XSeg) data_dst mask – 获取– 将标记的 DST 面复制到“data_dst”内的文件夹“aligned_xseg”。
5.XSeg) data_dst mask – remove – 从你的 DST 面移除标签。这不会删除您在训练后应用于集合的训练过的 MASKS,它会删除您手动创建的 LABELS,我建议重命名此选项,使其位于列表底部或删除它以避免意外删除标签。
5.XSeg) data_src mask – edit – XSeg 标签/多边形编辑器,这定义了你希望 XSeg 模型如何为 SRC 人脸训练掩码。
5.XSeg) data_src mask – fetch – 将标记的 SRC 面复制到“data_src”内的文件夹“aligned_xseg”。
5.XSeg) data_src mask – 移除– 从您的 SRC 面孔中删除标签。这不会删除您在训练后应用于集合的训练过的 MASKS,它会删除您手动创建的 LABELS,我建议重命名此选项,使其位于列表底部或删除它以避免意外删除标签。
XSeg) train.bat – 开始训练 XSeg 模型。
5.XSeg.optional) trained mask data_dst – apply – 生成 XSeg 掩码并将其应用于 DST 面孔。
5.XSeg.optional) trained mask data_dst – remove – 删除 XSeg 掩码并恢复默认的 FF,如地标派生的 DST 掩码。
5.XSeg.optional) trained mask data_src – apply – 生成 XSeg 掩码并将其应用于您的 SRC 面孔。
5.XSeg.optional) trained mask data_src – 移除– 删除 XSeg 掩码并恢复默认 FF,如地标派生的 SRC 掩码。
如果您没有时间标记人脸和训练模型,您可以使用 DFL 附带的通用 XSeg 模型来快速应用基本的 WF 掩码(可能不会排除所有障碍物),方法如下: 5.XSeg Generic) data_dst whole_face
mask – apply – 将 WF 掩码应用于您的 DST 数据集。
5.XSeg Generic) data_src whole_face mask – apply – 将 WF 掩码应用于您的 SRC 数据集。
XSeg 工作流程:
第 1 步。标记您的数据集。
首先使用5.XSeg) data_src mask – edit和5.XSeg) data_dst mask – edit标记 SRC 和 DST 面
每个工具都有一个书面说明,当您用鼠标经过它时会显示该说明(支持 en/ru/zn 语言)。
为 SRC 和 DST 标记 50 到 200 张不同的面孔,您不需要标记所有面孔,只需标记那些看起来明显不同的面孔,例如:-当面部表情发生变化时(张嘴-闭嘴,大笑-皱眉
) )
– 当脸部的方向/角度发生变化时
– 或者当光照条件/方向发生变化时(通常与脸部角度一起变化,但在某些情况下,光照可能会发生变化,而脸部仍然朝同一方向看)
您标记的面孔越多,Xseg 模型为您生成的蒙版质量就越好。一般来说,数据集越小,需要标记的面孔就越少,角度的变化也是如此,如果你有许多不同的角度和表情,它将需要你标记更多的面孔。
在标记面部时,您可能还希望排除障碍物,以便它们在最终视频中可见,为此您可以: – 不在
主要标签中包含障碍物,该标签定义了您想要通过在其周围绘制来交换的面部区域。
– 或使用排除多边形模式在要排除的障碍物或部分周围绘制附加标签(未训练,合并后可见)。
排除什么:
在训练期间你不想成为脸部一部分的任何东西,并且你希望在合并后可见(不被交换的脸覆盖)。
标记障碍物时,您需要确保按照与标记没有障碍物的面时相同的规则在多个面上标记它们,标记障碍物(即使它在面部/头部时不会改变外观/形状/位置: –
改变角度
– 面部表情变化
– 光照条件变化
如果障碍物另外改变形状和/或在脸上移动,你需要标记几次,虽然不是每张脸上的所有障碍物都需要标记,但仍然有更多种类的不同障碍物发生在各种情况下 – 您必须标记的面孔越多。
以类似的方式标记所有面孔,例如:
– 如果边缘不清晰可见,则使用相同的近似下巴线,查看面孔的阴影方式以找出如何正确绘制线条,这同样适用于仰视的面孔,下巴下方的部分
– 相同的发际线(这意味着总是以相同的方式排除头发,如果你正在做全面罩并且不要越过发际线确保你在眉毛上方画的线总是大部分在眉毛上方相同的高度)
一旦你完成标记/标记你的脸滚动到列表的末尾并按 Esc 键保存它们并关闭编辑器,然后你可以继续训练你的 XSEG 模型。
提示: 您可以使用 MVE 使用更高级的 XSeg 编辑器来标记您的脸部,该编辑器甚至带有自己经过训练的分割(遮罩)模型,可以有选择地包含/排除脸部的许多部分,甚至可以转换应用的遮罩(例如来自共享的 XSeg 模型您下载的或用于将掩码应用于数据集的通用 WF XSeg 模型)返回到标签中,改进它们,然后保存到您的脸上。
第 2 步。训练您的 XSeg 模型。
第一次开始训练时,您会看到一个选择 XSeg 模型面部类型的选项,请使用与数据集相同的面部类型。
您还可以选择要训练的设备以及批量大小,批量大小通常会高得多,因为 XSeg 模型不像面部交换模型的训练那样要求苛刻(您也可以从较低的值开始,然后再提高) .
您可以使用空格切换预览模式(有 3 种模式,DST 训练、SRC 训练和 SRC+DST(失真)。
要更新预览进度,请按 P.
Esc 保存并停止训练。
在训练期间经常检查预览,如果某些人脸在大约 50k 次迭代后蒙版不好(形状不好、孔洞、模糊),请保存并停止训练,将蒙版应用于数据集,运行编辑器,通过在编辑器,标记它们并按 esc 保存并退出,然后恢复 XSeg 模型训练,当启动一个已经训练好的模型时,你会得到一个提示,如果你想重新开始训练,选择否,因为选择是将从 0 重新开始模型训练而不是继续。然而,如果尽管标记了更多的面孔并且迭代次数远高于 100k-150k,但您的蒙版没有改善,则可能需要标记更多的面孔。继续训练,直到您的大部分面部都有锋利的边缘,并且所有障碍物都已正确排除。
第 3 步。将 XSeg 掩码应用于您的数据集。
完成训练后,或者已经应用 XSeg 一次,然后修复具有不良蒙版的面孔之后,是时候将 XSeg 蒙版最终应用到数据集了。额外提示:1. 不要费心制作 1000 点
标签
,标记所有面部将花费太多时间并且不会影响面部 vs 如果您仅使用 30-40 个点来描述面部形状但也不要尝试用 10 个点标记它否则面具将不会光滑,这里的例外是为 HEAD 面部类型训练标记头发,显然需要一些细节才能正确解析单个发束。
2. 不要标记阴影,除非它们是漆黑的。
3. 如果嘴巴刚刚张开,不要在舌头或嘴巴内部做标记。
4. 如果障碍物或面部模糊标记需要覆盖所有应该或不应该可见的东西,不要使偏移量太大
5. 请记住,当您使用模糊时,边缘会内外模糊,如果你在边缘标出一根手指,它在低模糊下看起来不错,但在更高的边缘上它会开始消失并被模型学习的模糊版本所取代,口腔也是如此,在低模糊下它只会显示结果面部牙齿,但如果您应用高模糊,则 DST 牙齿将开始显示并且看起来很糟糕(双牙)。
这意味着:
– 当排除手指等障碍物时 – 在边缘标记它或将标签移开几个像素(但不要太多)。SRC 和 DST
– 排除口腔时 – 记得让标签远离牙齿,除非是后面的牙齿模糊和发黑,否则可以排除。DST、SRC 是可选的,如果你排除 SRC 面部的后牙,XSeg 模型将训练不包括它们,因此它们不会像包含的前牙那样精确地训练,但因为后面的牙齿通常非常模糊和黑暗或者根本不可见它应该不会对你的结果产生太大影响,特别是如果你决定在 DST 上也将它们排除在外,在这种情况下你只会看到 DST 的后牙,排除舌头时适用类似的规则,将它们标记在边缘,如果舌头在嘴里或接触上牙或下牙,请与牙齿保持一定距离。SRC 和 DST 都可以,如果你想训练 SRC 的舌头,不要
面膜使用不当的面部示例:
通过正确标记面部来解决问题(之后训练 XSeg 模型,仅标记它不会使模型更好):
如何使用共享标记的人脸来训练您自己的 XSeg 模型:
下载、提取人脸并将其放置到“data_src/aligned”或“data_dst/aligned”中。确保重命名它们,以免覆盖您自己的面孔(我建议使用 XSEGSRC 和 XSEGDST,以便之后轻松删除)。
您可以将共享的面孔与您自己标记的面孔混合,为模型提供尽可能多的数据来学习蒙版,不要混合面孔类型,确保所有面孔大致遵循相同的蒙版逻辑。
然后开始训练您的 XSeg 模型(或共享模型)。
如何使用共享 XSeg 模型并将其应用于您的数据集:
只需将其放入“模型”文件夹并使用应用 .bat 文件将掩码应用于 SRC 或 DST。
应用蒙版后打开 XSeg 编辑器并通过启用 XSeg 蒙版叠加视图检查蒙版的外观,如果某些面孔没有好看的蒙版,请标记它们,退出编辑器并再次开始 XSeg 模型的训练以修复它们。您还可以按照上述方式混合一些共享面孔(如何使用共享标记面孔)。您可以重复使用 XSeg 模型(如 SAEHD 模型)。
用户共享的 SAEHD 模型可以在模型共享论坛部分找到:
10.培训SAEHD/AMP
如果您不想真正了解所有选项的作用,而只关心在大多数情况下应该有效的简单工作流程,请向下滚动至第6.1 节 – 常见培训工作流程。
警告:没有一种正确的方法来训练模型,了解所有选项的作用,如果您在训练过程中遇到问题(掩蔽问题,由于质量不佳的 SRC 设置或缺少伪影导致面部模糊/扭曲),请将指南回溯到较早的步骤角度/表达式的错误,由于 SRC 集中照明条件变化不均导致的颜色匹配不佳,DST 对齐不佳等)。
目前有 3 种模型可供选择进行训练:
SAEHD (6GB+): 高清风格的自动编码器 – 适用于至少具有 6GB VRAM 的高端 GPU。可调节的。推荐给大多数用户。
AMP (6GB+): 新模型类型,使用不同的架构,变形形状(尝试保留 SRC 形状),具有可调节的变形因子(训练和合并)——适用于至少具有 6GB VRAM 的高端 GPU。可调节的。AMP 模型仍在开发中,我建议您在使用 AMP 之前先学习使用 SAEHD 制作 deepfakes。对于 AMP 工作流程,向下滚动到第 6.2 节。
Quick96 (2-4GB): 专用于具有 2-4GB VRAM 的低端 GPU 的简单模式。固定参数:96×96 像素分辨率、Full Face、Batch size 4、DF-UD 架构。主要用于快速测试。
模型设置电子表格,您可以在其中检查在各种硬件上运行的模型的设置和性能:https://mrdeepfakes.com/forums/threads/sharing-dfl-2-0-model-settings-and-performance.4056/
要开始训练过程,请运行以下其中一项:
6) 训练 SAEHD
6) 训练 Quick96
6) 训练AMP SRC-SRC
6) 训练 AMP
您可能已经注意到 AMP 有 2 个单独的训练可执行文件,暂时忽略它们并首先专注于学习 SAEHD 工作流程。
由于 Quick96 不可调整,您将看到命令窗口弹出并仅询问 1 个问题 – CPU 或 GPU(如果您有更多问题,那么它会让您选择其中之一或同时使用两者进行训练)。
然而,SAEHD 和 AMP 都会为您提供更多调整选项,因为这两种型号都是完全可调的。
在这两种情况下,首先会出现一个命令行窗口,您可以在其中输入模型设置。
第一次启动时,您将可以访问下面解释的所有设置,但如果您使用现有的预训练或训练模型,则某些选项将无法调整。
如果您的“模型”文件夹中有超过 1 个模型,系统还会提示您通过选择相应的编号来选择要使用的模型您还会始终收到提示,以选择要
运行训练器的 GPU 或 CPU在。
训练开始后,您还会看到训练预览。
以下是对所有功能的详细说明,以便(大部分)在开始训练新模型时将它们呈现给用户。
请注意,由于这些模型的工作方式,一旦您开始训练,其中一些将被锁定并且无法更改,以后无法更改的示例包括: – 模型分辨率(通常缩写为“res”) –
模型
架构(“archi”)
– 模型尺寸 (“dims”)
– 面部类型
– 变形因子(AMP 训练)
并非所有选项都适用于所有类型的模型:
对于 LIAE,没有真实面孔 (TF)
对于 AMP,没有架构选择或眼睛和嘴巴优先(EMP)
随着软件的开发,某些型号可能会有更多选项可用或不可用,如果您使用的是最新版本并注意到缺少某些根据本指南仍然可用的选项,或者注意到缺少此处解释的某些选项,请给我发消息通过私人消息或在此线程中发布消息,我会尽快更新指南。
每 N 小时自动备份一次 (0..24 ?:help):不言自明 – 让我们每 N 小时启用一次模型自动备份。将其保留为 0(默认值)将禁用自动备份。默认值为 0(禁用)。
[n] Write preview history ( y/n ?:help ) :在训练期间每隔几分钟保存一次预览图像,如果你选择是,你会得到另一个提示:[n] 为预览历史选择图像 ( y/n ) :如果你选择 N ,模型将随机选择面孔进行预览,否则选择 Y 将在加载数据集后打开一个新窗口,你可以在其中选择他们手动。
Target iteration :在达到一定的迭代次数后将停止训练,例如,如果你想训练你的模型只有 100.000 次迭代,你应该输入 100000 的值。将其保留为 0 将使其运行直到你手动停止它。默认值为 0(禁用)。
[n] 随机翻转 SRC 面 ( y/n ?:help ) :水平随机翻转 SRC 面,有助于用 SRC 面覆盖 DST 数据集中存在的所有角度,因为翻转它们有时会很有帮助(特别是如果我们的场景没有很多不同的光照条件但有大多数角度)但是在很多情况下在某些情况下,它会使结果看起来不自然,因为脸部永远不会完全对称,它还会将面部特征从脸部的一侧复制到另一侧,然后它们可能会出现在两侧或同时出现在两侧。如果我们的 SRC 集足够多样化,建议仅在训练早期使用或根本不使用。默认值为 N。
[y] Flip DST faces randomly ( y/n ?:help ) :随机水平翻转 DST faces,当禁用Flip SRC faces randomlyly时可以提高泛化能力。默认值为 Y。
Batch_size ( ?:help ) :批量大小设置会影响每次迭代中相互比较的面孔数量。最低值为 2,您可以达到 GPU 允许的最高值,这会受到 VRAM 的影响。您的模型分辨率、尺寸越高,您启用的功能越多,需要的 VRAM 就越多,因此可能需要更小的批量大小。建议不要使用低于 4 的值。更大的批量大小将以更慢的训练(更长的迭代时间)为代价提供更好的质量。对于初始阶段,可以设置较低的值以加快初始训练,然后提高。最佳值介于 6-12 之间。如何猜测要使用的批量大小?您可以使用试错法,也可以通过查看其他人可以在他们的 GPU 上实现什么来帮助自己,方法是查看DFL 2.0 模型设置和性能共享线程。
Resolution ( 64-640 ?:help ) :在这里你设置你的模型分辨率,记住这个选项在训练期间不能改变。它会影响交换面孔的分辨率,模型分辨率越高 – 学习到的面孔越详细,但训练也会更重、更长时间。分辨率可以从 64×64 增加到 640×640,增量为:
16(对于常规和 -U 架构变体)
32(对于 -D 和 -UD 架构变体)
更高的分辨率可能需要增加模型尺寸(dims),但这不是强制性的,您可以使用默认的 dims 获得好的结果,并且您可以使用非常高的 dims 获得糟糕的结果,最终它是源数据集的质量最大对质量的影响,所以如果你不能用你的 GPU 运行更高的暗淡,不要紧张,专注于创建一个好的源集,稍后再担心暗淡和分辨率。
面部类型 ( h/mf/f/wf/head ?:help ):此选项让您设置要训练的面部区域,有 5 个选项 – 半脸、中半脸、全脸、全脸和头部:
a) 半脸 (HF) – 只训练从嘴巴到眉毛,但在某些情况下可以切断脸部的顶部或底部(眉毛、下巴、嘴巴)。
b) 中半脸 (MHF)– 旨在通过覆盖比半脸多 30% 的面部来解决 HF 问题,这应该可以防止发生大多数不希望的切断,但它们仍然可能发生。
c) 全脸 (FF) – 覆盖大部分面部区域,不包括前额,有时会切除一点下巴,但这种情况很少发生(仅当对象张开嘴巴时) – 在 SRC 和/或 DST 时最推荐有头发遮住额头。
d) 全脸 (WF) – 扩大该区域以覆盖几乎整个面部,包括前额和侧面的所有面部(直到耳朵,HF、MHF 和 FF 覆盖不了那么多)。
e) 头部(HEAD)– 用于交换整个头部,不适合长头发的对象,如果源面部集/数据集来自单一来源并且 SRC 和 DST 都有短发或不改变形状,则效果最佳角度。
使用所有面部类型时的面部、正面和侧面视图示例:[图像缺失,工作进行中]
架构(df/liae/df-u/liae-u/df-d/liae-d/df-ud/liae- ud ?:help ) :此选项让您在 2 个主要模型架构之间进行选择:DF 和 LIAE 以及它们的变体:
DF:该模型架构以比 LIAE 更差的照明和颜色匹配为代价提供了更好的 SRC 相似性,它还要求 SRC 设置与 DST 的所有角度和照明更好地匹配,并且整体上比可能的设置更好对于 LIAE 很好,它也不处理 SRC 和 DST 之间的一般面部形状和比例不匹配,其中 LIAE 更好,但同时可以处理面部特征实际外观的更大不匹配,并且在你的 GPU 上更轻(较低的 VRAM用法),在正面拍摄时表现更好,但如果 SRC 集未涵盖 DST 所需的所有角度、表情和光照条件,则在困难的角度下可能会更加困难。
利亚:该模型几乎与DF完全相反,如果DST的面部特征和总体外观与SRC差异太大,则它不会产生与DF相比像SRC那样的面孔,但同时更好地处理不同的面部比例和形状与 DF 相比,它还创建了比 DF 更好地匹配 DST 的光照和颜色的面孔,并且在 SRC 集方面更宽容,但这并不意味着如果您缺少 SRC 的主要部分,它可以创建高质量的交换DST 中存在的集合,您仍然需要涵盖所有角度。LIAE 在 GPU 上更重(更高的 VRAM 使用)并且在更复杂的角度上表现更好。
还要确保您阅读了步骤 10.5 中的“Extra training and reuse of trained LIAE/LIAE RTM models – Deleting inter_ab and inter_b files explained:”,了解如何在重用 LIAE 模型时处理它们。
请记住,虽然这些是两种架构的一般特征,但这并不意味着它们将始终如此,训练有素的 DF 模型与 SRC 的相似性可能比训练有素的 LIAE 模型更差,并且您也可能完全无法创建任何看起来像与 LIAE 接近 SRC,与 DF 模型实现近乎完美的色彩和照明匹配。这一切都取决于您的 SRC 和 DST 的匹配程度以及您的 SRC 设置的制作程度,即使您了解所有基础知识仍然需要大量的反复试验。
每个模型都可以使用启用模型架构变体的标志进行更改,它们也可以按如下所示的顺序组合(所有这些都会影响性能和 VRAM 使用): -U :此变体旨在提高与模型的相似性
/相似性源面,一般建议始终使用。
-D:该变体旨在通过在不增加额外计算成本的情况下将可能的分辨率大致提高一倍来提高质量,但是它需要更长时间的训练,必须首先对模型进行预训练以获得最佳结果,并且分辨率必须更改为 32,而不是其他变体中的 16。一般来说,它也应该始终使用,因为该架构允许更高的分辨率模型,但如果您可以访问极高的 vram 设置,则可能值得在没有它的情况下试验训练模型,因为这可能会产生更高质量的结果,就像对于大多数使用普通 joe 设置的用户,建议始终使用它。
-T:此变体以与 -U 不同的方式更改模型架构,但具有相同的目标 – 创建更多类似 SRC 的结果,但它会影响面部的锐度,因为与仅使用 -D/ 相比,它往往会导致轻微的细节丢失-UD 变体。
-C:实验变体,在 ReLu 和 Leaky ReLu 之间切换激活函数(使用风险自负)。
要在 DF/LIAE 之后组合架构变体,请写一个“-”符号,然后按照与上述相同的顺序写字母,示例:DF-UDTC、LIAE-DT、LIAE-UDT、DF-UD、DF-UT 等接下来的
4选项控制影响模型学习能力的模型神经网络维度,修改这些维度会对性能和质量产生重大影响:
Auto Encoder Dims (32-2048 ?:help):自动编码器调暗设置,影响模型学习面孔的整体能力。
Inter Dims ( 32-2048 ?:help ) : Inter dims 设置,影响模型学习面孔的整体能力,应该等于或高于 Auto Encoder dims,仅 AMP。
Encoder Dims ( 16-256 ?:help ) : Encoder dims 设置,影响编码器学习人脸的能力。
解码器调光 ( 16-256 ?:help ) :解码器调光设置,影响解码器重建面孔的能力。
Decoder Mask Dims ( 16-256 ?:help ) : Mask decoder dims 设置,影响学习掩码的质量。可能会也可能不会影响培训的其他一些方面。
更改每项设置时性能的变化会对性能产生不同的影响,如果不进行大量测试,很难衡量每项设置对性能和质量的影响。
每一个都设置为一定的默认值,应该提供最佳结果和训练速度和质量之间的良好折衷。
此外,当更改一个参数时,其他参数也应更改,以保持它们之间的关系相似,这意味着提高 AE dims,E 和 D dims 也应提高,并且 D Mask dims 可以提高,但它是可选的,可以保留在默认值或降低到 16 以节省一些 VRAM,但代价是学习掩码的质量较低(与 XSeg 掩码不同,这些是模型在训练期间学习的掩码,如果您应用了 XSeg,它们可以帮助模型有效地训练面部区域那些学习的掩码基于 XSeg 掩码的形状,否则将学习默认的 FF 地标派生掩码)。当你“
变形因子 ( 0.1 .. 0.5 ?:help ) :影响模型将变形您预测的面孔以使其看起来和表达更像您的 SRC 的程度,典型和推荐值为 0.5。(我需要亲自测试一下,还没有使用 AMP,所以不知道是更高还是更低的值更好)。
Masked training ( y/n ?:help ) :优先训练被掩盖的内容(默认蒙版或应用的 xseg 蒙版),仅适用于 WF 和 HEAD 面部类型,禁用它以与相同的优先级训练整个样本区域(包括背景)脸本身。默认值为 y(启用)。
Eyes and mouth priority ( y/n ?:help ) :尝试通过以更高的优先级训练它们来解决眼睛和嘴巴(包括牙齿)的问题,也可以提高它们的清晰度/细节水平。
Uniform_yaw ( y/n ?:help ) :帮助训练侧脸,强制模型根据偏航在所有脸上均匀训练,并优先考虑侧脸,可能会导致正面训练速度变慢,在预训练期间默认启用,可以是在启用 RW 时使用以改善轮廓/侧面的泛化,或在禁用 RW 以改善这些面的质量和清晰度/细节时使用。当您的源数据集没有很多侧面照片时很有用。可以帮助降低损失值。默认值为 n(禁用)。
模糊我们的面具(是/否?:帮助):模糊蒙版区域之外的区域,使其更平滑。启用蒙版训练后,背景的训练优先级低于面部区域,因此它更容易出现伪影和噪声,您可以将模糊蒙版与背景样式功能结合使用,以获得更接近 DST 面部背景且更平滑的背景,因为此选项提供的额外模糊。必须使用相同的 XSeg 模型将掩码应用于 SRC 和 DST 数据集。
在 GPU 上放置模型和优化器(是/否?:帮助):启用 GPU 优化器会将所有负载放在 GPU 上,这会大大提高性能(迭代时间),但会导致更高的 VRAM 使用率,禁用此功能会将优化器的一些工作卸载到 CPU,从而减少 GPU 和 VRAM 使用率的负载,从而让您以更长的迭代时间为代价实现更高的批量大小或运行更苛刻的模型。如果您收到 OOM(内存不足)错误并且您不想降低批量大小或禁用某些功能,您应该禁用此功能,因此一些工作将被卸载到您的 CPU 并且您将能够运行您的模型而无需以降低速度为代价的 OOM 错误。默认值为 y(启用)。
使用 AdaBelief 优化器?(是/否?:帮助):AdaBelief (AB) 是一种新的模型优化器,可提高模型的准确性和训练面部的质量,启用此选项后,它会取代默认的 RMSProp 优化器。然而,这些改进是以更高的 VRAM 使用为代价的。使用 AdaBelief 时,LRD 是可选的,但仍建议在运行 GAN 训练之前启用 (LRD)。默认值为 Y。
个人注意事项:有人说你可以在现有模型上禁用 Adabelief 并且它会重新训练,我不完全同意这一点并且认为模型永远不会完美恢复并且在你打开或关闭它时忘记太多所以我建议只是坚持启用或禁用它。LRD也一样,有人说是可选的,有人说还是必须的,有人说不是必须的,我还是用AB的,有的人可能不会用,看DFL自带的说明自己下结论。
Use learning rate dropout ( y/n/cpu ?:help ) : LRD 用于加速面部训练并减少亚像素抖动(减少面部抖动,在某种程度上也可以减少灯光闪烁)。
它主要用于3种情况:
– 在禁用 RW 之前,当损失值不再有很大改善时,这可以帮助模型对面孔进行更多泛化
– 在禁用 RW 并且您已经足够好地训练模型后,在接近训练结束时启用它导致更详细、更稳定的面部,不易闪烁
此选项会影响 VRAM 使用,因此如果您遇到 OOM 错误,您可以在 CPU 上运行它,代价是迭代时间减慢 20% 或只是降低批处理大小。
有关 LRD 的更详细说明和在训练期间启用主要功能的顺序,请参阅常见问题解答问题 8
启用样本的随机扭曲(是/否?:帮助):Random warp 用于泛化模型,以便它在初始训练阶段正确学习面部特征和表情,但只要启用它,模型就可能难以学习精细细节 – 因为它建议只要保持启用此功能因为你的面孔仍在改善(通过查看减少的损失值和改善预览窗口中的面孔)并且一旦一切看起来正确(并且损失不再减少)你应该禁用它以开始学习细节,从那时起你就不会重新启用它,除非你通过对某些设置(风格力量、真实面孔等)应用高值来破坏结果,或者当你想重新使用该模型来训练具有相同来源的新目标视频时,或者当与以下组合重新使用时无论是新的 SRC 还是 DST,你总是在启用 RW 的情况下开始训练。默认值为 y(启用)。
Enable HSV power ( 0.0 .. 0.3 ?:help ):在训练期间仅对 SRC 数据集应用随机色调、饱和度和亮度变化,以提高颜色稳定性(减少闪烁),也可能影响最终结果的颜色匹配,此选项有作为 SRC 样本的 HSV 偏移,将 SRC 集的颜色略微平均化的效果仅基于来自 SRC 样本的颜色信息,它可以与颜色转移 (CT)、此选项降低或使用的功率(质量)相结合没有它,如果你碰巧在没有 CT 的情况下获得更好的结果,但只需要使结果面部的颜色稍微更稳定和一致,则需要你的 SRC 数据集在光照条件(方向、强度和色调)方面有很多变化。 , 推荐值为 0.05。
GAN 功率 ( 0.0 .. 10.0 ?:help ): GAN 代表生成对抗网络,在 DFL 2.0 的情况下,它作为一种额外的训练方式来实现,以获得更详细/更清晰的面孔。此选项可在 0.0 到 10.0 的范围内调整,并且仅应在模型或多或少完全训练后启用(在禁用随机样本扭曲并启用 LRD之后)。建议使用较低的值,例如 0.01。确保在开始训练之前备份您的模型(以防您不喜欢结果,得到人工制品或您的模型崩溃)。一旦启用,将显示另外两个设置来调整 GAN 的内部参数:
[RES 的 1/8] GAN 补丁大小 (3-640 ?:help):以更高的 VRAM 使用为代价提高 GAN 训练的质量,默认值为分辨率的 1/8。
[16] GAN 维度(4-64 ?:help): GAN 网络的维度。尺寸越高,需要的 VRAM 越多,但它也可以提高质量,即使在最低设置下也可以获得锐利的边缘,因此建议使用默认值 16,但您可以将其降低到 12-14 以节省一些性能如果你需要。
在 40k 次迭代中使用 GAN 值 0.1 训练的面部示例之前/之后:
[img=650×400]
“真面目”的力量。( 0.0000 .. 1.0 ?:help ) : True face training with a variable power settings let’s you set the model discriminator to higher or lower value, this does is it try to make the final face look more like src, 作为副作用它可以使面部看起来更清晰,但也可以改变光照和颜色匹配,在极端情况下甚至可以使面部看起来改变角度,因为模型将尝试生成看起来更接近训练样本的面部,与 GAN 一样,只应启用此功能一旦随机扭曲被禁用并且模型训练得很好。在启用此功能之前考虑进行备份。切勿使用高值,典型值为 0.01,但您可以使用更低的值,例如 0.001。它对性能的影响很小。默认值为 0.0(禁用)。
[img=500×200]
面部样式功率 (0.0..100.0 ?:help)和背景样式功率 (0.0..100.0 ?:help):此设置控制图像的人脸 (FSP) 或背景 (BSP) 部分的样式转换,它用于将颜色信息从目标/目标人脸 (data_dst) 转移到最终预测的人脸,从而改善光照和颜色匹配但高值会导致预测的人脸看起来不太像您的源脸,而更像您的目标脸。从 0.001-0.1 等小值开始,然后根据您的需要增加或减少它们。此功能会影响内存使用并可能导致 OOM 错误,迫使您降低批量大小才能使用它。对于 Background Style Power (BSP),可以使用更高的值,因为我们不太关心保留 SRC 背景,DFL 为 BSP 推荐的值为 2.0,但您也可以尝试不同的背景值。
默认值为 0.0(禁用)。
src faceset 的颜色转换 (none/rct/lct/mkl/idt/sot ?:help):此功能用于将 data_src 的颜色与 data_dst 相匹配,以便最终结果具有与 data_dst 相似的肤色/色调训练后的最终结果在面部移动时不会改变颜色,通常称为闪烁/闪烁/颜色偏移/颜色变化(如果从包含不同光照条件或颜色的各种来源获取各种面部角度,则可能会发生这种情况分级不同)。有几个选项可供选择:
–无:因为有时越少越好,在某些情况下,您可能会在训练期间没有任何颜色转移的情况下获得更好的结果。
– rct(reinhard 颜色转移):基于: https: //www.cs.tau.ac.il/~turkel/imagepapers/ColorTransfer.pdf
– lct(线性颜色转移):将目标图像的颜色分布与目标图像的颜色分布相匹配使用线性变换的源图像。
– mkl(Monge-Kantorovitch 线性):基于:http://www.mee.tcd.ie/~sigmedia/pmwiki/uploads/Main.Publications/fpitie07b.pdf
– idt(迭代分布传输):基于:http ://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.158.1052&rep=rep1&type=pdf
– sot(切片最优传输):基于: https: //dcoeurjo.github.io/OTColorTransfer/
大多数颜色转移对性能或 VRAM 使用几乎没有影响,除了 SOT,SOT 在训练期间会影响性能,如果在合并期间使用它会严重减慢合并过程,IDT 等其他颜色转移也可能在合并期间对性能产生影响。
使用颜色转移并不总是必需的,但通常会有所帮助,并且在某些情况下绝对是强制性的,您还应该记住,启用它们可以作为集合的扩充,有效地为所有 SRC 样本创建新条件,从而增加训练数据在启用时可能会导致更高的损失,这自然意味着与没有颜色转移的训练相比,模型必须接受更长时间的训练才能达到相同的状态,因为在没有颜色转移的情况下,面部的颜色不会改变那么多。此选项可以与 Random HSV Power 结合使用,后者基于单独设置的 SRC 的颜色提供 SRC 集的额外增强(不像 CT 增强基于 DST 的 SRC),有效地略微平均它的颜色,
启用梯度裁剪 (y/n ?:help):实施此功能是为了防止在使用 DFL 2.0 的各种功能时可能发生的所谓模型崩溃/损坏。它对性能的影响很小,所以如果你真的不想使用它,你必须启用自动备份,因为折叠的模型无法恢复并且必须被删除并且必须重新开始训练。默认值为 n(禁用),但由于对性能的影响非常小,如果启用它可以防止模型崩溃,从而为您节省大量时间。使用 Style Powers 时最有可能发生模型崩溃,因此如果您正在使用它们,强烈建议启用渐变剪裁或备份(您也可以手动进行)。
启用预训练模式(是/否?:帮助):启用预训练过程,该过程使用随机人的数据集来初始预训练您的模型,在将其训练到 500.000 到 1.000.000 次迭代后,可以在开始训练时使用您想要训练的实际 data_src 和 data_dst,这样可以节省时间因为模型已经知道人脸应该是什么样子,所以在训练时面部清晰显示所需的时间更少(确保在实际 data_src 和 data_dst 上训练时禁用预训练)。使用 -D 架构变体的模型必须经过预训练,并且强烈建议对所有模型进行预训练。
可以在此线程中找到用户共享的 SAEHD 模型: https://mrdeepfakes.com/forums/thre…eral-thread-for-user-made-models-and-requests
1. 什么是预训练模型?
预训练模型是通过用不同人的随机面孔训练它们而制成的。使用以这种方式准备的模型可以显着加快初始训练阶段,因为模型已经知道脸部应该是什么样子,所以你不必等待脸部开始出现,而且与训练相比,它们会变得更清晰一个全新的非预训练模型。
您现在还可以共享各种 face_types(全脸、全脸和头部)的自定义预训练集 (SFW/NSFW)。
2.如何使用预训练模型?
只需下载它并将所有文件直接放入您的模型文件夹中,开始训练,在选择要训练的模型(如果您的模型文件夹中有多个模型)和要训练的设备(GPU/CPU)后,在 2 秒内按任意键(你会看到一个提示,说这个确切的事情)覆盖模型设置并确保预训练选项设置为禁用(N),以便你开始训练而不是继续预训练。
如果启用预训练选项 (Y),模型将继续使用 DFL 附带的内置预训练数据集进行预训练(在此线程中,您会发现使用旧的全脸预训练数据集和新的整体训练的模型人脸 FFHQ 数据集)。
请注意,当您禁用预训练并开始定期训练时,模型会将迭代计数恢复为 0,这是预训练模型的正常行为。然而,如果模型被描述为“常规训练”,这意味着它没有经过预训练,而是训练到一定数量的迭代,其中 SRC 和 DST 数据集都包含随机的人脸,在这种情况下模型将继续训练并且迭代计数不会t 从 0 开始,但在共享模型的用户结束训练时的值。
3.如何创建自己的预训练模型?
1. 官方推荐的创建方法是使用预训练选项,该选项将使用 DFL 内置的随机名人面孔数据集,并像这样训练您的模型进行 500k-1kk 次迭代。
在模型经过充分训练后(预览中的大多数人脸应该看起来很清晰,牙齿和眼睛轮廓分明,但不一定有很多非常精细的细节)。
1.1 您还可以将默认的预训练数据集更改为您自己的数据集,您可以通过放置您最有可能伪造的人的随机面孔来制作(它可以是男性、女性、男女混合、仅名人、随机人物)然后使用 util faceset pack.bat 打包它,然后用这个新数据集替换 _internalpretrain_CelebA 中的原始文件。
2. 预训练模型的另一种方法是准备 data_src 和 data_dst 数据集,其中包含随机人物的面孔、不同角度和不同表情,并像平常一样训练模型(禁用预训练)。对于源数据集,您可以使用您将来最有可能交换的名人面孔,对于 DST,您可以使用您最有可能用作目标视频的视频类型中的任何面孔。
然而,应该注意的是,通过简单地在随机面孔上训练模型来准备模型可能会引入一些变形,并使结果面孔在一段时间内看起来不太像源面孔。然而,在使用相同来源进行几次重新训练后,预测面孔的 src 相似度应该会提高。与在预训练模型上训练相比,这种方法可以更快地适应新面孔(因为我们只是简单地重用一个模型,而不是重用在特定 src 数据集上训练的模型,我们重用一个包含随机面孔的模型,如上所述可以包括你最有可能伪造的人的面孔作为你的 src 和 dst 数据集的一部分)。
注意:如果您正在预训练 HEAD 模型,请考虑使用您的自定义预训练集,因为包含的 FFHQ 数据集是全脸类型 (WF)。强烈建议预训练 HEAD 和任何类型的 AMP 模型,FF 和 WF SAEHD 模型是可选的,但它仍然有助于将它们预训练到至少 300-500k,然后将其用作你未来项目的基础或做额外的 500-使用 SAEHD 模型在预训练之上进行 600k 随机训练。
随着 DeepFaceLive (DFLive) 的引入,一个新的训练工作流程已经建立,与一些用户认为这不是一种新的训练方法相反,与常规训练没有显着差异,并且这种训练方法已经被一些人以一种方式使用或者,您可能在没有意识到的情况下无意中创建了一个。
RTM 模型 (ReadyToMerge)是通过训练一个我们想要交换的人的 SRC 集与包含许多人的随机面孔的大量不同的 DST 集来创建的,这些面孔涵盖了所有可能的角度、表情和光照条件。SRC 集还必须有大量不同的面孔。RTM 模型训练的目标是创建一个可以将我们的 SRC 人脸应用于任何视频的模型,主要用于 DeepFaceLive,但也可以通过创建一个可以非常快速地适应新目标视频的基础模型来加快 DeepFaceLab 2.0 中的训练过程与从头开始训练模型相比,用时更短。与RTM
workklow 一起使用的推荐模型类型是SAEHD LIAE模型、LIAE-UD或LIAE-UDT得益于其卓越的色彩和灯光匹配能力,以及比DF架构更能适应不同的脸型。
AMP模型也可用于创建 RTM 模型,尽管它们的工作方式略有不同,而且由于我缺乏解释 AMP 工作流程的专业知识,因此在本指南的这一部分我将只关注 LIAE RTM 模型训练。
1. 从准备SRC set开始:确保你覆盖了所有可能的角度,每个角度都有尽可能多的不同光照条件和表情,对不同可能面孔的覆盖越好,效果越好。
2. 通过收集许多随机人脸来准备 DST 集:该数据集还必须具有尽可能多的多样性,该数据集可以是真正随机的,由各种肤色的男性和女性面孔组成,或者它可以特定于黑色男性面孔或亚洲女性面孔(如果是那种类型)您计划主要使用模型的目标面孔的数量越多,集合中的面孔越多,训练模型所需的时间就越长,但模型可能会更好,因为它将能够更正确地交换到更多种类的面孔不同的面孔。
或者 – 使用来自 iperov 的 RTM WF 数据集: https://tinyurl.com/2p9cvt25
如果链接失效,请转到https://github.com/iperov/DeepFaceLab并找到指向 DFL 构建的 torrent/magnet 链接,因为它们包含 RTM WF 数据集,相同的数据集可用于训练 RTT 模型。
3. 将 XSeg 掩码应用于两个数据集:这将确保模型正确训练,并且与创建 WF 模型所需的任何其他训练一样,虽然它对于 FF 模型是可选的,但仍然建议将正确类型的 XSeg 掩码应用于两个数据集, 请确保对两个数据集使用相同的 XSeg 模型。
4. 使用现有的 RTT 模型或创建新模型: iperov 推荐的 RTT 模型是大量重新训练的模型,迭代次数超过 2-3kk,因此创建它们可能需要很多时间,作为替代方案可以预训练一个 LIAE 模型进行 600k-1kk 次迭代,更多关于在下一阶段制作 RTT。
5. 使用下面的工作流程开始对您的 SRC 和随机 DST 进行训练,请注意,与 iperov 相比,其中一些已略有修改,使用风险自负。
5.1 Iperov 的新工作流程:
设置:启用 EMP、启用模糊遮罩、启用 UY、启用 LRD、BS:8(如果您不能以足够高的 BS 运行模型,请降低它或在 cpu 上运行模型优化器和 lrd)。
其他选项应保留默认值(通常意味着禁用)。可选择使用功率为 0.1 的 HSV 和最适合您的 CT 模式,通常是 RCT。
在每个阶段之前进行备份或启用自动备份。
1. 在启用 RW 的情况下训练 +2.000.000 迭代并每 500k 迭代删除 inter_AB.npy(保存并停止模型训练,删除文件并恢复训练)
2. 在启用 RW 的情况下,删除 inter_AB 第 4 次训练额外的 +500k。
3. 如果交换后的脸看起来更像 DST,删除 inter_AB 并重复步骤 2。
4. 禁用 RW 并训练额外的 +500k 迭代器。
5. 启用功率为 0.1 的 GAN,GAN_Dims:32 和 Patch Size 为 +800.000k 迭代模型分辨率的 1/8。
5.2 Iperov 的旧工作流程:
1. 进行 500k-1kk 迭代随机扭曲:Y,均匀偏转:Y,LRD:N,模糊蒙版:Y,颜色转移:LCT,其他设置保留默认值。
2. 接下来使用 LRD:Y 进行 500k 次迭代,保持步骤 1 中的其他设置。
3. 然后使用 Uniform Yaw:N 进行 500k 次迭代
4. 现在使用 Random Warp:N,Uniform Yaw:进行 500-800k 次迭代: N ,LRD: 是 *
5. 最后使用 Random Warp:N,Uniform Yaw:N,LRD:Y 和 GAN:0.1,GAN PATCH SIZE:(模型分辨率的 1/8)进行 200-300k 次迭代,GAN DIMS:32
完成模型训练后,您可以在 DFL 中使用它们或导出为 DFM 模型以在 DFLive 中使用。
要导出用于 DFLive 的模型,请使用 6) 将 SAEHD 导出为 dfm 或 6) 将 AMP 导出为 dfm,您可以选择量化模型,这可以使其运行得更快,但某些模型,特别是具有高分辨率和如果您在启用此选项的情况下导出它们,高网络维度 (dims) 值可能无法正常工作,因此请确保您在 DFLive 中对其进行测试,该过程不会删除原始模型,只会在您的“模型”文件夹中创建额外的 DFM 文件。如果您的模型不能很好地工作,请在禁用量化选项的情况下再次导出它。
如果您想在 DFL 中使用您的 RTM 模型您可以开始提取新场景并将它们与该模型合并而无需任何额外训练,或者进行一些额外训练。
经过训练的 LIAE/LIAE RTM 模型的额外训练和重用 – 删除 inter_ab 和 inter_b 文件解释:
What are inter_ab and _b files? 这些是使用 LIAE 架构的 SAEHD 模型的一部分(不管附加的 -U、-D、-T 和 -C 变体),不像 DF 架构有一个用于 SRC 和 DST 的公共内部文件,LIAE 有两个内部文件,inter_ab其中包含 SRC 和 DST 面的潜在代码(表示)和包含 DST 面的潜在代码的附加 inter_b。
1.删除inter_b当您想在新 DST 上将 RTM 模型重用为常规 LIAE 模型并从启用 RW 开始训练模型(作为常规模型训练)时,从模型文件夹中提取文件。
适用于重用经过训练的 LIAE 模型并更改 DST 但不适用于 SRC。2.当你想为不同的名人创建一个新的RTM模型时删除
inter_ab文件,用新的替换SRC,添加随机DST集并继续与创建新RTM模型时相同的工作流程。
适用于重用经过训练的 LIAE 模型并更改 SRC 而不是 DST 3.当您想使用经过训练的 RTM 模型对目标 DST 执行额外训练时,
请勿删除 inter_ab 或 inter_b 。
不适用于常规训练的 LIAE 模型重用(可能会遇到问题,您的最终预测面孔看起来就像 DST 或与 SRC 的相似性很低) 4. 在常规场景中重用训练有素的 LIAE 模型时,删除 inter_ab 和
inter_b , src/dst 都发生变化,或者您遇到结果看起来像 DST 的问题,请注意这与禁用预训练时发生的情况类似,只有编码器/解码器保持训练状态,所有其他数据都被删除,这意味着模型在某种程度上返回到一个状态,就好像它只是经过预训练(不完全但比训练状态更接近),这可能会导致训练花费更长的时间。
在这种情况下,只需将随机 DST 替换为特定目标 DST,然后在禁用 RW 的情况下开始训练:
如果您想使用旧的 iperov 工作流程进行训练,请从旧工作流程的第 4 步开始。
如果您想使用新的 iperov 工作流程进行训练,请从新工作流程的第 4 步开始。
RTM 模型共享线程: https://mrdeepfakes.com/forums/thread-sharing-dfl-2-0-readytomerge-rtm-models-sharing
11.合并
完成模型训练后,是时候将学习到的面部与原始帧合并以形成最终视频了。
为此,我们有 3 个转换器对应 3 个可用模型:
7) 合并 SAEHD
7) 合并 AMP
7) 合并 Quick96
选择其中任何一个后,将出现一个命令行窗口,其中包含几个提示。
第一个会询问您是否要使用交互式转换器,默认值为 y(启用),建议在常规转换器上使用它,因为它具有所有功能以及交互式预览,您可以在其中看到所有更改的效果您在更改各种选项和启用/禁用各种功能时
使用交互式合并?( y/n ) :
第二个会问你要使用哪个模型:
选择一个已保存的模型,或输入名称以创建新模型。
[r] : rename
[d] : delete
[0] : df192 – latest
3rd one 将询问您要将哪个 GPU/GPU 或 CPU 用于合并(转换)过程:
选择一个或多个 GPU idx(以逗号分隔).
[CPU] : CPU
[0] : Your GPU
[0] 选择哪个 GPU 索引?:
按回车键将使用默认值 (0)。
完成后,您将看到一个带有当前设置的命令行窗口以及一个预览窗口,其中显示了操作交互式转换器/合并所需的所有控件:[图像
丢失,工作正在进行]
这是所有合并/转换器功能的列表解释:
请通过按 Tab 键查看帮助屏幕,以查看哪些键对应于哪个选项,以防它们发生变化或者您使用的是不同布局的键盘,它们也可能会随着时间而变化。
也不是说合并 AMP 可能不具有 SAEHD 合并的所有选项,但是一旦您了解了 SAEHD 合并,那么 AMP 非常相似,大多数选项具有相同的名称并且以相似的方式工作。我不会用 AMP 特定的合并信息来扩展该指南,因为它几乎完全相同,只有很少的缺失或添加,帮助屏幕(选项卡)的存在是有原因的。
1. 主要叠加模式:
– 原始:显示没有换脸的原始帧
– 叠加:在框架上简单叠加学习的面部 – 这是推荐使用的叠加模式,因为它最稳定并且保留了大部分原始训练的面部外观。
– hist-match:叠加学习的人脸和轮胎以根据直方图匹配它,它有两种模式:正常和遮罩,可以用 Z 切换 – 推荐正常。
– 无缝:使用 opencv 泊松无缝克隆功能将新学习的面部融合到原始帧中
– 无缝历史匹配:结合了历史匹配和无缝。
– raw-rgb:在没有任何掩蔽的情况下覆盖原始学习面部
2. Hist match threshold:控制 hist-match 和无缝 hist-match 覆盖模式下直方图匹配的强度。
Q – 增加价值
A – 减小值
3. Erode mask:控制遮罩的大小。
W – 增加蒙版侵蚀(较小的蒙版)
S – 减少蒙版侵蚀(较大的蒙版)
4. 模糊蒙版:模糊/羽化蒙版的边缘以实现更平滑的过渡
E – 增加模糊
D – 减少模糊
5. 运动模糊:输入初始参数(转换器模式、模型、GPU/CPU)后,合并加载所有帧和 data_dst 对齐数据,同时它会计算用于创建此设置控制的运动模糊效果的运动矢量,它让你将它添加到面部四处移动的地方,但高值可能会模糊面部,即使移动很小。该选项仅在“data_dst/aligned”文件夹中存在一组面孔时才有效 – 如果在清理期间您有一些面孔带有 _1 前缀(即使只有一个人的面孔存在)效果将不起作用,同样如此如果有一面镜子可以反射目标人脸,在这种情况下你不能使用运动模糊,添加它的唯一方法是分别训练每组人脸。
R – 增加运动模糊
F – 减少运动模糊
6. Super resolution:使用与data_src dataset/faceset enhancer类似的算法,它可以为牙齿、眼睛等区域添加更多定义,增强学习人脸的细节/纹理。
T – 增加增强效果
G – 减少增强效果
7. 模糊/锐化:使用框或高斯方法模糊或锐化学习的人脸。
Y – 锐化面部
H – 模糊面部
N – 方框/高斯模式切换
8. 面部缩放: 将学习的面部缩放为更大或更小。
U – 学习的比例面朝下
J – 学习的比例面朝上
9. 遮罩模式:有 6 种遮罩模式:
dst:使用从 data_dst 面集/数据集提取期间生成的地标形状派生的掩码。
learned-prd:使用训练期间学习的掩码。保持 SRC 面的形状。
learned-dst:使用训练期间学习的掩码。保持 DST 面的形状。
learned-prd*dst:结合两个掩码,两者的尺寸较小。
learned-prd+dst:结合了两个掩码,两者的尺寸都更大。
XSeg-prd:使用 XSeg 模型使用来自源面孔的数据进行掩蔽。
XSeg-dst:使用 XSeg 模型使用来自目标面孔的数据来遮蔽 – 这种模式是您最有可能使用的一种模式,因为它会根据 DST 的形状遮蔽面部并排除所有障碍物(假设您确实正确标记了 DST 面孔) .
XSeg-prd*dst:结合了两个面具,两者的尺寸较小。
learned-prd*dst*XSeg-dst*prd:结合所有 4 种掩码模式,所有模式的尺寸较小。
10. 颜色转换模式:类似于训练时的颜色转换,您可以使用此功能将学习到的人脸的肤色更好地匹配到原始帧中,从而实现更无缝和逼真的换脸。有 8 种不同的模式:
RCT – 最常使用和推荐。
LCT – 第二个最常使用的选项,效果比 RCT 强。
MKL
MKL-M – RCT 的良好替代品,在某些方面非常相似。
IDT
IDT-M
SOT-M
MIX-M
11.图像降级模式:您可以使用 3 种设置来影响原始帧的外观(不影响交换的脸):
去噪– 去噪图像使其稍微模糊(I – 增加效果,K – 减少效果)
Bicubic – 使用双三次模糊图像方法(O – 增加效果,L – 减少效果)
颜色– 减少颜色位深度(P – 增加效果,; – 减少效果)
AMP 特定选项:
变形因子:较高的值将导致纯粹的预测结果,降低它会平滑变形在它和你的 DST 脸之间,最后它只显示 DST 脸。
附加控件:
TAB 按钮- 在主预览窗口和帮助屏幕之间切换。
有关键的完整列表(以及它们控制的内容,例如向前/向后移动、开始合并),请查看帮助屏幕。
请记住,这些仅在主预览窗口中有效,在帮助屏幕上按任何按钮都不会执行任何操作。
12. 将帧转换回视频
合并/转换所有面孔后,您将在“data_dst”文件夹中有一个名为“merged”的文件夹,其中包含所有帧以及包含蒙版帧的“merged_masked”。
最后一步是将它们转换回视频并与 data_dst.mp4 文件中的原始音轨结合。
为此,您将使用提供的 4 个 .bat 文件之一,这些文件将使用 FFMPEG 将所有帧组合成以下格式之一的视频 – avi、mp4、无损 mp4 或无损 mov:- 8) 合并到 avi
–
8 ) 合并到 mov 无损
– 8) 合并到 mp4 无损
– 8) 合并到 mp4
或者,如果您想拥有更多控制权,进一步优化视频某些部分的蒙版,调整面部颜色或执行其他操作,您可以通过从 data_dst、原始帧、合并帧和蒙版帧中获取音频来手动合成视频,将它导入你知道的视频编辑软件并手动创建最终视频,这让你可以做我已经提到的事情,通过进一步模糊或锐化它们来调整蒙版(通常称为蒙版羽化),稍微放大或减小尺寸蒙版(从而或多或少地显示其下方的 DST 面部,对您的面部应用额外的色彩校正和色彩匹配(通过使用蒙版仅显示合并帧的面部部分),添加锐化、胶片颗粒/噪点等。
在 youtube 上查找视频合成指南,因为它的主题太复杂,无法在本指南中涵盖。或者查看我们论坛上的视频合成/编辑线程,您可以在指南的开头找到链接(有用的链接),或者只需访问此链接:https ://mrdeepfakes.com/forums/thread-guide-compositing -post-processing-video-editing-guides目前内容不多,但涵盖了一些基础知识,可帮助您入门。
就是这样!
如果您有更多问题未在此线程中涵盖,请使用搜索选项并检查其他线程和指南以获取有关该过程的更多信息(或使用谷歌),或者PM我了解更多信息,我提供付费帮助,可以教你关于 DFL、MVE 和其他相关知识的一切,这样你就可以立即开始制作完美的 deepfakes。
当前问题/错误:
问题报告的 Github 页面:https://github.com/iperov/DeepFaceLab/issues
如果您在现有论坛线程中找不到确切的问题,则 github 上没有提到它,您相信没有人否则发现它但在这里创建一个新线程:
https://mrdeepfakes.com/forums/forum-questions
如果您的问题很常见,您的主题将被删除,恕不另行通知。使用搜索功能,如果您通过直接从命令行窗口复制错误来搜索错误,请记住只复制关键错误部分,因为不同用户的目录名称会有所不同。报告问题时,请确保包括您的完整 PC 规格(CPU、GPU、RAM 数量、操作系统)以及您的 DFL 版本和型号设置,并描述导致您遇到问题的原因。