查看: 1902|回复: 10

DeepFaceLab 2.0 指南

[复制链接]

3717

积分

165

帖子

1178

符石

渡劫丹师

Rank: 6Rank: 6

积分
3717

灌水之王论坛元老咸鱼勋章

发表于 2023-6-26 18:42:50 | 显示全部楼层 |阅读模式
deepfacelab 2.0 指南

在你发布新问题或发布关于
遇到的问题的新贴之前,请先看完这个指南以及常见问题解答(请善用搜索功能)
如果
想根据我的指南制作自己的指南或正在重新发布它,请注明出处,不要窃取它。

DFL 2.0 下载(百度盘): 下载
DEEP FACE LIVE: 下载
DFL 2.0 GITHUB 页面(新更新、技术支持和问题报告): GITHUB


如果
没有至少 8GB 显存的电脑,你可以租用一些云平台的GPU使用。

在没有确定是否能够运行DFL之前,请勿盲目购买显卡,关于咸鱼买卡,请注意分辨真伪...



第 0 步 - 介绍

一、要求。

使用 Deep Face Lab 2.0 需要配备至少4G显存的显卡、充足的内存、硬盘和相对较新的CPU的组成的高性能电脑。通常建议大多数用户使用 Windows 10(但Win10会占用掉你显卡10-20%的显存),如果你会用Linux,可以使用 Linux 避免显存占用以获得更好的性能。Windows 11 也可使用。确保你使用标准版本,使用 N/KN 版本的 Windows 可能会破坏 DFL,如果您使用 N/KN 版本的 Windows 从 Windows Store 安装免费的媒体功能包以确保 DFL 正常工作。

制作非常基本和低质量/分辨率换脸视频的最低要求:

- 支持 AVX 和 SSE 指令的现代 4 核 CPU
- 16GB 内存
- 具有 4GB 显存的 Nvidia 或 AMD 显卡(适用于 192 分辨率的模型)
- 充足的硬盘空间和虚拟内存,虚拟内存至少设置为电脑内存的 4 倍。

推荐的硬件配置:

- 支持 AVX 和 SSE 指令的 8-32 核 CPU
- 单 GPU 配置 32GB 内存,2+ GPU 配置 64GB+内存
- 10系及以上的 Nvidia 显卡,最低 8GB 显存(适用于 256 分辨率的模型, 256-320
分辨率的模型需要11-12GB,320+ 分辨率的模型需要16-24GB 显存)
- 充足的 固态硬盘,虚拟内存 最小为 内存 大小的 4 倍(如果你能负担得起更大的虚拟内存,那就买吧)。

散热 - 你需要确保你的硬件充分散热(在使用期间随时检查你的 CPU 和 GPU 的温度,如果任何东西超过 85 度,请考虑更换你的 CPU 冷却器并更换 CPU 和 GPU 上的导热硅脂)。

电源 - 训练模型通常需要几天的时间,一个辣鸡 电源 可能很容易发生故障,可能会损坏其他硬件,尽量使用品牌电源,还要确保它满足您配置的功率要求,使用下面的
电源 功率计算器检查你的功率需求,如果不够,请升级它。

PSU 功率计算器

您还需要确保更新您的操作系统以及所有驱动程序,但主要是您的显卡驱动程序,如果您使用的是 Nvidia,请考虑切换到经评估可提供比 Game Ready 驱动程序更好的稳定性和兼容性的 Studio 驱动程序。更新驱动程序时考虑下载显示驱动程序卸载程序并在安全模式下运行它以完全删除现有驱动程序,从 Guru3D 下载它:下载 DDU

安装新驱动程序(无论是 Studio/Game Ready 驱动程序还是 AMD 驱动程序)时选择全新安装。

最后确保在 Windows 10/11 下启用硬件加速 GPU 调度。

2. 为您的 GPU 下载正确的 DFL 构建(构建命名方案可能会更改):

- 对于 Nvidia GTX 900-1000 和 RTX 2000 系列以及使用与这些系列相同架构的其他 GPU,使用“DeepFaceLab_NVIDIA_up_to_RTX2080Ti”构建。
- 对于 Nvidia RTX 3000 系列卡和其他使用相同架构的 GPU,使用“DeepFaceLab_NVIDIA_RTX3000_series”构建。
- 对于 AMD 卡,使用“DeepFaceLab_DirectX12”构建(可能不适用于某些较老型号的 AMD 显卡)。

第 1 步 - DFL 基础知识

DeepFaceLab 2.0由几个 .bat 组成,这些脚本用于运行创建 deepfakes 所需的各种进程,在主文件夹中你会看到它们和 2 个文件夹:
  • _internal - 内部文件,使 DFL 工作的东西,千万别碰它们!
  • workspace——这是你的模型、视频、帧、数据集和最终视频输出所在的位置。

基本术语:

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 恢复该文件名。

避免使用任何符号、空格或非标准字母以避免以后出现任何问题,将您的帧命名为类似于以下示例:

“TomCruiseMI4K”、NataliePortmanInterview12015、“JackBlackJumanjiPremiere1080p”等。

您可以通过几种不同的方式提取帧:

a) 你通过将每个视频重命名为 data_src 分别提取每个视频(视频应为 mp4 格式,但 DFL 使用 FFMPEG,因此它可能应该处理任何格式和编解码器)通过使用2)从视频 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的更多信息:

[url=https://mrdeepfakes.com/forums/thread-mve-machine-video-editor-guide[/LEFT]]https ://mrdeepfakes.com/forums/thread-mve-machine-video-editor-guide[/url]

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。您可以使用它来手动对齐某些面孔,特别是如果您有一些图片或电影中的小资源,这些图片或小源具有一些​​罕见的角度,这些角度对于自动提取器来说往往很难(例如直接向上或向下看)。S3FDMANUAL

提取器的 可用选项是: -使用哪个 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 指南线程中阅读有关更改面部类型、数据集分辨率等的更多信息:

[url=https://mrdeepfakes.com/forums/thread-how-to-fix-face-landmarks-with-mve[/LEFT]]https[/url]

[url=https://mrdeepfakes.com/forums/thread-mve-machine-video-editor-guide[/LEFT]]://mrdeepfakes.com/forums/thread-how-to-fix-face-landmarks-with-mve https://mrdeepfakes。 com/forums/thread-mve-machine-video-editor-guide[/url]

我建议 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] histog内存 similarity - 按直方图相似度排序,最后是不相似的面孔,对于去除看起来完全不同的面孔很有用,还将它们分组在一起。
[6] histog内存 dissimilarity - 同上,但不相似的面孔在开始处。
[7] 亮度 - 按整体图像/面部亮度排序。
[8] hue——按色相排序。
[9] 黑色像素的数量 - 按完全黑色像素的数量排序(例如当面部从框架中切掉并且仅部分可见时)。
[10] 原始文件名 - 按原始文件名(从中提取面部的帧的文件名)排序。没有 _0/_1 后缀(假设每帧只有一张脸)。
[11] 图像中的一张脸 - 按照原始帧中有多少张脸的顺序对人脸进行排序。
[12] 绝对像素差异 - 按图像工作方式的绝对差异排序,有助于删除外观截然不同的面孔。
[13] 最佳面孔 - 根据几个因素进行排序,包括模糊和删除重复/相似的面孔,目标是我们希望在排序后拥有多少面孔,丢弃的面孔被移动到文件夹“aligned_trash”。
[14] 更快的最佳人脸——类似于最佳人脸,但使用源图像中的人脸矩形大小而不是模糊来确定人脸质量,比最佳人脸快得多。

我建议从简单的直方图排序 [5] 开始,这会将看起来相似的面孔组合在一起,这包括我们要删除的所有不良面孔,从而使手动选择过程更加容易。

初始排序完成后,打开对齐的文件夹,您可以使用 Windows 资源管理器浏览它,也可以使用 DFL 附带的外部应用程序,它可以更快地加载图像,打开它使用4.1) data_src 查看对齐结果。

下面是清理前的示例源数据集,其中根据您应该如何处理面部颜色进行了编码(旧图像,工作进行中):

[img=1280x720]

绿色 - 良好的面孔/对齐方式。
红色- 未对齐,您可以看到它们略微旋转,您肯定不希望它们出现在您的数据集中,您可以删除它们或尝试手动提取它们。
蓝色- 障碍物/覆盖物/脸上的文字 - 如果它只是整个数据集中少数人脸上的小障碍物,则可以保留。
黄色- 模糊的脸,应该被移除,除非它是一个独特的角度/表情,少量可能有助于概括脸部,但你绝对不想要太多这些(类似于障碍物,最好保持在 5% 以下)。
紫色- 其他人的脸,显然那些必须被移除。
粉色的- 切掉脸,如果它只有一点下巴或前额或者它没有超过脸,它们可以被留下,假设它在整个数据集中只有几张脸或者它具有独特的角度/表情。
橙色- 到黑暗/明亮/过度曝光/低对比度的面孔 - 还有任何带有强烈照片/instag内存 滤镜等的图片,通常它们应该被删除,但你可能想尝试返回提取的帧,编辑它们(增加/减少亮度/对比度/饱和度)并再次提取以保留它们,如果它们与其余部分仅略有不同,则可以保留它们,假设您在训练期间使用颜色转移将它们全部平均到其他人和 DST。

之后,您可以通过偏航和俯仰进行额外的排序,以删除任何看起来正确但实际上具有不良地标的面孔。
接下来,您可以按色调和亮度进行排序,以删除任何颜色很深或很暗的面孔,假设您在直方图排序后还没有这样做。
然后,您可以使用按模糊、运动模糊和面部矩形大小排序来删除任何模糊的面部、具有大量运动模糊的面部和小面部。之后你应该有相对干净的数据集。
最后,您可以使用您想要的任何其他方法对它们进行排序,SRC 面孔的顺序和文件名对任何事情都没有关系,但是我总是建议恢复原始文件名,但不要使用排序选项 10,而是使用 - 4.2。其他)data_src util 恢复原始文件名。

但是,如果您有包含数十个采访、数千张高分辨率图片以及许多电影和电视节目剧集的大型数据集,您应该考虑采用不同的方法来清理和分类您的场景。


大多数认真制作 deepfakes 并处理大型复杂源集的人很少使用 DFL 进行排序,而是使用称为 Machine Video Editor 或简称 MVE 的外部免费软件。MVE 带有自己的排序方法,几乎​​可以用于制作 deepfake 视频的所有步骤。这还包括自动场景切割和帧导出(方法 c),用于从您的源内容中获取帧,如步骤 2 - SRC 数据收集中提到的)、数据集增强、标记/遮罩、编辑地标等等。

要关注她的是 Nvidia 相似性排序选项,它的工作方式类似于直方图排序,但它是一种机器学习方法,可以更好地分组面孔,这样你就可以在列表中按顺序获得你想要的人的 99% 的面孔,而且速度要快得多要删除其他面孔,它通常还会更精确地将不正​​确的面孔、戴眼镜的面孔、黑白面孔或深色面孔组合在一起,您会得到一个面孔组预览,您可以在其中选择或删除特定的面孔组,甚至可以检查哪些面孔在你删除它们之前,面孔在那个组中,但你也可以像在 Windows 资源管理器中或使用 XnView 一样浏览它们。

有关 MVE 的更多信息,请在此处查看可用指南: [url=https://mrdeepfakes.com/forums/forum-guides-and-tutorials[/LEFT]]https://mrdeepfakes.com/forums/forum-guides-and-tutorials[/LEFT][/url]

MVE GITHUB: [url=https://github.com/MachineEditor/MachineVideoEditor[/LEFT]]https://github.com/MachineEditor/MachineVideoEditor[/LEFT][/url]

MVE 也有一个 discord 服务器(SFW,那里不允许成人 deeepfake 谈话),你可以在 github 页面上找到它的链接。该服务器上有其他指南,请在提问之前先观看它们。

无论您是使用 MVE 还是 DFL 对集合进行排序,最后都可以执行几个最后的步骤 - 重复删除:

这将略微减少面孔数量,从而加快训练速度,并减少集合中不必要的相似面孔和重复面孔。您可以删除 0 级(完全相同的面)和 1 级的面,具体取决于有多少重复项,然后在电源上执行 2 级和 3 级,然后将两者移动到相应命名的两个单独的文件夹中。然后,您可以随时检索它们以查找具有不同眼睛方向或细微表情变化的其他面孔。

接下来(假设你在提取前重命名了帧)最好根据它们的来源将面孔移动到不同的文件夹中:

创建适合你的文件夹结构,我建议采用以下结构:
- 电影、电视节目、访谈和照片的主文件夹(随意根据素材类型添加其他类别)
-在每个类别中,每个单独来源的更多文件夹(对于照片,您可以根据照片类型或按年份分类或将它们全部放在一个文件夹中)
-在每个单独的文件夹中对于给定的源,最清晰、最好的面孔的文件夹和剩下的应该松散地放在基本文件夹
中——你计划增强/放大的所有模糊面孔的文件夹(更多关于它在下面的高级
- 所有放大面孔的
文件夹 - 所有重复面孔的文件夹
- 最后是主文件夹,您可以简单地将其命名为对齐或主数据集,您可以在其中组合所有来源的最佳面孔和放大面孔。

请记住,所有数据都在图像本身中,您可以自由地将它们移动到不同的文件夹、制作副本/备份、将它们存档在不同的驱动器、计算机上,通常您可以自由地将它们移动到 DFL 之外。RAID 不是备份 - 2-3 个副本、冷存储、不同位置不同介质上的额外副本。根据您最终创建的数据量,至少每周或每两周备份一次新数据,最坏的情况下只需几个便携式硬盘驱动器(基于 ssd 的显然更好)。

在你完成之后你应该在你的“data_src”文件夹中有一堆文件夹并且你的“aligned”文件夹现在应该是空的,因为你已经将所有面移动到不同的面,删除它。

高级- SRC 数据集增强


您可能希望或需要在提取后提高某些面部的质量和清晰度/细节水平。有些人升级整个数据集,而有些人只移动他们想要升级的模糊人脸,以分离文件夹和数据集的升级部分,这可以在制作最终集之前完成(升级所有模糊的人脸,无论您是否在期间使用它们)训练与否)或在完成最终设置后(仅放大那些你真正需要训练的面孔)。然而,你应该只升级你真正需要的内容,例如,如果你已经有很少的高质量采访并且想要升级另一个具有相似灯光,表情和角度的采访然后跳过它,最好使用已经清晰且质量好的内容而不是为了它而升级一切。高档难得的面孔,难得的表情,

首先收集所有你想要放大的模糊面孔并将它们放入一个名为“blurry”的文件夹中(例如,随意命名),接下来根据放大方法你可能需要或可能不需要保存你的元数据,一些放大方法将重新训练此信息,但大多数不会,因此您需要这样做。我还建议备份您的模糊文件夹,以防您使用的某些升级方法会替换文件夹中的原始图像(大多数输出​​到不同的文件夹)。将“blurry”重命名为“aligned”并运行:

4.2) data_src util faceset metadata save - 将 SRC 数据集的嵌入元数据保存在对齐的文件夹中作为 meta.dat 文件,如果你要放大面孔或对它们进行任何类型的编辑,例如颜色校正(旋转或水平/垂直翻转是不允许)。

接下来你可以开始放大/增强你的脸,如果你要在本地运行软件,请在你的“data_src”文件夹中创建一个“放大”文件夹并使用几种流行的方法之一:

1. DFL Enahnce - 内置算法,提供微妙的效果,适用于只需要一点点改进并且已经很不错的面孔,相当慢,保留元数据,您可以使用4.2) data_src util faceset enhance运行它- 它将创建一个具有不同名称的“对齐”文件夹的副本,并将放大的面孔输出到其中。

2. DFDNet - 外部软件,face imaginator, strong effect, enahnce very blurry faces but is easily to cause artifacts and can affect recognizability of the upscaled face (because it imagines detail), 比DFL Enhance快一点,应该重新训练元数据但是我建议为这种方法保存它,它可以在Colab上运行:
[url=https://colab.research.google.com/github/rocketsvm/DFDNet/blob/master/DFDNet_DFL_Colab.ipynb#scrollTo=OZ7-E-vRSYar[/LEFT]]https://colab.research.google.com/g..._DFL_Colab.ipynb#scrollTo=OZ7-E-vRSYar[/LEFT][/url]
也可作为MVE的插件。 3.Topaz AI软件- 外部付费软件,简单的upscaler,类似于DFL Enhance,将提供微妙的效果,更适合已经有一些细节的人脸,不会想象细节或高档非常模糊的人脸,可用的产品很少,他们对待人脸与任何其他图像一样,因此不保留元数据,因此您必须使用模糊文件夹中的 meta.dat 文件来恢复它。

4. Remini -移动应用程序,使用缓慢但MVE内置了构建图像拼贴的功能,允许您上传一张包含多张面孔的非常大的图像,从而同时放大多张面孔,这是所有方法中质量最好的,但在处理侧面时遇到困难,并且通过生成新的方式以类似于 DFDNet 的方式工作假细节可能准确也可能不准确,也会对面部的牙齿、眼睛等部位产生负面影响,并且会与运动模糊的面部作斗争(比如所有基于 GAN 的面部增强器,DFDNet、GPEN、GPFGAN 和其他一些都是这样的增强器).

5.GPEN、GPFGAN等- 有更多可用的升级方法,但大多数都没有内置到 DFL 中,不要作为 MVE 的插件出现,或者不是易于使用的产品,请自行研究这些方法并使用可以为您提供帮助的方法最好的结果,这个论坛上有讨论各种升级方法的线程,包括许多比较,只需使用搜索选项找到这些(我不会链接它们,因为它们可能会更改或删除,而且这些线程都不是官方的和批准的由我或 mod/admin 团队的其他成员)。

在你完成增强/放大/编辑你的脸之后,你需要恢复元数据(在某些情况下),这样做将你的“放大”文件夹重命名为“对齐”(或者如果你使用 Colab 或没有在本地放大面一般然后只需将它们复制到新的“对齐”文件夹),将您的 meta.dat 文件从原始“模糊”文件夹复制到“对齐”文件夹并运行:4.2)data_src util faceset metadata restore - 这将恢复元数据和现在这些面孔可以使用了。

如果您忘记保存元数据,只要您拥有原始的模糊文件夹,您可以稍后再做,但是如果您丢失了原始文件夹并且现在只有没有元数据的放大结果,您唯一可以做的就是从中提取人脸那些面孔,

还有其他方法可用,但这两种是唯一相当容易使用的方法,其他方法可能需要一些编码知识才能在 Windows 下本地运行,或者必须在 Colab 或 Linux 上运行。.

您可以在此阶段使用的一些其他有用的脚本:

4.2) data_src util 添加地标调试图像
- 在提取 SRC 面后生成调试图像,但是与 DST 提取期间默认获得的调试文件夹不同,或者如果您在 SRC 提取期间启用调试生成这只会在对齐的文件夹中添加调试图像,这些图像基本上是该文件夹中存在的面孔,上面覆盖着地标,大部分无用,因为使用 MVE 您也可以显示地标,并且您可以从无法从中提取的帧中添加新的地标并编辑现有的。

4.2) data_src util faceset resize - 允许您调整数据集的大小或将它们的面型更改为您的模型,从而减少训练期间的 CPU 负载并略微提高性能(但我对其进行了测试,并没有发现性能有任何重大改进。用例已被在步骤 4 中解释 - Data_src 面向提取/对齐。该过程完成后,它会询问您是否要将调整后的对齐与原始对齐合并,这样做将不可逆转地覆盖原始对齐,因此选择否(N)并仅更改名称文件夹,建议作为最终集的

最后一步之一完成。你可以做的最后一步是打包你的脸,这将使它们加载得更快(几秒而不是几分钟),打包你的 SRC/DST 数据集使用4.2 ) data_src util faceset pack4.2) data_src util faceset unpack - 打包集也可用于替换 DFL 附带的默认预训练数据集,它还使共享和存档集更容易共享,因为它是一个文件(但在驱动器故障的情况下,打包集可能会变成已损坏,因此只能使用它来获得原始主集的副本以便快速使用,不要将其作为整个集的唯一副本)。

第 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 f内存es 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 资源管理器,在这里你可以简单地浏览所有面孔并删除所有坏面孔(与旁边的其他人相比非常小或大,旋转,误报/非面孔,其他人的面孔),完成后运行5.2) data_dst util recover original filename - 与 source 的工作方式相同,它将恢复原始文件名和所有面的顺序。

接下来我们必须删除调试帧,以便我们可以使用手动重新提取器从提取器无法正确提取人脸的帧中提取人脸,为此运行5.1) data_dst 查看 aligned_debug 结果- 这将允许您快速浏览“aligned_debug”的内容,在这里你检查所有的调试帧,找到我们目标人物脸上的地标放置不正确的地方(没有与脸部、眼睛、鼻子、嘴巴、眉毛的边缘对齐)或丢失,那些必须删除帧,这将告诉手动重新提取器向您显示哪些帧,以便您可以手动重新提取它们。

您可以手动选择所有要删除的调试帧,但这意味着几乎所有的调试帧都需要手动删除,这样很容易错过一些帧,更好的方法是创建“aligned_debug”文件夹的副本,然后返回到您的“对齐”文件夹并重命名它们以删除出现在所有面上的 _0 后缀,如果您每帧也有多个面孔,那么它们将具有 _1 后缀(如果您的场景中有镜子,可能会发生或者它是某种分屏镜头,或者在两个镜头之间有平滑的淡入淡出过渡)。

如果每帧确实有 2 张面孔,那么您必须将两者分开,以便您现在对齐的只有一组面孔,稍后您可能需要为第二组面孔重新提取面孔。

仍然突出显示删除它们(如果取消选择,则只需根据图像大小对文件夹进行排序,然后重新选择所有替换调试帧的面孔)。你剩下的只是调试框架,现在你的“对齐”文件夹中没有人脸. 只需删除所有不必要的帧,直到只剩下计划从中重新提取面孔的帧,然后选择它们并复制到原始的 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 pack5.2) data_dst util faceset unpack - 与源代码相同,让您快速将整个数据集打包到一个文件中。

5.2) data_dst util faceset resize - 与 SRC 数据集的工作方式相同。

但在你开始训练之前,你还必须屏蔽你的数据集,两者都是。

第 9 步 - XSEG 模型训练、数据集标记和屏蔽


新:现在有一个预训练的通用 WF XSeg 模型包含在 DFL (_internal/model_generic_xseg) 中,如果您没有时间为您自己的 WF XSeg 模型标记人脸或者只需要快速将基本的 WF 掩码应用于您的集合,您可以使用按照 .bats 这样做:

5.XSeg Generic) data_dst whole_face mask - apply - 将 WF masks 应用于 DST 数据集。
5.XSeg Generic) data_src whole_face mask - apply - 将 WF 掩码应用于您的 SRC 数据集。

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 - fetch - 将标记的 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 - 获取- 将标记的 SRC 面复制到“data_dst”内的文件夹“aligned_xseg”。
5.XSeg) data_src mask - remove - 从你的 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 - remove - 删除 XSeg 掩码并恢复默认的 FF,如地标派生的 SRC 掩码。

XSeg 工作流程:

第 1 步。标记/标记您的数据集。


如果您从其他人的 XSeg 模型开始,并且该用户还为您提供了 XSeg 数据集(或者您有一些 XSeg 模型和不同的 XSeg 数据集),那么首先将掩码应用到您的两个集合并在 XSeg 编辑器中检查生成的掩码(您可以在编辑器中启用蒙版视图),很可能大多数人脸都会被正确蒙版,只有少数人需要一些额外的标签,无论您是否这样做或不继续执行下面描述的任务:

首先标记 SRC 和夏令时面对使用5.XSeg) data_src mask - edit5.XSeg) data_dst mask - edit

每个工具都有一个书面说明,当您用鼠标经过它时会显示该说明(支持 en/ru/zn 语言)。

为 SRC 和 DST 标记 50 到 200 张不同的面孔,您不需要标记所有面孔,只需标记那些看起来明显不同的面孔,例如:

- 当面部表情发生变化时(张嘴 - 闭嘴,大笑 - 皱眉) )
- 当脸部的方向/角度发生变化
时 - 或者当光照条件/方向发生变化时(通常与脸部角度一起变化,但在某些情况下,光照可能会发生变化,而脸部仍然朝同一方向看)

您标记的面孔越多,Xseg 模型为您生成的蒙版质量就越好。一般来说,数据集越小,需要标记的面孔就越少,角度的变化也是如此,如果你有许多不同的角度和表情,它会需要你标记更多的面孔。

对所有面部保持相同的标记“逻辑”,例如:

- 如果边缘不清晰可见,则使用相同的近似下巴线,查看面部的阴影方式以弄清楚如何正确绘制线条,这同样适用于面部正在向上看,下巴下面的部分
- 相同的发际线(这意味着始终以相同的方式排除头发,如果您正在做全面罩并且不要越过发际线,请确保您在眉毛上方画的线大部分始终处于相同的高度眉毛上方)

标记/标记障碍物:

在标记面部时,您可能还想排除障碍物,以便它们在最终视频中可见,为此您可以:

- 在定义面部区域的主多边形中不包括障碍物想通过在它周围画图来交换。
- 或使用排除多边形模式在障碍物或您希望可见或不接受训练的部分周围绘制附加标签。

排除什么:

- 大/粗发束和一些较小的单根毛发,如果它们足够粗/明显(与皮肤形成鲜明对比)。
- 双手和其他物体放在脸前。
- 肩膀、腿和其他覆盖面部大部分的大障碍物(确保这张脸的标志在可见部分是正确的,并且在被遮挡部分的位置和形状也相当准确,将 XSeg 应用于不正确提取的面部不会让他们正确训练)。
-用于 DST 面孔(可选)张嘴时排除口腔(深色部分和舌头,不要排除门牙),如果看不到牙齿,请将其标记为嘴唇所在的位置,如果可以看到牙齿,请确保在它和牙齿之间留有间隙标签以防止在合并过程中模糊面具后出现双牙,对于 SRC 面部,您可以跳过此步骤并包括整个面部,但舌头伸出嘴巴时除外,以及面部其他您不想接受训练的部位,排除口腔的原因是模型经常不能正确地训练舌头和后面的牙齿,并不意味着你不能尝试正确地训练它,因此这是一个可选的“障碍” "排除。

标记障碍物时,您需要确保按照与标记没有障碍物的面时相同的规则在多个面上标记它们,标记障碍物(即使它在面部/头部时不会改变外观/形状/位置:

- 改变角度
- 面部表情变化
- 光照条件变化

如果障碍物另外改变形状和/或在脸上移动,你需要标记几次,虽然不是每张脸上的所有障碍物都需要标记,但仍然有更多种类的不同障碍物发生在各种情况下 - 您必须标记的面孔越多。

此外,在标记 SRC 面孔时,您可能希望排除不想接受训练的 SRC 面孔的某些部分,例如面部纹身、疤痕、穿孔,特别是如果这些仅出现在来自特定来源的某些面孔上,那么这些部分就不会被训练' 进行训练,模型将用排除项周围的近似颜色填充这些空白,因此 SRC 面部的这些部分在最终预测的面部上将不可见。

如何标记不同面部类型的面部:


- 对于从下巴到眉毛略上方的面部进行 FF 标记,在侧面照片中全脸会排除很多,因此您可能不想在面部侧面(或下方)画一条直线因为下巴的嘴巴经常会被全脸切掉)

- 对于从下巴到发际线的 WF 标记面孔,用于正面拍摄,对于侧面拍摄,请确保遵循下巴线(如果它明显可见,如果它不那么明显,则近似它并使用相同的逻辑标记所有面孔) , 如果耳朵可见,请不要包括耳朵,标记到头发开始的地方。

- 对于 HEAD 包括整个面部和头发,请确保面罩精确,包括耳朵,您也可以选择包括一点脖子。请记住,HEAD 仅适用于短而静态的头发,您可能能够正确地掩盖移动的较长头发,但您将无法正确地训练和交换它或获得良好的效果。

一旦你完成标记/标记你的脸,滚动到列表的末尾并按 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 蒙版最终应用到数据集了。另外,正如我已经解释过的,如果您使用的是 FF SAEHD 模型,则无需应用数据集,您可以在合并期间简单地使用 XSeg,方法是选择新的屏蔽模式,例如 XSeg-Prd 或 XSeg-Dst(或组合它们与自己和学习的蒙版),但为了获得最佳效果,建议无论如何应用它们,因为使用 Style Power 时您会获得更好的结果,因为这些 XSeg 蒙版比用于定义面部和背景区域的学习蒙版精确得多。

额外提示:

1. 1000分的label就不用费心了,把所有的脸都打上去会很费时间,而且不会影响脸型,如果只用30-40分来描述脸型,也不要尝试用 10 分标记它,否则蒙版将不光滑,这里的例外是为 HEAD 面部类型训练标记头发,显然需要一些细节才能正确解决个别发束。
2. 不要标记阴影,除非它们是漆黑的。
3. 如果嘴巴刚刚张开,不要在舌头或嘴巴内部做标记。
4.如果障碍物或面部模糊标记需要覆盖所有应该或不应该可见的东西,不要使偏移量太大
5. 请记住,当您使用模糊时,边缘会内外模糊,如果您在边缘上标记出一根手指,它在低模糊下看起来不会很糟糕,但在较高的模糊上它会开始消失并被替换为模型学习的模糊版本,同样适用于口腔,在低模糊下它只会显示结果面部牙齿但如果你应用高模糊那么 DST 牙齿将开始显示并且看起来很糟糕(双牙)。

这意味着:

- 当排除手指等障碍物时 - 在边缘标记它或将标签移开几个像素(但不要太多)。SRC 和 DST

- 排除口腔时 - 记得让标签远离牙齿,除非是后面的牙齿模糊和发黑,否则可以排除。DST、SRC 是可选的,如果你排除 SRC 面部的后牙,XSeg 模型将训练不包括它们,因此它们不会像包含的前牙那样精确地训练,但因为后面的牙齿通常非常模糊和黑暗或者根本不可见它应该不会对你的结果产生太大影响,特别是如果你决定在 DST 上也将它们排除在外,在这种情况下你只会看到 DST 的后牙,排除舌头时适用类似的规则,将它们标记在边缘,如果舌头在嘴里或接触上牙或下牙,请与牙齿保持一定距离。SRC 和 DST 都可以,如果你想训练 SRC 的舌头,不要

XSeg 编辑器:

[图像缺失,工作进行中]

训练预览:
.
[图像缺失,工作进行中]

正确蒙面的例子:
.
[图像丢失,工作进行中]

面罩使用不当的面部示例:


                               
登录/注册后可看大图



通过正确标记面部来解决问题(之后训练 XSeg 模型,仅标记它不会使模型更好):


                               
登录/注册后可看大图



如何使用共享标记的人脸来训练您自己的 XSeg 模型:

下载、提取人脸并将其放置到“data_src/aligned”或“data_dst/aligned”中。确保重命名它们,以免覆盖您自己的面孔(我建议使用 XSEGSRC 和 XSEGDST,以便之后轻松删除)。
您可以将共享的面孔与您自己标记的面孔混合,为模型提供尽可能多的数据来学习蒙版,不要混合面孔类型,确保所有面孔大致遵循相同的蒙版逻辑。
然后开始训练您的 XSeg 模型(或共享模型)。

如何使用共享 XSeg 模型并将其应用于您的数据集:

只需将其放入“模型”文件夹并使用应用 .bat 文件将掩码应用于 SRC 或 DST。

应用蒙版后打开 XSeg 编辑器并通过启用 XSeg 蒙版叠加视图检查蒙版的外观,如果某些面孔没有好看的蒙版,请标记它们,退出编辑器并再次开始 XSeg 模型的训练以修复它们。您还可以按照上述方式混合一些共享面孔(如何使用共享标记面孔)。您可以重复使用 XSeg 模型(如 SAEHD 模型)。

用户共享的 SAEHD 模型可以在模型共享论坛部分找到:训练有素的模型在此处分享您预训练的 deepfake 模型,以帮助其他人入门。通常,来自不同应用程序的模型不可互换。
mrdeepfakes.com




10.培训SAEHD/AMP

如果您不想真正了解所有选项的作用,而只关心在大多数情况下应该有效的简单工作流程,请向下滚动至第6.1 节 - 常见培训工作流程。

警告:
没有一种正确的方法来训练模型,了解所有选项的作用,如果您在训练过程中遇到问题(掩蔽问题,由于质量不佳的 SRC 设置或缺少伪影导致面部模糊/扭曲),请将指南回溯到较早的步骤角度/表达式的错误、由于 SRC 集中照明条件的多样性低导致的颜色匹配不佳、DST 对齐不佳等)。

目前有 3 种模型可供选择进行训练:

SAEHD (6GB+):
高清风格的自动编码器 - 适用于至少具有 6GB 显存 的高端 GPU。可调节的。推荐给大多数用户。

AMP (6GB+):
新模型类型,使用不同的架构,变形形状(尝试保留 SRC 形状),具有可调节的变形因子(训练和合并)——适用于至少具有 6GB 显存 的高端 GPU。可调节的。AMP 模型仍在开发中,我建议您在使用 AMP 之前先学习使用 SAEHD 制作 deepfakes。对于 AMP 工作流程,向下滚动到第 6.2 节。

Quick96 (2-4GB):
专用于具有 2-4GB 显存 的低端 GPU 的简单模式。固定参数:96x96 像素分辨率、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 允许的最高值,这会受到 显存 的影响。您的模型分辨率、尺寸越高,您启用的功能越多,需要的 显存 就越多,因此可能需要更小的批量大小。建议不要使用低于 4 的值。更大的批量大小将以更慢的训练(更长的迭代时间)为代价提供更好的质量。对于初始阶段,可以设置较低的值以加快初始训练,然后提高。最佳值介于 6-12 之间。如何猜测要使用的批量大小?您可以使用试错法,也可以通过查看其他人可以在他们的 GPU 上实现什么来帮助自己,方法是查看DFL 2.0 模型设置和性能共享线程

Resolution ( 64-640 ?:help ) :在这里你设置你的模型分辨率,记住这个选项在训练期间不能改变。它会影响交换面孔的分辨率,模型分辨率越高 - 学习到的面孔越详细,但训练也会更重、更长时间。分辨率可以从 64x64 增加到 640x640,增量为:

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 上更轻(较低的 显存用法),在正面拍摄时表现更好,但如果 SRC 集未涵盖 DST 所需的所有角度、表情和光照条件,则在困难的角度下可能会更加困难。

利亚:该模型几乎与DF完全相反,如果DST的面部特征和总体外观与SRC差异太大,则它不会产生与DF相比像SRC那样的面孔,但同时更好地处理不同的面部比例和形状与 DF 相比,它还创建了比 DF 更好地匹配 DST 的光照和颜色的面孔,并且在 SRC 集方面更宽容,但这并不意味着如果您缺少 SRC 的主要部分,它可以创建高质量的交换DST 中存在的集合,您仍然需要涵盖所有角度。LIAE 在 GPU 上更重(更高的 显存 使用)并且在更复杂的角度上表现更好。
还要确保您阅读了步骤 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 设置的制作程度,即使您了解所有基础知识仍然需要大量的反复试验。

每个模型都可以使用启用模型架构变体的标志进行更改,它们也可以按如下所示的顺序组合(所有这些都会影响性能和 显存 使用):

-U:此变量旨在提高与模型的相似性,一般建议始终使用。
-D:该变量旨在通过在不增加额外计算成本的情况下将可能的分辨率大致提高一倍来提高质量,但是它需要更长时间的训练,必须首先对模型进行预训练以获得最佳结果,并且分辨率必须更改为 32,而不是16。一般来说,它也应该始终使用,因为该架构允许更高的分辨率模型,但如果您可以访问极高的 显存 设置,则可能值得在没有它的情况下试验训练模型,因为这可能会产生更高质量的结果,就像对于大多数使用普通 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 以节省一些 显存,但代价是学习蒙版的质量较低(与 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 上,这会大大提高性能(迭代时间),但会导致更高的 显存 使用率,禁用此功能会将优化器的一些工作卸载到 CPU,从而减少 GPU 和 显存 使用率的负载,从而让您以更长的迭代时间为代价实现更高的批量大小或运行更苛刻的模型。如果您收到 OOM(内存不足)错误并且您不想降低批量大小或禁用某些功能,您应该禁用此功能,因此一些工作将被卸载到您的 CPU 并且您将能够运行您的模型而无需以降低速度为代价的 OOM 错误。默认值为 y(启用)。

使用 AdaBelief 优化器?(是/否?:帮助):AdaBelief (AB) 是一种新的模型优化器,可提高模型的准确性和训练面部的质量,启用此选项后,它会取代默认的 RMSProp 优化器。然而,这些改进是以更高的 显存 使用为代价的。使用 AdaBelief 时,LRD 是可选的,但仍建议在运行 GAN 训练之前启用 (LRD)。默认值为 Y。

个人注意事项:有人说你可以在现有模型上禁用 Adabelief 并且它会重新训练,我不完全同意这一点并且认为模型永远不会完美恢复并且在你打开或关闭它时忘记太多所以我建议只是坚持启用或禁用它。LRD也一样,有人说是可选的,有人说还是必须的,有人说不是必须的,我还是用AB的,有的人可能不会用,看DFL自带的说明自己下结论。

Use learning rate dropout ( y/n/cpu ?:help ) : LRD 用于加速面部训练并减少亚像素抖动(减少面部抖动,在某种程度上也可以减少灯光闪烁)。
它主要用于3种情况:
- 在禁用 RW 之前,当损失值不再有很大改善时,这可以帮助模型更多地概括面孔
- 在禁用 RW 并且您已经足够好地训练模型后,在接近训练结束时启用它导致更详细、更稳定的面部,不易闪烁
此选项会影响 显存 使用,因此如果您遇到 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):以更高的 显存 使用为代价提高 GAN 训练的质量,默认值为分辨率的 1/8。

[16] GAN 维度(4-64 ?:help): GAN 网络的维度。尺寸越高,需要的 显存 越多,但它也可以提高质量,即使在最低设置下也可以获得锐利的边缘,因此建议使用默认值 16,但您可以将其降低到 12-14 以节省一些性能如果你需要。

在 40k 次迭代中使用 GAN 值 0.1 训练的面部示例之前/之后:

[img=650x400]

“真面目”的力量。( 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=500x200]

面部样式功率 (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/

大多数颜色转移对性能或 显存 使用几乎没有影响,除了 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 打包它,然后用这个新数据集替换 \_internal\pretrain_CelebA 中的原始文件。

2. 预训练模型的另一种方法是准备 data_src 和 data_dst 数据集,其中包含随机人物的面孔、不同角度和不同表情,并像平常一样训练模型(禁用预训练)。对于源数据集,您可以使用您将来最有可能交换的名人面孔,对于 DST,您可以使用您最有可能用作目标视频的视频类型中的任何面孔。

然而,应该注意的是,通过简单地在随机面孔上训练模型来准备模型可能会引入一些变形,并使结果面孔在一段时间内看起来不太像源面孔。然而,在使用相同来源进行几次重新训练后,预测面孔的 src 相似度应该会提高。与在预训练模型上训练相比,这种方法可以更快地适应新面孔(因为我们只是简单地重用一个模型,而不是重用在特定 src 数据集上训练的模型,我们重用一个包含随机面孔的模型,如上所述可以包括你最有可能伪造的人的面孔作为你的 src 和 dst 数据集的一部分)。

注意:如果您正在预训练 HEAD 模型,请考虑使用您的自定义预训练集,因为包含的 FFHQ 数据集是全脸类型 (WF)。强烈建议预训练 HEAD 和任何类型的 AMP 模型,FF 和 WF SAEHD 模型是可选的,但它仍然有助于将它们预训练到至少 300-500k,然后将其用作你未来项目的基础或做额外的 500-使用 SAEHD 模型在预训练之上进行 600k 随机训练。

10.1 通用训练工作流程


注意:LIAE 体系结构在重用模型(经过训练)时可能会以不需要的方式运行,因此与 RTT/RTM 训练类似,它可能需要用户删除两个内部文件(inter_ab、inter_b)之一,以便让模型正确学习新面孔更改 SRC、DST 或两者时(谈论身份,但即使在 SRC 和 DST 中使用相同的主题,也会在两张脸上进行重大照明类型更改)。

请阅读步骤 10.5“Extra training and reuse of trained LIAE/LIAE RTM models - Deleting inter_ab and inter_b files explained:”以获取有关删除哪个内部文件以及何时删除的详细说明(这取决于正在更改的内容、SRC、DST 或两者) ).


这是一个非常简单、简化的工作流程,使用风险自负,我建议您正确了解每个选项并练习它们的使用以得出您自己的工作流程,使用它很可能会导致次优质量,但总体而言应该会给您一些看起来并不完全垃圾的东西,但大多数人可能会以类似的方式进行训练,因为在 DFL 中做某些事情有适当的顺序,只是经常有你需要稍微改变一下的情况,您也不会总是需要我们所有可用的选项来获得良好的结果,了解软件的工作原理和每个选项的作用总是有帮助的,并允许您根据需要调整工作流程,所以请阅读整篇文章(整个指南,而不是这个简化的工作流程)。
请不要问我为什么在这个工作流程中会出现这样的情况,如果您需要帮助,请阅读我在这个简化的工作流程中提到的各种选项使用的解释。

第 1 步 - 预训练您自己的模型或下载预训练/训练模型并将其放在您的“模型”文件夹中。

第 2 步 - 在仅启用随机扭曲 (RW) 并禁用其他所有功能的情况下开始训练以在数据集上泛化模型,如果您使用的 SRC 数据集非常有限,则可以启用 SRC 面的随机翻转,使用 RCT、LCT 或 SOT 颜色转移(RCT 通常足够好,LCT 只在非常特殊的情况下好,SOT 最好但是又重又慢,还有 MKL 和 IDT 模式,随意尝试所有并使用在给定场景中效果最好的模式),保持训练直到所有的脸都被正确训练,看起来像 SRC 并且没有任何看起来不正确的脸,如果你发现坏脸检查脸的 DST 地标并检查你是否有那个角度的 SRC 样本,这个或类似的表情并且在相似的光照条件下,如果不是,则改进您的 SRC 数据集并修复 DST 错位。您的损失也应该不再那么快(dfl 每 25 分钟保存并更新当前损失,如果在 2-4 小时后损失没有下降太多,请转到下一步)。

第 3 步 - 修复数据集后继续训练,可能需要一些时间才能改善所有错误的预测,因为模型需要学习新面孔,一旦一切看起来都很好并且你的损失在过去 2-4 小时内没有太大变化您可以选择启用 EMP 几个小时以改善嘴巴和眼睛的泛化(EMP 在启用时优先考虑这些区域,当它丢失时会随着时间的推移上升和下降,但在您禁用它之前不会达到 EMP 之前的损失值。 ),然后禁用EMP并启用UY,均匀偏航将改善各种困难的角度,轮廓(侧面)面等,一旦损失再次停滞你可以禁用UY或保持启用并启用LRD并训练直到损失再次停滞,确保也检查预览,不要不要只依赖损失值,请记住,取决于两组的大小和质量,您可能会注意到不同的损失值,您很少会在不同的项目中达到相同的值,有时在 RW 阶段结束时,您可能会达到 0.4,其他SRC、DST 或两者损失 0.3 倍(通常 DST 是单一来源,更一致且更小,因此在这些情况下,SRC 损失会更高并且它可能仍在下降,而 DST 损失已经没有太大改善,如果 SRC 是仍在改进继续训练)。更一致和更小,所以在这些情况下,SRC 损失会更高,并且它可能仍在下降,而 DST 损失已经没有太大改善,如果 SRC 仍在改善继续训练)。更一致和更小,所以在这些情况下,SRC 损失会更高,并且它可能仍在下降,而 DST 损失已经没有太大改善,如果 SRC 仍在改善继续训练)。

第 4 步 - 禁用 RW、UY(如果你在运行 LRD 时保持启用)和 LRD,继续训练,现在模型将学习更精细的细节,脸部将开始看起来更细致,尤其是精细细节区域,如牙齿、眉毛、眼睛等。一旦损失再次停滞,您可以重复步骤 3 中的步骤,EMP 几个小时,然后禁用 EMP 并启用 UY(或在 UY 运行时保持 EMP 启用),然后禁用 UY 和 EMP 或保持 UY 启用(但禁用 EMP ) 并运行 LRD,直到损失不再对 SRC 和 DST 有所改善。

第 5 步 - 一旦损失不再有太大改善,如果您觉得自己的脸看起来不像 SRC 足够(低值 0.00001-0.001),您还可以启用可选选项,如真人脸(TF,只有 SAEHD 模型的 DF 类型存档)使模型产生看起来更像您的 SRC 样本的面孔(太高的值会导致颜色和光照匹配不佳,在极端情况下完全缺乏与 DST 的任何匹配,甚至面孔看起来有错误的俯仰/偏航比较到 DST 面部)和面部风格功率(也是低值 0.0001-0.1)将 DST 的某些风格和颜色转移到您预测的面部,这可能会改善色彩匹配和照明,但也可能使面部看起来不像 SRC。如果您怀疑 DST 的某些部分可能会在合并过程中从您预测的(最终面孔)下方突出(侧面照片上的长鼻子,皱起的嘴唇,睫毛)您还可以启用背景样式功能,使背景更像 DST 背景,并模糊蒙版以使其更加模糊和平滑,以便您可以在合并过程中扩展蒙版,并基本上用经过训练的面部背景覆盖 DST 的那些部分。您还可以在第 6 步之后禁用屏蔽训练,这将训练整个训练区域,提高背景质量,但您也可以尝试在 GAN 之前运行它——请记住所有这些都是可选的,如果您是初学者,请跳过此步骤,当它不存在。

第 6 步 - 以 0.1 的值启用 GAN,使用默认的补丁大小和 gan dims,让 GAN 运行至少 50-80k 次迭代,如果这是第一次使用 GAN 训练这个模型,起初你什么也看不到,在10-15k 你会开始注意到一些噪音,图案,脸上出现线条,继续训练直到它们消失,你开始在眉毛和睫毛区域看到噪音,皮肤纹理会开始细化。随着时间的推移,噪音应该会消失,但请记住,GAN 需要非常好的 SRC 集,如果您的 SRC 集不理想,您可能会发现结果看起来很糟糕,有很多噪音和重复模式,或者太强,所以您可能需要降低功率结果不是最佳的。
.
10.2 AMP 培训工作流程:

正在进行中

10.3 RTT 培训工作流程


在训练 RTM 模型之前,需要使用经过训练的模型,虽然可以使用简单的预训练或重用 LIAE 模型,但 iperov 创造了一个术语 RTT 或 ReadyToTrain 来描述人们用来转换为 RTM 的模型类型。

什么是 RTT?

RTT 只是一个 LIAE 模型,它被反复大量重复使用,每次都在相同的、大型的、随机的 DST(类似于 RTM DST 数据集)上针对几个不同的特定 SRC 集。

如何训练 RTT 模型:
1. 下载具有所需分辨率、面部类型和暗淡度的预训练模型,或者预训练您自己的模型 - 600k-1kk 应该足够了。
2. 获取 iperov 的 RTM WF 数据集,创建您自己的数据集或将两者结合起来并创建自定义随机 DST 数据集以用于训练。
3. 准备至少 10 个不同的 SRC 集,大尺寸 (15-20k),涵盖每个主题的所有可能的照明条件、表情和角度。
4. 使用通常的 SAEHD 训练工作流程开始训练它(从 RW 打开开始,以 RW 关闭结束,LRD 打开,GAN 打开)
5. 完成后,删除 inter_ab 文件,用新文件替换 SRC 并重新开始。
6. 像这样训练直到你完成所有 10 个 SRC 集(如果你愿意的话可以更多),假设你对每个 SRC 进行 300k 次迭代,你应该最终得到一个具有 3kk 次迭代并准备好称为 RTT 的模型。

“好吧,这一切都很好,但是我的天哪,你希望我将模型训练到 1kk,然后再训练 3kk,然后我仍然必须训练 RTM 再训练 3kk,谁有时间?”

这是一个正确的观察,考虑到我们在训练 RTM 时无论如何都会删除 inter_ab 并且我们确实预训练了一个模型,在这个过程中你在什么脸上训练编码器和解码器,那么默认 RTT 似乎确实有点矫枉过正应该看起来有可能在训练 RTM 之前跳过或大量减少所需的迭代次数。

一种方法是简单地使用预训练模型,但由于预训练后 inter_ab 和 inter_b 都是干净的,这可能会导致问题,更好的方法是对模型进行我所说的随机训练,并简单地为其提供随机 RTT DST /RTM DST 和 SRC 使用随机收集我们的 SRC 面孔,大小约为 35-40k,并进行 2 个完整的训练周期,总共进行约 1-1.5kk 次迭代,或者甚至只进行一次约 800k-1kk 的循环并使用它作为我们的 RTT,在这两种情况下,我们最终都会得到训练有素的模型,其中 DST 应该在我们的 DST 上得到很好的训练,而 SRC 仍然应该接受足够的训练来满足我们的需求(在这种情况下,我们主要关心 inter_b 正在接受训练)。

无论您最终采用哪种方法,请记住总是有试验工作流程的空间,最后最重要的是什么有效,而不是 somoene 说/写的应该有效,仍然要记住这个主要工作流程是基于什么我从其他用户那里读到,这不是 iperov 官方批准的工作流程(老实说,我不记得他曾经说过它是什么,但看起来这可能很接近,只是一个经过大量重新训练的 LIAE 模型)。

10.4 RTM 培训工作流程

随着 DeepFaceLive (DFLive) 的引入,一个新的训练工作流程已经建立,与一些用户认为这不是一种新的训练方法相反,与常规训练没有显着差异,并且这种训练方法已经被一些人以一种方式使用或者,您可能在没有意识到的情况下无意中创建了一个。

RTM 模型 (ReadyToMerge)
是通过训练一个我们想要交换的人的 SRC 集与包含许多人的随机面孔的大量不同的 DST 集来创建的,这些面孔涵盖了所有可能的角度、表情和光照条件。SRC 集还必须有大量不同的面孔。RTM 模型训练的目标是创建一个可以将我们的 SRC 人脸应用于任何视频的模型,主要用于 DeepFaceLive,但也可以通过创建一个可以非常快速地适应新目标视频的基础模型来加快 DeepFaceLab 2.0 中的训练过程与从头开始训练模型相比,用时更短。

RTM workklow 一起使用的推荐模型类型是SAEHD LIAE模型、LIAE-UDLIAE-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 TMBDF修改后的新工作流程:

遵循与新工作流程中相同的步骤,除了不要一直启用 EMP 和 LRD 进行训练,而是在步骤 2/3 快结束时启用 LRD 直到损失停止减少/稳定,然后通过禁用 RW 继续执行步骤 4和 LRD,在 400-500k 之后运行 EMP 大约 100-200k,然后禁用 EMP 并启用 LRD 再过 100-200k。UY 可以一直保持启用状态,也可以在步骤 2/3 的中途禁用和启用,然后在步骤 4 的中途启用。它应该如下所示:

1. 训练 +2.000.000 迭代器并启用 RW 并每 500k 删除 inter_AB.npy迭代器(保存并停止模型训练,删除文件并恢复训练)
2. 在第 4 次删除 inter_AB 之后,如果预测的人脸看起来像 SRC,那么在启用 RW 的情况下额外训练 +500k,在 250k 之后启用 LRD,直到你完成 500k。
3. 如果交换后的脸看起来更像 DST,删除 inter_AB 并重复步骤 2,没有 LRD 并仅在 100k 时启用它。如果现在一切看起来都不错,请转到下一步。
4. 禁用 RW 并训练额外的 +500k 迭代器,然后启用 LRD 进行 200k。
5. 启用功率为 0.1 的 GAN,GAN_Dims:32 和 Patch Size 为 +800.000k 迭代模型分辨率的 1/8。

5.3 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),GAN DIMS:32

5.4 TMBDF 修改的旧工作流程进行 200-300k 次迭代:

1. 进行 500k-1kk 迭代随机扭曲:Y,均匀偏转:Y,LRD:N,模糊蒙版:Y,颜色转移:LCT,其他设置保留默认值。
2. 接下来使用 LRD:Y 进行 500k 次迭代,保持步骤 1 中的其他设置。
3. 然后使用 Uniform Yaw:N
进行 500k 次迭代 4. 现在使用 Random Warp:N 进行 500k 次迭代,Uniform Yaw:N, LRD:N,500k 后启用 LRD:Y 为 300k。
5. 最后使用 Random Warp:N,Uniform Yaw:N,LRD:Y 和 GAN:0.1,GAN PATCH SIZE:(模型分辨率的 1/8)进行 200-300k 次迭代,GAN DIMS:32

10.5 使用RTM模型


完成模型训练后,您可以在 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 步开始
如果您想使用旧的 TMBDF 工作流程进行训练,请从OLD WORKFLOW的第 4 步开始,但不要启用 LRD,只是禁用 RW,稍后在需要时打开 LRD。
如果您想使用新的 iperov 工作流程进行训练,请从新工作流程的第 4 步开始
如果您不想使用实验性TMBDF 工作流程进行训练,请从新工作流程的第 4 步开始,请阅读我在实验位中建议的更改。

关于 RTM 培训,就是这样,如果我犯了任何错误,请告诉我,我会尽快修复它们。

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和seamless hist-match overlay模式下直方图匹配的强度。
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目前内容不多,但涵盖了一些基础知识,可帮助您入门。

就是这样!

如果您有更多此线程中未涵盖的问题,请查看与 DFL 2.0 和一般 deepfake 创建相关的其他指南和线程:
https ://mrdeepfakes.com/forums/thread-making-deepfakes-guides-and-threads

当前问题/错误:


问题报告的 Github 页面:https://github.com/iperov/DeepFaceLab/issues
如果你在现有的论坛线程中找不到确切的问题,它没有在 github 上提到,你相信没有其他人发现它但在这里创建一个新线程:
https ://mrdeepfakes.com/forums/forum-questions

如果您的问题很常见,您的帖子将被删除,恕不另行通知。使用搜索功能,如果您通过直接从命令行窗口复制错误来搜索错误,请记住只复制关键错误部分,因为不同用户的目录名称会有所不同。报告问题时,请确保包括您的完整 PC 规格(CPU、GPU、内存 数量、操作系统)以及您的 DFL 版本和型号设置,并描述导致您遇到问题的原因。
Zhatv换脸论坛免责声明
全站默认解压密码:zhatv.cn
【Zhatv】论坛里的文章仅代表作者本人的观点,与本网站立场无关。
所有文章、内容、信息、资料,都不保证其准确性、完整性、有效性、时效性,请依据情况自身做出判断。
因阅读本站内容而被误导等其他因素所造成的损失责任自负,【Zhatv】不承担任何责任。

85

积分

3

帖子

18

符石

筑基丹师

Rank: 2Rank: 2

积分
85
发表于 2023-9-19 01:24:36 | 显示全部楼层
感谢 学到了。
回复

使用道具 举报

125

积分

8

帖子

21

符石

筑基丹师

Rank: 2Rank: 2

积分
125
发表于 2023-9-26 04:16:14 | 显示全部楼层
你好,我想问一下,DF的训练 ,可以用双显卡吗?比如云机器上2块4090一起练。
回复

使用道具 举报

3114

积分

74

帖子

2072

符石

渡劫丹师

Rank: 6Rank: 6

积分
3114

土豪勋章

发表于 2023-9-26 08:15:41 | 显示全部楼层
fei277487260 发表于 2023-9-26 04:16
你好,我想问一下,DF的训练 ,可以用双显卡吗?比如云机器上2块4090一起练。 ...

可以双卡的
[发帖际遇]: davio 发帖时在路边捡到 5 符石,偷偷放进了口袋. 幸运榜 / 衰神榜
接直播专丹代练
QQ:41638873
黑产勿扰
回复

使用道具 举报

214

积分

18

帖子

4

符石

金丹师

Rank: 3Rank: 3Rank: 3

积分
214
发表于 2023-10-16 22:59:08 | 显示全部楼层
感谢分享
[发帖际遇]: 认真学习的小白 乐于助人,奖励 3 符石. 幸运榜 / 衰神榜
回复

使用道具 举报

478

积分

30

帖子

82

符石

金丹师

Rank: 3Rank: 3Rank: 3

积分
478
发表于 2023-10-19 08:12:19 | 显示全部楼层

好像只有ICE支持多卡吧,而且最新版ICE好像最多只支持双卡了
回复

使用道具 举报

116

积分

5

帖子

35

符石

筑基丹师

Rank: 2Rank: 2

积分
116
发表于 2023-11-4 09:36:10 | 显示全部楼层
非常有用,感谢
回复

使用道具 举报

476

积分

14

帖子

90

符石

金丹师

Rank: 3Rank: 3Rank: 3

积分
476
发表于 2023-11-5 19:54:21 | 显示全部楼层
感谢
回复

使用道具 举报

972

积分

73

帖子

111

符石

元婴丹师

Rank: 4Rank: 4Rank: 4Rank: 4

积分
972
发表于 2023-11-9 19:22:28 | 显示全部楼层
非常非常有用,感谢分享!给我们一个交流的平台!
回复

使用道具 举报

96

积分

6

帖子

8

符石

筑基丹师

Rank: 2Rank: 2

积分
96
发表于 2023-12-1 01:09:25 | 显示全部楼层
感谢,学到了
回复

使用道具 举报

小黑屋|ZhaTV ( 滇ICP备15003127号-4 ) |网站地图

GMT+8, 2023-12-10 19:00

Powered by Zhatv.cn

© 2022-2023

快速回复 返回顶部 返回列表