星级打分
平均分: 5 参与人数: 1 我的评分: 未评
本帖最后由 Lau9 于 2023-12-31 00:46 编辑
DFL 2.0 下载(GITHUB、MEGA 和 TORRENT): 下载 DEEP FACE LIVE[url=https://href.li/?https://github.com/iperov/DeepFaceLive ]:[/url] [url=https://href.li/?https://github.com/iperov/DeepFaceLab#releases ]下载[/url]
DFL 2.0 GITHUB 页面(新更新、技术支持和问题报告): GITHUB
步骤 0 - 简介:
1. 要求。
使用 Deep Face Lab 2.0 需要配备现代 GPU、充足 RAM、存储和快速 CPU 的高性能 PC。通常建议大多数用户使用 Windows 10,但更高级的用户可能希望使用 Linux 来获得更好的性能。Windows 11 也可以使用。
制作非常基本和低质量/分辨率的深度伪造的最低要求:
- 支持 AVX 和 SSE 指令
的现代 4 核 CPU - 16GB 内存 - 具有 8GB VRAM
的现代 Nvidia 或 AMD GPU
- 充足的存储空间和大页面文件
确保启用[url=https://href.li/?https://devblogs.microsoft.com/d ... ted-gpu-scheduling/ ]硬件加速 GPU 调度[/url] 在 Windows 10/11 下,并确保您的 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 工作的东西,[url=https://href.li/? ]No Touchy![/url] 工作区 - 这是模型、视频、帧、数据集和最终视频输出的位置。
基本术语:
SRC - 始终指我们试图将其脸部交换为目标视频或照片的人的内容(帧、脸部)。
SRC 集/SRC 数据集/源数据集/SRC 人脸 - 提取的人脸(源人脸的平方比图像文件,包含其他数据,如地标、蒙版、xseg 标签、原始帧上的位置/大小/旋转)我们试图交换到视频中的人。
DST - 始终指我们正在交换面孔的目标视频(或 DST/DST 视频)中的内容(帧、面孔)。
DST set/DST dataset/Target dataset/DST faces - 目标人物的提取人脸集合,我们将用 SRC 的相似性替换其人脸,格式相同,包含与 SRC 人脸相同类型的数据。
帧 - 从源视频或目标视频中提取的帧,提取帧后,它们分别放置在“data_src”或“data_dst”文件夹中。
人脸 - 从所使用的视频或照片中派生的原始帧中提取的人脸的 SRC/DST 图像。
模型 - 构成用户可以创建/训练的 SAEHD、AMP 和 XSeg 模型的文件集合,所有文件都位于“工作区”文件夹内的“模型”文件夹中,基本描述模型如下(本指南稍后会详细介绍):
1. SAEHD - 最流行和最常用的模型,基于各种架构有几种不同的变体, 每个都有自己的优点和缺点,但一般来说,当 SRC 和 DST 有一些相似之处时,它意味着交换面孔,尤其是一般的脸/头形状。可以自由重用、预训练,并且通常可以以不错的质量提供快速的结果,但某些架构可能会受到相似度低或照明和颜色匹配不佳的影响。
2. AMP - 新的实验模型,可以更好地适应源数据并保留其形状,这意味着您可以使用它来交换看起来完全不同的面孔,但这需要手动合成,因为 DFL 没有更高级的遮罩技术,例如背景修复。与 SAEHD 不同,它没有不同的架构可供选择,并且在重用方面通用性较差,训练时间更长,也没有预训练选项,但可以提供更高的质量,结果看起来更像 SRC。
3. Quick 96 - 测试模型,使用 SAEHD DF-UD 96 分辨率参数和全脸脸型,用于快速测试。
4. XSeg - 用户可训练的遮罩模型,用于为 SRC 和 DST 人脸生成更精确的遮罩,可以排除各种障碍物(取决于用户在 SRC 和 DST 人脸上的标签),DFL 附带了通用的经过训练的全脸遮罩模型,如果您不想立即创建自己的标签,您可以使用。
XSeg 标签 - 用户在 XSeg 编辑器中创建的用于定义人脸形状的标签,还可能包括排除(或首先不包括)SRC 和 DST 人脸上的障碍物,用于训练 XSeg 模型以生成蒙版。
蒙版 - 由 XSeg 模型生成,需要蒙版来定义应该训练的人脸区域(无论是 SRC 还是 DST 人脸),以及定义合并 (DST) 期间最终蒙版所需的形状和障碍物。基本面具的一种形式也是 embe默认情况下,它从面部特征点派生到提取的人脸中,这是一个基本的蒙版,可用于使用全脸或更低的脸型模型进行基本交换(本指南后面将详细介绍人脸类型和蒙版)
现在您已经了解了一些基本术语,是时候弄清楚您到底想做什么了。
根据你试图面对交换的视频的复杂程度,你要么只需要几次采访,要么你可能需要收集更多的源内容来创建你的SRC数据集,其中还可能包括高分辨率的照片、电影、电视节目等,这个想法是建立一个涵盖尽可能多的角度的集合, 目标视频中尽可能存在的表情和照明条件,因为您可能会怀疑这是制作良好的深度伪造的最重要部分,因此并不总是可以找到所有需要的镜头,因此为什么您永远无法实现 100% 的成功你制作的所有视频,即使你学会了所有的技巧和技巧,除非你只专注于非常简单的视频。请记住,这与面孔的数量无关,而是与各种表情、角度和照明条件有关,同时保持所有面孔的良好质量,而且您最终使用的不同来源越少,与来源的相似性就越好,因为模型将更容易学习来自同一来源的面孔,而不必学习来自更多不同来源的相同数量的面孔来源。
一个好的深度伪造还要求你的源人和目标人都有相似的头部形状,虽然可以交换看起来完全不一样的人,而新的AMP模型承诺解决不同脸型的问题,但头部的宽度和长度以及下颌线的形状仍然很重要, 下巴和脸部的一般比例相似,以获得最佳效果。如果两个人也做出相似的表情,那就更好了。
假设您知道将使用什么视频作为目标,您收集了大量源数据来创建源集,或者至少确保有足够的源数据并且质量良好,您的源和目标人物都有相似的头部形状,现在我们可以继续实际创建视频的过程, 请按照以下步骤操作:
第 2 步 - 工作区清理/删除:
1)清除工作区 - 从“工作区”文件夹中删除所有数据,“工作区”文件夹中有一些deafult的演示文件,当您下载DFL的新版本时,您可以使用它来练习您的第一个假货,您可以手动删除它们或使用此.bat来清除您的“工作区”文件夹,但由于您很少在完成项目后删除模型和数据集,因此此.bat基本上是无用且危险的因为您可能会意外删除所有工作,因此我建议您删除此 .bat。
第 3 步 - 源内容收集和提取:
要创建一个高质量的源数据集,你需要找到你的主题的源材料,可以是照片或视频,视频是首选,因为需要各种表情和角度来覆盖所有可能的脸部外观,以便模型可以正确地学习它,另一方面,照片通常提供出色的细节,并且非常适合简单的正面场景,并将提供更清晰的结果。您还可以合并视频和照片。以下是您需要确保的一些事项,以便您的源数据集尽可能好。
1. 视频/照片应涵盖所有或至少大部分可能的脸/头部角度 - 向上、向下、向左、向右、直视相机以及介于两者之间的一切,实现它的最佳方法是使用多个采访和多部电影,而不是依赖单个视频(主要具有一个角度和一些小的变化以及一种照明类型)。
提示:如果您的 DST 视频不包含某些角度(如侧面轮廓)或照明条件,则无需包含具有此类亮度和角度的源,您可以创建一个仅适用于特定类型的角度和照明的源集,或者创建一个更大、更通用的源集,该集应该适用于多个不同的目标视频。使用多少个不同的视频取决于你,但请记住,使用太多不同的光源实际上会降低结果的相似性,如果你能用更少的光源覆盖所有角度和很少的照明条件,那么实际使用更少的内容总是更好,从而保持SRC集更小。
2. 视频/照片应涵盖所有不同的面部表情——包括张开/闭嘴、睁开/闭上眼睛、微笑、皱眉、眼睛看向不同方向——表情种类越多,效果越好。
3. 源内容应该保持一致 - 您不希望在清晰、锐利和高质量的面孔旁边出现模糊、低分辨率和严重压缩的面孔,因此您应该只使用您能找到的最高质量的视频和照片,如果不能或某些角度/表情仅出现在较低质量/模糊的视频/照片中,那么您应该保留这些并尝试放大它们。
可以使用 Topaz 等软件直接在帧或视频上进行放大,也可以在 DFDNet、DFL Enhance、Remini、GPEN 等面部(提取后)上完成(新的升级方法一直在创建,机器学习在不断发展)。
提示:在以下情况下,良好的一致性尤为重要:
有胡须的脸 - 尽量只使用同一天拍摄的单部电影或照片和采访,除非你要交换的脸很小,而且你无法区分单个头发,在这种情况下,允许混合不同日期的源照片,但前提是胡须具有相似的外观。
用短发换头 - 由于头上的头发更随意,你只能使用相同的内容(采访、照片),不要与其他内容混合,或者如果你使用的是电影,那么坚持看一部电影。
超越如果头发和胡须总是以相同的方式风格化,或者是假的,因此不会改变,在这种情况下,您可以根据需要混合尽可能多的来源。
化妆的脸 - 避免包含化妆与给定人通常拥有的类型有很大差异的来源,如果您必须使用与其他人不相配的特定妆容的视频或照片,请尝试对帧进行颜色校正(在使用批量图像处理提取帧后或在视频编辑之前),这也可以在提取后完成,但需要先保存元数据并在编辑面孔后恢复它, 在下一步中会详细介绍它)。
4. 其中大部分应该是高质量的 - 如上所述,您可以留下一些模糊的照片/视频,但前提是您在其他人中找不到某些表情/面部角度,但请确保将它们升级到可接受的质量,太多的放大可能会对质量产生负面影响,因此最好只在数据集的一小部分上使用它(如果可能的话, 在某些情况下,可能需要以某种方式增强接近 100% 的集合)。
5. 照明应该保持一致 - 一些小阴影是可以的,但你不应该包含刺眼的定向照明的内容,如果可能的话,尽量只使用那些阴影柔和且光线漫射的阴影。对于 LIAE 架构,它可能不那么重要,因为它可以更好地处理照明,但对于 DF 架构,重要的是为每个面角设置多个照明条件,最好至少 3 个(正面漫射、左右柔和阴影、不太暗、阴影区域中的细节必须仍然可见或没有阴影, 只是漫射照明,在脸部左侧或右侧创建更明亮的区域)。源面孔集/数据集可以包含不同亮度的人脸,但不应包含过于黑暗的人脸,除非您的 DST 也是黑暗的。
6. 如果您只使用图片或它们占数据集的大部分 - 请确保它们填写了上述所有检查,20 张左右的图片是不够的。甚至不要费心尝试用这么少的图片制作任何东西。
7. 将源数据集中的人脸总数保持在 3.000 - 8.000 左右 - 在某些情况下,可能需要更大的集合,但我建议将其保持在通用集合的 12k 以下,如果真的需要,则将其保持在 15k 以下,更大的集合然后产生更模糊的结果,它们也需要更长的时间来训练,但如果您的目标视频几乎涵盖了所有可以想象的角度,那么将需要大的 SRC 集来覆盖所有那些角度。
现在您已经整理了源内容,是时候从视频中提取帧了(照片不需要更多的工作,但您可以浏览它们并删除任何模糊/低分辨率图片、黑白图片等)。
提示:回复。使用提取帧的方法,提前为所有不同的来源准备文件夹。
您可以将它们放置在我喜欢将它们放置在 data_src、data_dst 和模型文件夹旁边的工作区文件夹中,根据使用的来源(电影标题、采访标题、事件或照片日期)命名这些文件夹,然后将相应的帧放在提取完成后,重命名每组帧,以便清楚地了解给定面孔的来源。
这些名称在人脸提取(步骤 4)后嵌入到人脸中,因此即使您随后重命名它们(人脸)或对其进行排序,它们也会保留原始文件名,您可以使用您将在步骤 4 中了解的 .bat 恢复该文件名。
您可以通过几种不同的方式提取帧:
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 和它的场景检测为您进行剪辑,然后使用它以特定的帧速率和文件格式将您选择的场景输出到文件夹中,然后重命名它们,以便您的所有王牌都具有与原始视频标题相对应的唯一名称,这在后期阶段非常有帮助, 您可以在本指南中阅读有关 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 面部提取 - 使用 S3FD 算法的自动提取器,这将处理您集中的大多数面孔,但并不完美,它将无法检测到某些面孔并产生许多误报并检测其他人,您将不得不或多或少地手动删除。
还有 4) data_src faceset extract MANUAL - 手动提取器,使用方法见 5.1。您可以使用它来手动对齐某些面孔,特别是如果您有一些图片或电影中的小源,这些图片或小源具有一些罕见的角度,这些角度对于自动提取器来说往往很困难(例如直接向上或向下看)。
S3FD 和手动提取器的可用选项包括:
- 使用哪个 GPU(或 CPU)进行提取 - 使用 GPU,它几乎总是更快。
- 脸型:
a) 全脸/FF - 适用于 FF 型号或下脸类型(半脸/HF 和中半脸/MF,现在很少使用)。
b) 全面/WF - 适用于 WF 型号或更低型号,推荐作为通用/面向未来的解决方案,用于 FF 和 WF 型号。
c) 头部 - 对于 HEAD 模型,可以与 WF 或 FF 等其他模型一起使用,但需要非常高的分辨率提取,以便人脸具有与低覆盖率人脸类型相同的细节级别(锐度),使用 3D 特征点而不是 FF 和 WF 中的 2D 特征点,但仍与使用这些人脸类型的模型兼容。
请记住,您可以随时使用 4.2) data_src/dst util faceset resize 或 MVE 将脸型(及其分辨率)更改为较低的 1(它也可以将较低的分辨率/面型集转换为较高的分辨率,但需要您保留原始帧和照片)。因此,如果您主要使用 FF 和 WF 模型进行换脸,我建议使用 WF,而 HEAD 则主要用于 HEAD 交换,但在某些时候您可能希望用于 FF/WF 换脸。
- 从图像中提取的最大人脸数 - 提取器应该从一帧中提取多少人脸,0 是推荐值,因为它会提取尽可能多的人脸。选择 1 或 2 只会从每帧中提取 1 或 2 张面。
- 数据集的分辨率:这个值很大程度上取决于源帧的分辨率,以下是我个人的建议,具体取决于源剪辑的分辨率,你当然可以使用不同的值,你甚至可以测量给定源中最大面有多大,并将其用作值(记住以 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://mrdeepfakes.com/forums/thread-how-to-fix-face-landmarks-with-mve[/url]
[url=https://mrdeepfakes.com/forums/thread-mve-machine-video-editor-guide[/LEFT]]https://mrdeepfakes.com/forums/thread-mve-machine-video-editor-guide[/url]
我建议对 WF 使用以下值:
720p 或更低分辨率的源 - 512-768 1080p 源 - 768-1024
4K 源 -
1024-2048
对于头部提取,请添加额外的 256-512,以确保您不会遗漏提取的人脸的任何细节,或者在最靠近相机的帧上测量头部的实际大小。如有疑问,请使用 MVE 提取启用了估计人脸大小选项的人脸。
- Jpeg 质量 - 使用 100 以获得最佳质量。DFL只能提取JPG格式的人脸。没有理由低于 100,尺寸差异不会很大,但质量会急剧下降,导致质量变差。
- 选择是否生成“aligned_debug”图像 - 可以在之后生成,它们用于检查地标是否正确,但是这也可以使用 MVE 完成,您实际上可以使用 MVE 手动修复地标,因此在大多数情况下,这对 SRC 数据集不是很有用。
第 6 步 - DATA_SRC排序和清理:
完成 SRC 数据集提取后,下一步是清除 SRC 数据集中的误报和未正确对齐的人脸。为了帮助您对人脸进行排序,如果它是一个小型集合并且只有几个视频,使用提供的排序方法应该绰绰有余,如果您正在处理较大的集合,请使用 MVE 进行排序(查看指南以获取更多信息)。
要执行排序,请使用 4.2) data_src排序 - 它允许您使用各种排序算法对数据进行排序,以下是可用的排序类型:
[0] blur - 按图像模糊度排序(由对比度决定),排序方法相当慢,不幸的是在检测和正确排序模糊人脸方面并不完美。
[1] 运动模糊 - 通过检查运动模糊对图像进行排序,有利于去除具有大量运动模糊的人脸,比 [0] 模糊更快,可以用作替代方法,但类似于 [0] 不完美。
[2] 面偏航方向 - 按偏航排序(从向左看到向右看)。
[3] 面俯仰方向 - 按俯仰排序(从面向上到向下)。
[4] 源图像中的人脸矩形大小 - 按原始帧上人脸的大小排序(从最大到最小的人脸)。比模糊快得多。
[5] 直方图相似度 - 按直方图相似度排序,末尾有不同的面孔,可用于删除外观截然不同的面孔,也可以将它们组合在一起。
[6] 直方图差异 - 如上所述,但不同的面孔在开头。
[7] 亮度 - 按整体图像/面部亮度排序。
[8] 色相 - 按色相排序。
[9] 黑色像素数量 - 按完全黑色像素的数量排序(例如,当面部从画面中截断且仅部分可见时)。
[10] 原始文件名 - 按原始文件名(从中提取人脸的帧)排序。没有 _0/_1 后缀(假设每帧只有 1 个面)。
[11] 图像中的一张脸 - 按照原始帧中有多少张脸对人脸进行排序。
[12] 绝对像素差异 - 按图像工作方式的绝对差异排序,有助于去除外观截然不同的人脸。
[13] 最佳面孔 - 按几个因素排序,包括模糊和删除重复/相似的面孔,目标是排序后我们想要拥有多少张面孔,丢弃的面孔被移动到文件夹“aligned_trash”。
[14] 最佳人脸更快 - 与最佳人脸类似,但在源图像中使用人脸矩形大小而不是模糊来确定人脸质量,比最佳人脸快得多。
我建议从简单的直方图排序 [5] 开始,这会将看起来相似的面孔组合在一起,这包括我们要删除的所有坏面孔,因此它使手动选择过程变得更加容易。
初始排序完成后,打开对齐的文件夹,您可以使用 Windows 资源管理器浏览它或使用 DFL 附带的外部应用程序,它可以更快地加载图像,要打开它,请使用 4.1) data_src查看对齐的结果。
之后,您可以按偏航和俯仰进行额外的排序,以删除任何看起来正确但实际上具有不良地标的面孔。
接下来,您可以按色调和亮度进行排序,以去除任何颜色较深或非常暗的面孔,例如总结一下,在组织图排序后,你还没有这样做。
然后,您可以使用按模糊排序,运动模糊和面部矩形大小来删除任何模糊的面部,具有大量运动模糊的面部和小面部。在那之后,你应该有相对干净的数据集。
最后,您可以使用您想要的任何其他方法对它们进行排序,SRC 面孔的顺序和文件名对任何事情都无关紧要,但是我总是建议恢复原始文件名,但不要使用排序选项 10,而是使用 - 4.2.other) data_src util recover original filename。
但是,如果您拥有包含数十个采访、数千张高分辨率图片以及许多电影和电视节目剧集的大型数据集,则应考虑采用不同的方法来清理和排序您的集合。
大多数认真对待制作深度伪造并正在处理大型复杂源集的人很少只使用 DFL 进行分类,而是使用外部免费软件(目前称为 Machine Video Editor,或简称 MVE)。MVE带有自己的排序方法,几乎可以用于制作deepfake视频的所有步骤。这还包括自动场景切割和帧导出,用于从源内容中获取帧,如步骤 2 - SRC 数据收集中所述)、数据集增强、标记/遮罩、编辑地标等等。
这里要关注的是 Nvidia Simillarity Sort 选项,它的工作方式类似于直方图排序,但是一种机器学习方法,它根据身份将面孔组合在一起,这样您就可以按顺序获得列表中想要的人的 99% 的面孔,并且删除其他面孔的速度要快得多(您可以删除或保留不需要的主题,以便与您可能希望制作的其他面孔一起使用这些主题),它通常还会更精确地将不正确的面孔、戴眼镜的面孔、黑白面孔或色调较重的面孔组合在一起,并且您可以获得面部组预览,您可以在其中选择或删除特定的人脸组,甚至可以在删除它们之前查看该组中的面孔,但您也可以像在 Windows 资源管理器或 XnViewMP 中一样浏览。
有关 MVE 的更多信息,请在此处查看可用指南: https://mrdeepfakes.com/forums/forum-guides-and-tutorials
MVE GITHUB:[url=https://href.li/?https://github.com/MachineEditor/MachineVideoEditor ]https://github.com/MachineEditor/MachineVideoEditor[/url]
MVE 也有一个 discord 服务器(SFW,那里不允许成人 deeepfake 谈话),您可以在 github 页面上找到它的链接。该服务器上还有其他指南,请先观看它们,然后再提出问题。
无论您使用 MVE 还是 DFL 对集合进行排序,最后都可以执行几个最后步骤: - 删除重复的人脸:
您可以在所有剩余的人脸上做的第一件事是使用 visipics 或 dupeguru(或任何其他可以检测相似人脸和重复项的软件)来检测整个人脸集中非常相似和重复的人脸, 我提到的两个具有可调节的“功率”设置,因此您只能删除基本完全相同的面孔,或者增加设置并删除更多非常相似的面孔,但请注意不要删除太多相似的面孔,实际上不要删除它们,例如,在 Visipics 中,您可以选择移动它们,这就是我的建议,为不同级别的相似度创建几个文件夹(滑块分步工作,因此您可以删除以强度 0-1 检测到的所有内容,并将以强度级别 2-3 检测到的面孔移动到不同的文件夹)。这将略微减少面孔数量,从而加快训练速度,并使集合中不包含不必要的相似面孔和重复项。
接下来(假设您在提取之前重命名了帧),最好根据它们的来源将人脸移动到不同的文件夹中: 创建一个适合您的文件夹结构,我建议采用以下结构:
- 电影、电视节目、采访和照片的主要文件夹(请根据素材类型随意添加其他类别)
- 在每个文件夹中,每个单独的来源都有更多文件夹(对于照片,您可以根据照片类型或年份进行分类,或者将其全部放在一个文件夹中) - 在给定来源的每个单独文件夹中,一个用于最清晰、最佳面孔的文件夹,剩下的应该松散地放在基本文件夹中
- 您计划增强/放大的所有模糊面孔的文件夹(更多内容见下面的高级)
- 所有放大面孔的文件夹 - 所有重复项的文件夹
- 最后是主文件夹,您可以简单地将其命名为对齐或主数据集,您可以在其中组合来自所有来源的最佳面孔和放大的面孔
。
请记住,所有数据都在图像本身中,您可以自由地将它们移动到不同的文件夹,进行复制/备份,将它们存档在不同的驱动器,计算机上,通常您可以自由地将它们移动到DFL之外。RAID 不是备份 - 2-3 个副本、冷存储、不同位置不同介质上的额外副本。根据您最终创建的数据量,至少每周或两周备份一次新数据,最坏的情况是只有几个便携式硬盘驱动器(基于SSD显然更好)。
完成此操作后,您的“data_src”文件夹中应该有一堆文件夹,并且您的“对齐”文件夹现在应该是空的,因为您已将所有面孔移动到不同的面孔,请将其删除。
第 7 步 - DATA_DST人脸/数据集提取:
此处的步骤与源数据集几乎相同,只有少数例外。首先使用以下方法从 DST 帧中提取人脸: 5) data_dst 人脸提取 - 利用 S3FD 人脸检测算法的自动人脸提取器。
除此之外,您还会注意到其他提取方法,现在不要使用它们,但您需要熟悉它们:
5) data_dst面部提取 手动重新提取已删除的ALIGNED_DEBUG - 这个也很重要,它用于在从文件夹“aligned_debug”中删除相应的调试映像后手动重新提取丢失的人脸,该文件夹在提取后沿着“对齐”文件夹创建, 它使交换所有面孔成为可能,有关步骤 5.1 中更多关于它的使用。
5) data_dst面部提取手册 - 手动提取器,使用方法见 5.1。
5) data_dst 面部提取 + 手动修复 - S3FD + 手动通过模型未检测到任何面部的帧,您可以使用它来代替 5) data_dst面部提取 - 初始提取完成后,将打开一个窗口(与手动提取或重新提取相同),您可以在其中从提取器无法检测到任何面部的帧中提取面部, 甚至没有误报,但这意味着在重新提取所有人脸之前,提取不会完成,因此不建议这样做。
现在只需使用第一种方法。
所有提取器模式的可用选项与 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 - 其工作方式与源文件名相同,它将恢复原始文件名和所有面孔的顺序。
接下来,我们必须删除调试帧,以便我们可以使用手动重新提取器仅从提取器无法正确提取人脸的帧中提取人脸,为此,请运行 5.1) data_dst查看aligned_debug结果 - 这将允许您快速浏览“aligned_debug”的内容,在这里您可以检查所有调试帧以查找目标人脸上的地标放置不正确(不对齐脸部、眼睛、鼻子、嘴巴、眉毛的边缘)或缺失,这些帧必须删除,这将告诉手动重新提取器要向您显示哪些帧,以便您可以手动重新提取它们。您可以手动选择要删除的所有调试帧,但是这意味着手动浏览几乎所有的调试帧,这样很容易错过一些帧,更好的方法是利用您对齐的文件夹(清理后)现在应该只包含好面孔, 利用它来发挥你的优势(你可以制作一个调试文件夹的副本,使用对齐文件夹中的面从中删除所有好的帧,然后浏览剩下的内容,并使用它来从原始调试文件夹中删除那些坏帧)。删除完所有缺失/坏脸的调试帧后,运行 5) data_dst faceset extract MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG 以手动从相应的帧中重新提取人脸。
手动提取器使用:
启动手动提取器后,将打开一个窗口,您可以在其中手动找到要提取的人脸,命令行窗口显示您的进度:
- 使用哟。鼠标定位人脸
- 使用鼠标滚轮更改搜索区域的大小(矩形大小,您在排序中看到了此选项,您可以根据提取过程中的矩形大小对人脸进行排序)
- 确保所有或至少大多数地标(在某些情况下,取决于角度、照明或存在的障碍物,可能无法精确对齐所有地标,因此只需尝试找到一个覆盖的位置所有。 可见位最多,不会太错位)落在眼睛、嘴巴、鼻子、眉毛等重要部位,并正确遵循脸型,向上箭头显示脸
部的“向上”或“顶部”位置 - 使用键 A 更改精度模式,现在地标不会“粘”到检测到的人脸上,您可以更正确地定位地标, 它也会运行得很快ER
- 使用 < 和 > 键(或 、 和 .)来回和向前移动,以确认检测,单击鼠标左键并移动到下一个或按 Enter 键,确认选择并移动到下一张脸 - 鼠标右键,用于对齐无法检测到的前向或非人脸
(需要应用 XSEG 才能正确遮罩)
- q 跳过剩余的面孔,保存您所做的面孔并退出提取器(当您到达最后一张面孔并确认它时,它也会关闭并保存)
现在你应该提取了所有的人脸,但在某些情况下,你将不得不运行它几次(我上面提到的情况,反射,分割场景, 过渡)。在这种情况下,将“对齐”文件夹重命名为其他文件夹,然后重复重命名对齐的面孔的步骤,将它们复制到“aligned_debug”的副本中,替换,删除选定的,删除需要提取的其余部分,将其复制到原始的“aligned_debug”文件夹,替换,删除荧光笔,再次运行手动重新提取器,然后合并两个对齐的文件夹, 确保不要意外更换某些面孔。
完成后,您可以选择相同的其他 .bats 来与几乎完成的 dst 数据集一起使用:
5.2) data_dst util faceset pack 和 5.2) data_dst util faceset unpack - 与 source 相同,让您快速将整个数据集打包到一个文件中。
5.2) data_dst util faceset resize - 工作方式与 SRC 数据集相同。
但在开始训练之前,您还必须屏蔽数据集,两者都是。
第 9 步 - XSEG 模型训练、数据集标记和屏蔽:
XSeg 有什么用?某些人脸类型需要应用与提取后使用数据集获得的默认蒙版不同的蒙版,这些默认蒙版派生自与全脸人脸类型相似的地标和覆盖区域,因此对于全脸或较低覆盖的人脸类型不需要 XSeg,但对于整个脸部和头部,它是必需的。在训练 SAEHD/AMP 模型期间,无论人脸类型如何,XSeg 掩码也需要使用人脸和背景样式电源(FSP、BGSP)。
XSeg 允许您定义如何遮罩面部,面部的哪些部分将被训练,哪些部分不会。
还需要排除人脸上的障碍物,以便在合并视频后正确排除脸部前面的手,这意味着交换的人脸被遮盖,使手可见而不是遮盖它。
XSeg 可用于排除几乎所有障碍物:您可以完全控制模型认为哪些是人脸,哪些不是。
请先熟悉一些术语,了解 XSeg 模型、数据集、标签和掩码之间的区别很重要:
XSeg 模型 - 用户可训练的模型,用于将掩码应用于 SRC 和 DST 数据集,以及在合并过程中遮罩人脸。
XSeg 标签 - 用户在人脸上绘制的多边形,用于定义人脸区域以及 XSeg 模型用于训练的内容。
XSeg 掩码 - 由经过训练的 XSeg 模型生成并应用于 SRC 或 DST 数据集的掩码。
XSeg 数据集 - 标记人脸的集合(仅一种特定类型或同时使用 SRC 和 DST 数据集,以类似的方式标记),这些通常由用户在论坛上共享,并且是开始制作自己的集合的好方法,因为您可以下载一个并选择所需的特定人脸或添加您自己以类似方式标记的标记人脸。
现在您已经知道了这 4 件事的含义,您已经了解了标记和屏蔽 SRC 人脸和 DST 人脸之间的主要区别。
掩码定义了人脸样本上的哪个区域是人脸本身,哪些是背景或障碍物,对于 SRC,这意味着您包含的任何内容都将由具有较高优先级的模型进行训练,而其他所有内容都将以较低的优先级(或精度)进行训练。对于 DST,它是相同的,但您还需要排除障碍物,以便模型不会将它们视为面的一部分,并且以便以后在合并时这些突构是可见的,并且不会被最终预测的面覆盖(不要与预测的 SRC 和预测的 DST 面混淆)。
要使用 XSeg,您可以使用以下 .bats:
5.XSeg) data_dst mask - edit - XSeg label/polygon editor,这定义了您希望 XSeg 模型如何训练 DST 人脸的掩码。
5.XSeg) data_dst掩码 - 提取 - 将标记的 DST 面复制到“data_dst”内的文件夹“aligned_xseg”。
5.XSeg) data_dst mask - remove - 从 DST 面上删除标签。这不会删除您在训练后应用于集合的已训练的 MASKS,而是移动您手动创建的标签,我建议重命名此选项,使其位于列表底部或将其删除以避免意外删除标签。
5.XSeg) data_src mask - edit - XSeg label/polygon editor,这定义了您希望 XSeg 模型如何训练 SRC 人脸的蒙版。
5.XSeg) data_src掩码 - 获取 - 将标记的 SRC 面复制到“data_src”内的文件夹“aligned_xseg”。
5.XSeg) data_src mask - remove - 从 SRC 面上删除标签。这不会删除您在训练后应用于集合的经过训练的 MASKS,它会删除您手动创建的 LABELS,我建议重命名此选项,使其位于列表底部或删除它以避免意外删除标签。
XSeg) train.bat - 开始训练 XSeg 模型。
5.XSeg.optional) 训练的掩码data_dst - 应用 - 生成 XSeg 掩码并将其应用于 DST 人脸。
5.XSeg.optional) 训练掩码 data_dst - remove - 删除 XSeg 掩码并恢复默认的 FF,如地标派生的 DST 掩码。
5.XSeg.optional) 训练的蒙版data_src - 应用 - 生成 XSeg 蒙版并将其应用于 SRC 面。
5.XSeg.optional) 训练掩码 data_src - remove - 删除 XSeg 掩码并恢复默认的 FF 如地标派生的 SRC 掩码。
如果您没有时间标记人脸和训练模型,则可以使用 DFL 附带的通用 XSeg 模型,使用以下方法快速应用基本 WF 掩码(可能无法排除所有障碍物):
5.XSeg Generic) data_dst whole_face掩码 - 应用 - 将 WF 掩码应用于 DST 数据集。
5.XSeg Generic) data_src whole_face掩码 - 应用 - 将 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 次迭代后出现不良蒙版(形状不良、孔洞、模糊),保存并停止训练,将蒙版应用于数据集,运行编辑器,通过在编辑器中启用 XSeg 蒙版叠加来查找具有不良蒙版的人脸,标记它们并按 esc 保存并退出,然后恢复 XSeg 模型训练,当启动已经训练的模型时,如果您想重新开始训练,您将收到提示, 选择“否”,因为选择“是”将从 0 重新开始模型训练,而不是继续。但是,如果您的面具在标记了更多人脸并且远高于 100k-150k 迭代的情况下没有改善,则可能需要标记更多人脸。继续训练,直到大部分脸上都有锋利的边缘,并且所有障碍物都被正确排除。
第 3 步。将 XSeg 蒙版应用于数据集。
完成训练后,或者已经应用了一次 XSeg 并修复了具有不良蒙版的人脸后,是时候将 XSeg 蒙版最终应用于数据集了。
额外提示:
1.不要费心做 1000 分的标签,标记所有的脸会花费太多时间,并且不会影响脸部,而如果你只用 30-40 点来描述脸型,但也不要尝试用 10 分来标记它,否则面具不会光滑,这里的例外是标记头发进行 HEAD 脸型训练,显然需要一些细节来正确解析单根发丝。
2. 不要标记阴影,除非它们是漆黑的。
3. 如果舌头或口腔内侧几乎张开,不要标记它。
4. 如果障碍物或面部模糊,请尽可能多地标记以覆盖所有应该或不应该可见的东西,不要使偏移量太大
5.请记住,当您使用模糊时,边缘会向内和向外模糊,如果您在边缘标记出手指,它在低模糊下看起来不会很糟糕,但在高模糊时,它会开始消失并被模型学习的模糊版本所取代,口腔也是如此, 在低模糊下,它只会显示结果面部牙齿,但如果您应用高模糊,那么 DST 牙齿将开始显示,并且看起来很糟糕(双牙)。
这意味着:
- 当排除手指等障碍物时 - 将其标记在边缘或将标签移开几个像素(但不要太多)。SRC 和 DST
- 在排除口腔时 - 请记住使标签远离牙齿,除非是后面的牙齿模糊和黑暗,否则可以排除这些牙齿。DST,SRC 是可选的,如果您排除 SRC 面上的后牙,XSeg 模型将训练为不包括它们,因此它们不会像包含的前牙那样精确地训练,但由于后牙通常非常模糊和黑暗或根本不可见,它应该不会对您的结果产生太大影响, 特别是如果您也决定在 DST 上排除它们,在这种情况下,您只会看到 DST 的后牙,排除舌头时也适用类似的规则,将它们标记在边缘,如果舌头在口腔内或接触上牙或下牙,则与牙齿保持偏移。SRC 和 DST,如果你想训练 SRC 的舌头,不要在 SRC 脸上排除它,但如果你在 DST 上排除它,那么你根本不会看到 SRC 舌头,我建议排除g 舌头仅在嘴巴张开时才出现,并且仅在 DST 上,而不是在 SRC 脸上。
如何使用共享标记的人脸来训练您自己的 XSeg 模型:
下载、提取人脸并将其放置在“data_src/对齐”或“data_dst/对齐”中。确保重命名它们,以免覆盖你自己的面孔(我建议使用 XSEGSRC 和 XSEGDST,以便以后轻松删除)。
您可以将共享人脸与自己的标签混合在一起,为模型提供尽可能多的数据来学习掩码,不要混合人脸类型,确保所有人脸大致遵循相同的掩码逻辑。
然后开始训练你的XSeg模型(或共享模型)。
如何使用共享 XSeg 模型并将其应用于数据集:
只需将其放入“模型”文件夹中,然后使用应用 .bat 文件将掩码应用于 SRC 或 DST。
应用蒙版后,打开 XSeg 编辑器,并通过启用 XSeg 蒙版叠加视图来检查蒙版的外观,如果某些人脸没有好看的蒙版,请标记它们,退出编辑器并再次开始训练 XSeg 模型以修复它们。您还可以如上所述混合一些共享面孔(如何使用共享标记面孔)。您可以重用 XSeg 模型(如 SAEHD 模型)。
10. 培训 SAEHD/AMP:
如果您不想真正了解所有选项的作用,而只关心在大多数情况下应该有效的简单工作流程,请向下滚动到第 6.1 节 - 通用训练工作流程。
警告:没有一种正确的方法来训练模型,了解所有选项的作用,如果您在训练过程中发现问题(遮罩问题、由于质量差的 SRC 集或缺乏角度/表情导致的面部模糊/扭曲和伪影、由于 SRC 集的照明条件种类不足而导致的颜色匹配不佳, DST 对齐错误等)。
目前有 3 种型号可供选择进行训练:
SAEHD (6GB+):高清风格的自动编码器 - 适用于具有至少 6GB VRAM 的高端 GPU。可调。推荐给大多数用户。
AMP (6GB+):新的模型类型,使用不同的架构,变形形状(尝试保留 SRC 形状),具有可调节的变形因子(训练和合并) - 适用于具有至少 6GB VRAM 的高端 GPU。可调。AMP 模型仍在开发中,我建议您在使用 AMP 之前先学习使用 SAEHD 制作 deepfake。 对于 AMP 工作流程,请向下滚动到第 6.2 节。
Quick96 (2-4GB):简单模式专用于具有 2-4GB VRAM 的低端 GPU。固定参数:96x96像素分辨率,全脸,批量大小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。
训练开始后,您还将看到训练预览。
以下是所有功能的详细说明,在开始训练新模型时(大部分)它们会呈现给用户。
请注意,其中一些被锁定且无法更改 o由于这些模型的工作方式,您开始训练后,以后无法更改的示例包括: - 模型分辨率(通常缩写为“RES”) - 模型架构(“ARCHI”) - 模型尺寸(“DIMS”) - 脸型
- 形态因子(AMP 训练) 此外,并非所有选项都适用于所有类型的模型: 对于 LIAE,没有 True Face (TF)
对于 AMP,没有架构选择或眼睛和嘴巴优先级 (EMP)
随着软件的开发,某些型号可能会有更多选项可用或不可用,如果您使用的是最新版本并注意到缺少某些选项,根据本指南仍然可用,或者注意到缺少此处解释的一些选项,请通过私信给我留言或在此线程中发布消息,我会尝试以尽快更新指南。
每 N 小时自动备份一次 ( 0..24 ?:help ) : 不言自明 - 让您每 N 小时启用一次模型的自动备份。将其保留为 0(默认值)将禁用自动备份。默认值为 0(禁用)。
[n] 写入预览历史记录 ( y/n ?:help ) :在训练期间每隔几分钟保存一次预览图像,如果选择“是”,则会收到另一个提示: [n] 选择预览历史记录的图像 ( y/n ) :如果选择 N,模型将随机选择预览的面孔,否则选择 Y 将在加载数据集后打开一个新窗口,您可以在其中手动选择它们。
目标迭代 :在达到一定数量的迭代后将停止训练,例如,如果要将模型训练到仅 100.000 次迭代,则应输入值 100000。将其保留为 0 将使其运行,直到您手动停止它。默认值为 0(禁用)。
[n] 随机翻转 SRC 面 ( y/n ?:help ) : 随机水平翻转 SRC 面,有助于覆盖 DST 数据集中存在的所有角度,因为翻转它们有时可能会有所帮助(特别是如果我们的集合没有许多不同的照明条件但具有大多数角度),但是在许多情况下,它会使结果看起来不自然,因为面从来都不是完全对称的, 它还会将面部特征从脸部的一侧复制到另一侧,然后它们可能同时出现在两侧或两侧。建议仅在培训早期使用,或者如果我们的 SRC 集足够多样化,则根本不使用。默认值为 N。 [y] 随机翻转 DST 面 ( y/n ?:help ) : 随机水平翻转 DST 面,可以改进随机翻转 SRC 面时的泛化。
默认值为 Y。 Batch_size ( ?:help ) :批量大小设置会影响每次迭代相互比较的人脸数量。
最低值为 2,您可以随 GPU 允许的上限,这受 VRAM 影响。模型分辨率、尺寸和启用的功能越高,所需的 VRAM 就越多,因此可能需要的批量大小可能更小。建议不要使用低于 4 的值。更大的批量大小将以 sl 为代价提供更好的质量OWER 训练(更高的迭代时间)。对于初始阶段,可以将其设置为较低的值以加快初始训练的速度,然后将其提高到较高的值。最佳值介于 6-12 之间。如何猜测要使用的批量大小?您可以使用反复试验,也可以通过查看DFL 2.0 模型设置和性能共享线程 来了解其他人可以在他们的 GPU 上实现的目标,从而帮助自己。
分辨率 ( 64-640 ?:help ) : 在这里您可以设置模型分辨率,请记住,此选项在训练期间无法更改。它会影响交换面孔的分辨率,模型分辨率越高 - 学习的人脸就越详细,但训练也会更重、更长。分辨率可以从 64x64 增加到 640x640,
增量为: 16(对于常规和 -U 体系结构变体) 32(用于 -D 和 -UD 体系结构变体)
更高的分辨率可能需要增加模型尺寸(尺寸),但这不是强制性的,您可以使用默认的 DIM 获得良好的结果,而使用非常高的 DIM 可能会获得糟糕的结果, 归根结底,源数据集的质量对质量影响最大,所以如果你不能用你的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 ) : 此选项可让您在 SAEHD 模型的 2 种主要架构之间进行选择:DF 和 LIAE 及其变体: DF:
此模型架构以比 LIAE 更差的照明和颜色匹配为代价提供了更好的 SRC 相似性,它还要求 SRC 集更好地匹配 DST 的所有角度和照明,并且总体上要比 mig对于 LIAE 来说很好,它也不处理 SRC 和 DST 之间的一般脸型和比例不匹配,其中 LIAE 更好,但同时可以处理面部特征实际外观的更大不匹配,并且在 GPU 上更轻(更低的 VRAM 使用率),更擅长正面拍摄,如果 SRC 集没有覆盖所有必需的角度,可能会在困难的角度下挣扎, DST 的表达式和照明条件。
LIAE:这个模型几乎与 DF 完全相反,如果 DST 的面部特征和总体外观与 SRC 相差太大,但同时比 DF 更好地处理不同的面部比例和形状,它也不会产生与 DF 更匹配 DST 的光线和颜色的人脸,并且在 SRC 集方面更宽容但这并不意味着它可以创建一个高质量的交换,如果你错过了DST中存在的SRC集的主要部分,你仍然需要覆盖所有的角度。LIAE 在 GPU 上更重(更高的 VRAM 使用率),并且在更复杂的角度上做得更好。
此外,请务必阅读步骤 10.5 中的“额外训练和重用已训练的 LIAE/LIAE RTM 模型 - 删除 inter_ab 和 inter_b 文件说明:”,了解如何在重用 LIAE 模型时对其进行处理。
请记住,虽然这些是两种架构的一般特征,但这并不意味着它们会一直这样,错误训练的 DF 模型可能与正确训练的 LIAE 模型具有更差的相似性,并且您也可能完全无法使用 LIAE 创建任何看起来接近 SRC 的东西,并与 DF 模型实现近乎完美的颜色和照明匹配。这一切都取决于您的 SRC 和 DST 的匹配程度以及您的 SRC 集的制作效果如何,即使您了解所有基础知识,仍然需要大量的试验和错误。
每个模型都可以使用启用模型架构变体的标志进行更改,它们也可以按如下所示的顺序进行组合(它们都会影响性能和 VRAM 使用):
-U:此变体旨在提高与源人脸的相似性/相似性,通常建议始终使用。
-D:此变体旨在通过在不增加计算成本的情况下将分辨率提高大约一倍来提高质量,但它需要更长的训练时间,必须首先对模型进行预训练以获得最佳结果,并且分辨率必须更改值 32,而不是其他变体中的 16。一般来说,由于此架构允许更高的转换模型,因此也应该始终使用它,但如果您可以使用极高的 VRAM 设置,则可能值得在没有它的情况下尝试训练模型,因为这可能会产生更高质量的结果。
-T:此变体以与 -U 不同的方式更改模型架构,但目的相同 - 创建更多类似 SRC 的结果,但它可能会影响面部的清晰程度,因为与仅使用 -D/-UD 变体相比,它往往会导致轻微的细节损失。建议仅用于 LIAE。
-C:实验变体,在 ReLu 和 Leaky ReLu 之间切换激活函数(使用风险自负)。
在 DF/LIAEwri 之后合并体系结构变体te一个“-”符号,然后是字母,顺序与上面所示相同,例如:DF-UDTC、LIAE-DT、LIAE-UDT、DF-UD、DF-UT等
DF 与 LIAE 与 AMP 比较 (SFW):
[url=https://href.li/?https://mrdeepfakes.com/video/10 ... l-ver-or-pm-for-btc ]DF-UD vs LIAE-UD vs AMP - 公共版(购买完整版或 PM 购买 BTC)[/url] 我的大模型测试/报告/比较的公开版本(模糊)。完整版包括: - DF-UD vs LIAE-UD vs AMP:新鲜 vs 重复使用结果(初始训练 - SRC:波特曼,DST:奈特利,重复使用 - SRC:约翰逊,DST:泰勒-乔伊) - 其他 DF-UD 结果:风格力量、真实面孔、GAN...
mrdeepfakes.com
接下来的 4 个选项控制模型神经网络维度,这些维度会影响模型的学习能力,修改这些维度会对性能和质量产生重大影响: 自动编码器变暗 ( 32-2048 ?:help ) :
自动编码器调暗设置,影响模型学习人脸的整体能力。
Inter Dims ( 32-2048 ?:help ) : Inter dims 设置,影响模型学习人脸的整体能力,应等于或高于 Auto Encoder dims,仅限 AMP。
编码器变暗 ( 16-256 ?:help ) : 编码器变暗设置,影响编码器学习人脸的能力。
解码器调暗 ( 16-256 ?:help ) : 解码器调暗设置,影响解码器重新创建人脸的能力。
Decoder Mask Dims ( 16-256 ?:help ) : Mask Decoder Diam 设置,影响学习的掩码的质量。可能会也可能不会影响培训的其他方面。
更改每个设置时的性能变化可能会对性能产生不同的影响,如果不进行大量测试,就不容易衡量每个设置对性能和质量的影响。
每个都设置为特定的默认值,该值应提供最佳结果,并在训练速度和质量之间取得良好的折衷。
此外,当更改一个参数时,其他参数也应该更改,以保持它们之间的关系相似,这意味着提高 AE 调光,E 和 D 调光也应该调高,D Mask 调光可以调高,但它是可选的,可以保留默认值或降低到 16 以节省一些 VRAM,代价是学习蒙版的质量较低(与 XSeg 蒙版不同, 这些是模型在训练期间学习的掩码,它们有助于模型有效地训练面部区域,如果您应用了 XSeg,则这些学习的掩码基于 XSeg 掩码的形状,否则将学习默认的 FF 地标派生掩码)。在训练更高的模型分辨率时,最好将它们全部提高,因为它使模型能够更多地了解人脸,在更高的分辨率下,这意味着可能更具表现力和逼真的人脸,从源数据集中捕获更多细节,并更好地再现 DST 表情和照明。
变形因子 ( 0.1 .. 0.5 ?:help ) : 影响模型对预测人脸的变形程度,使其外观和表达更像 SRC,典型值和推荐值为 0.5。(我需要亲自测试一下,还没有使用AMP,所以不知道值越高还是越低越好)。
掩码训练 ( y/n ?:help ) :优先训练被掩码的内容(默认掩码或应用的 xseg 掩码),仅适用于 WF 和 HEAD 人脸类型,禁用它以与人脸本身相同的优先级训练整个样本区域(包括背景)。默认值为 y(启用)。
眼睛和嘴巴的优先级 ( y/n ?:help ) : 尝试通过训练眼睛和嘴巴(包括牙齿)的更高优先级来解决它们的问题,也可以提高它们的清晰度/细节水平。
Uniform_yaw ( y/n ?:help ) : 帮助训练轮廓人脸,强制模型根据偏航在所有人脸上均匀训练,并优先考虑人脸,可能导致前脸训练速度变慢,由 def 启用ault 在预训练期间,可以在启用 RW 时使用,以改善轮廓/侧面的泛化,或者在禁用 RW 时使用,以提高这些面的质量和锐度/细节。当源数据集没有很多配置文件照片时很有用。可以帮助降低损耗值。默认值为 n(禁用)。
模糊我们的蒙版( y/n ?:help ) :模糊蒙版区域以外的区域,使其更平滑。启用蒙版训练后,背景的优先级低于面部区域,因此更容易出现伪影和噪点,您可以将模糊蒙版与背景样式功能相结合,以获得更接近 DST 人脸背景的背景,并且由于此选项提供的额外模糊,背景也更平滑。必须使用相同的 XSeg 模型将掩码应用于 SRC 和 DST 数据集。
将模型和优化器放在 GPU 上 ( y/n ?:help ) :启用 GPU 优化器会将所有负载放在 GPU 上,从而大大提高性能(迭代时间),但会导致更高的 VRAM 使用率,禁用此功能会将优化器的一些工作卸载到 CPU,从而减少 GPU 和 VRAM 使用的负载,从而让您以更长的迭代时间为代价实现更高的批量大小或运行要求更高的模型。如果您收到 OOM(内存不足)错误,并且您不想降低批处理大小或禁用某些功能,您应该禁用此功能,因此一些工作将卸载到您的 CPU,您将能够以较低的速度为代价运行您的模型而不会出现 OOM 错误。默认值为 y(启用)。
使用 AdaBelief 优化器?( y/n ?:help ) : AdaBelief (AB) 是一种新的模型优化器,可提高模型准确性和训练人脸的质量,启用此选项后,它将替换默认的 RMSProp 优化器。然而,这些改进是以更高的VRAM使用率为代价的。使用 AdaBelief 时,LRD 是可选的,但仍建议使用,应在运行 GAN 训练之前启用 (LRD)。默认值为 Y。 个人说明:有人说您可以在现有模型上禁用 Adabelief,它会很好地重新训练,我不完全同意这一点,并认为该模型永远不会完美恢复,并且在您打开或关闭它时会忘记太多,所以我建议坚持启用或禁用它。
LRD也一样,有人说是可选的,有人说还是有必要的,有人说没有必要,我还是和AB一起使用,有些人可能不用,自己从DFL的内置描述中得出结论。
使用学习率辍学 ( y/n/cpu ?:help ) : LRD 用于加速面部训练并减少亚像素抖动 (减少面部抖动,并在一定程度上减少照明闪烁)。
它主要用于 3 种情况:
- 在禁用 RW 之前,当损失值不再有很大改善时,这可以帮助模型更多地
泛化人脸 - 在禁用 RW 并且您已经很好地训练了模型后,在训练接近尾声时启用它将导致更详细、更稳定的人脸,不易闪烁
此选项会影响 VRAM 的使用率,因此,如果遇到 OOM 错误,可以在 CPU 上运行它,代价是迭代时间缩短 20%,或者只是降低批处理大小。
有关LRD和顺序的更详细说明在训练期间启用主要功能,请参阅常见问题 问题 8
启用样本的随机扭曲 ( y/n ?:help ) : 随机扭曲用于泛化模型,使其在初始训练阶段正确学习面部特征和表情,但只要启用它,模型可能难以学习精细细节 - 因此,只要您的面部仍在改善,建议保持此功能启用(通过查看预览窗口中的损失值减少和面孔改善)并且一旦所有看起来都正确(并且损失不再减少),您应该禁用它以开始学习详细信息,从那时起,您不会重新启用它,除非您通过应用某些设置的高值(样式功率、真实面孔等)或当您想重用该模型来训练具有相同来源的新目标视频时或当结合使用新的 SRC 和 DST,您始终在启用 RW 的情况下开始训练。默认值为 y(启用)。
启用 HSV 电源 ( 0.0 .. 0.3 ?:help ) :在训练期间仅对 SRC 数据集应用随机色调、饱和度和亮度变化,以提高颜色稳定性(减少闪烁),还可能影响最终结果的颜色匹配,此选项具有略微平均 SRC 集颜色的效果,因为 SRC 样本的 HSV 偏移仅基于 SRC 样本中的颜色信息,并且可以与颜色转移 (CT)、功率(质量),如果您碰巧在没有 CT 的情况下获得更好的结果,但只需要使结果面部的颜色更加稳定和一致,则此选项会降低或在没有它的情况下使用,要求您的 SRC 数据集在照明条件(方向、强度和色调)方面具有多种多样性, 建议值为 0.05。
GAN power ( 0.0 .. 10.0 ?:help ) : GAN代表生成对抗网络,在DFL 2.0的情况下,它被实现为一种额外的训练方式,以获得更详细/清晰的面孔。此选项可在 0.0 到 10.0 的范围内进行调整,并且只有在模型或多或少完全训练后(在禁用样本的随机扭曲并启用 LRD 之后)才应启用此选项。建议使用较低的值,例如 0.01。确保在开始训练之前备份您的模型(如果您不喜欢结果、获取 artifcats 或您的模型崩溃)。启用后,将显示另外两个设置来调整 GAN 的内部参数: [RES 的 1/8] GAN 补丁大小 ( 3-640 ?:help ) :
以更高的 VRAM 使用率为代价提高 GAN 训练的质量,默认值为分辨率的 1/8。
[16] GAN维度 ( 4-64 ?:help ) : GAN网络的维度。尺寸越高,需要的VRAM就越多,但它也可以提高质量,即使在最低设置下也可以获得锋利的边缘,因此建议默认值为16,但如果需要,您可以将其降低到12-14以节省一些性能。
使用 GAN 以 0.1 的值进行 40k 迭代的人脸训练前/后示例:
[img=650x400]
“真实人脸”功效。( 0.0000 .. 1.0 ?:帮助 ):使用可变功率设置进行真实人脸训练,您可以将模型判别器设置为更高或更低的值,这样做的目的是使最终人脸看起来更像 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 错误,迫使您降低批处理大小才能使用它。对于背景样式功率 (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 Color Transfer):基于: [url=https://href.li/?https://www.cs.tau.ac.il/~turkel/imagepapers/ColorTransfer.pdf ]https://www.cs.tau.ac.il/~turkel/imagepapers/ColorTransfer.pdf[/url]
- LCT(线性颜色转移):使用线性变换将目标图像的颜色分布与源图像的颜色分布相匹配。
- mkl(Monge-Kantorovitch 线性):基于:[url=https://href.li/?http://www.mee.tcd.ie/~sigmedia/ ... tions/fpitie07b.pdf ]http://www.mee.tcd.ie/~sigmedia/pmwiki/uploads/Main.Publications/fpitie07b.pdf[/url]
- idt(迭代分布传输):基于:[url=https://href.li/?http://citeseerx.ist.psu.edu/vie ... 2&rep=rep1&type=pdf ]http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.158.1052&rep=rep1&type=pdf[/url]
- SOT(切片最优传输):基于:[url=https://href.li/?https://dcoeurjo.github.io/OTColorTransfer/ ]https://dcoeurjo.github.io/OTColorTransfer/</B197> 大多数颜色转移对性能或 VRAM 使用几乎没有影响,但 SOT 除外,它在训练期间对性能有影响,如果在合并期间使用,可能会严重减慢合并过程,其他颜色转移(如 IDT)也可能在合并期间对性能产生影响。 使用颜色转移并不总是必需的,但通常会有所帮助,在某些情况下是绝对强制性的,您还应该记住,启用它们可以作为集合的增强,有效地为所有 SRC 样本创建新条件,从而增加训练数据的复杂性,这可能会导致启用时更高的损失,自然意味着模型必须训练更长的时间才能达到相同的状态与没有颜色转移的训练相比,在训练中,脸部永远不会改变那么多颜色。此选项可以与随机 HSV 功率结合使用,后者仅根据单独 SRC 集的颜色提供 SRC 集的额外增强(与基于 DST 增强 SRC 的 CT 不同),有效地略微平均其颜色,提供 CT 方法可能无法实现的额外颜色条件,并且它还略微降低了 CT 的效果(在官方说明中称为 iperov 的 CT 质量降低)。 实现此功能是为了防止在使用 DFL 2.0 的各种功能时可能发生的所谓模型崩溃/损坏。它对性能的影响很小,因此,如果您真的不想使用它,则必须启用自动备份,因为折叠的模型无法恢复,必须抓取,并且必须重新开始训练。默认值为 n(禁用),但由于性能影响非常低,并且如果将其保持启用状态,它可以防止模型崩溃,从而节省大量时间。使用样式幂时最有可能发生模型折叠,因此,如果您正在使用它们,强烈建议启用渐变剪裁或备份(您也可以手动执行)。 启用预训练过程,该过程使用随机人员数据集对模型进行初始预训练,在将其训练到 500.000 到 1.000.000 次迭代后,可以在使用实际data_src开始训练时使用此类模型,data_dst您想要训练,这样可以节省时间,因为模型已经知道人脸应该是什么样子,从而减少所需的时间面部在训练时清晰显示(确保在实际data_src和data_dst训练时禁用预训练)。使用 -D 体系结构变体的模型必须进行预训练,并且强烈建议对所有模型进行预训练。 预训练模型是通过用各种人的随机面孔训练它们而制作的。使用以这种方式准备的模型可以显着加快初始训练阶段,因为模型已经知道人脸应该是什么样子,因此您不必等待人脸开始显示,与在新的和非预训练模型上进行训练相比,它们会变得清晰得更快。您现在还可以分享您的自定义预训练集 (SFW/NSFW),适用于各种face_types(全脸、全脸和头部)。 只需下载它并将所有文件直接放入您的模型文件夹中,开始训练,在选择要训练的模型(如果您的模型文件夹中有多个)和要训练的设备 (GPU/CPU) 后,在 2 秒内按任意键(您会看到一个提示,上面写着这句话)覆盖模型设置并确保预训练选项设置为禁用 (N),以便您开始训练而不是继续预训练。如果启用预训练选项 (Y),模型将继续使用 DFL 附带的内置预训练数据集进行预训练(在此线程中,您将找到使用旧的全脸预训练数据集集以及新的全脸 FFHQ 数据集训练的模型)。请注意,当您禁用预训练并开始常规训练时,模型会将迭代计数恢复为 0,这是预训练模型的正常行为。但是,如果模型被描述为“常规训练”,这意味着它不是预训练的,而是训练到一定数量的迭代,其中 SRC 和 DST 数据集都包含随机的人脸,在这种情况下,模型将继续训练,迭代计数不会从 0 开始,而是从共享模型的用户结束训练时的值开始。 1. 创建一个的官方和推荐方法是使用预训练选项,该选项将使用 DFL 内置的随机名人面孔数据集,并像这样训练您的模型进行 500k-1kk 迭代。 在模型经过充分训练后(到那时,预览中的大多数脸部应该看起来很清晰,有明确的牙齿和眼睛,但不一定有很多非常精细的细节)。 1.1 您还可以将默认的预训练数据集更改为您自己的数据集,您可以通过放置您最有可能伪造的人的随机面孔(它可以是男性、女性、男性和女性的混合、仅限名人、随机人物)来制作,然后使用 util faceset 包打包.bat然后用这个新数据集替换 \_internal\pretrain_CelebA 中的原始文件。 2. 预训练模型的另一种方法是准备data_src,并从不同角度和不同的表情data_dst随机人物的面孔数据集,并像正常训练一样训练模型(禁用预训练)。对于源数据集,您可以使用将来最有可能交换的名人的面孔,对于 DST,您可以使用最有可能用作目标视频的视频类型的任何面孔。 然而,应该注意的是,通过简单地在随机面上训练来准备模型可能会引入一些变形,并使结果面在一段时间内看起来不太像源。但是,在使用同一源进行几次重新训练后,预测人脸的 src 相似度应该会有所改善。与在预训练模型上训练相比,这种方法可以更快地适应新面孔(因为我们只是重用一个模型,但不是重用在特定 src 数据集上训练的模型,而是重用一个包含随机人脸的模型,如上所述,你可以包括你的人的面孔OST 可能会伪造为 SRC 和 DST 数据集的一部分)。[/url]
10.1 RTM 训练工作流程:
随着 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 集开始:确保覆盖所有可能的角度,每个角度都有尽可能多的不同照明条件和表情,对不同可能面孔的覆盖越好,效果就越好。
2. 通过收集许多随机面孔来准备一个 DST 集:这个数据集也必须具有尽可能多的多样性,这个数据集可以是真正随机的,由各种肤色的男性和女性面孔组成,或者它可以特定于例如黑人男性面孔或女性亚洲面孔,如果这是您计划主要使用模型的目标面孔类型, 集合中的面孔种类越多,训练模型所需的时间就越长,但模型可能会更好,因为它将能够更正确地交换到更多种类的不同面孔。
或者 - 使用来自 iperov 的 RTM WF 数据集: [url=https://href.li/?https://tinyurl.com/2p9cvt25 ]https://tinyurl.com/2p9cvt25[/url]
如果链接已失效,请转到 [url=https://href.li/?https://github.com/iperov/DeepFaceLab ]https://github.com/iperov/DeepFaceLab[/url] 并找到指向 DFL 构建的 torrent/磁力链接,因为它们包含 RTM WF 数据集,可以使用相同的数据集来训练 RTT 模型。
3. 将 XSeg 掩码应用于两个数据集:这将确保模型正确训练,并且与任何其他训练一样,需要创建 WF 模型,虽然对于 FF 模型是可选的,但仍建议将正确类型的 XSeg 掩码应用于两个数据集,请确保对两个数据集使用相同的 XSeg 模型。
4. 使用现有的 RTT 模型或创建一个新的模型:iperov 推荐的 RTT 模型是经过大量重新训练的模型,迭代次数超过 2-3kk,因此创建它们可能需要花费大量时间,作为替代方案 y您可以预训练 600k-1kk 迭代的 LIAE 模型,更多关于在下一阶段制作 RTT 的信息。
5. 使用以下工作流程开始对 SRC 和随机 DST 进行训练,请注意,与 iperov 相比,其中一些略有修改,使用风险自负。
5.1 Iperov 的新工作流程:设置:EMP Enabled、Blur Out Mask Enabled、UY Enabled、LRD Enabled、BS:
8(如果您无法以足够高的 BS 运行模型,请降低它或在 cpu 上运行模型优化器和 lrd)。
其他选项应保留为默认值(通常表示禁用)。(可选)在 0.1 次下使用 HSV 和最适合您的 CT 模式,通常是 RCT。 在每个阶段之前进行备份或启用自动备份。
1. 在启用 RW 的情况下训练 +2.000.000 迭代器,每 500k 迭代删除 inter_AB.npy(保存并停止模型训练,删除文件并恢复训练)
2.删除后inter_AB第 4 次训练额外的 +500k,并启用 RW。
3. 如果交换的面孔看起来更像 DST,请删除inter_AB并重复第 2 步。
4. 禁用 RW 并训练额外的 +500k 迭代。
5. 以 0.1 的功率启用 GAN,GAN_Dims:32,补丁大小为 +800.000k 迭代的模型分辨率的 1/8。
5.2 Iperov 的旧工作流程:
1.使用 Random Warp: Y、Uniform Yaw: Y、LRD: N、Blur Out Mask: Y、Color Transfer: LCT 进行 500k-1kk 迭代,其他设置保留默认值。
2. 接下来使用 LRD: Y 进行 500k 迭代,保留步骤 1 中的其他设置。
3. 之后,使用 Uniform Yaw: N
4 进行 500k 次迭代。现在使用 Random Warp: N ,Uniform Yaw: N ,LRD: Y *
5 进行 500-800k 迭代。最后,使用 Random Warp: N ,Uniform Yaw: N ,LRD: Y 和 GAN: 0.1,GAN 补丁大小:(模型分辨率的 1/8),GAN DIMS:32 进行 200-300k 迭代
10.2 使用 RTM 模型:
完成模型训练后,可以在 DFL 中使用它们,也可以导出为 DFM 模型以在 DFLive 中使用。
要导出模型以在 DFLive 中使用,请使用 6) 将 SAEHD 导出为 dfm 或 6) 将 AMP 导出为 dfm,您可以选择量化模型,这可以使其运行得更快,但某些模型,尤其是具有高分辨率和高网络维度 (dims) 值的大型模型,如果在启用此选项的情况下导出它们,则可能无法正常工作,因此请确保在 DFLive 中对其进行测试, 该过程不会删除原始模型,只会在“模型”文件夹中创建额外的DFM文件。如果您的模型运行不佳,请在禁用量化选项的情况下再次导出它。
如果你想在DFL中使用你的RTM模型,你可以开始提取新场景并将它们与这个模型合并,而无需任何额外的训练,或者做一些额外的训练。
额外训练和重用经过训练的 LIAE/LIAE RTM 模型 - 删除 inter_ab 和 inter_b 文件说明:
什么是 inter_ab 和 _b 文件?这些是使用 LIAE 架构的 SAEHD 模型的一部分(无论其他 -U、-D、-T 和 -C 变体如何),与 DF 架构不同,DF 架构具有一个用于 SRC 和 DST 的通用内部文件,LIAE 具有两个内部文件,inter_ab包含 SRC 和 DST 面的潜在代码(表示)以及包含 DST 面潜在代码的附加inter_b。
1. 如果要在新的 DST 上将 RTM 模型重用为常规 LIAE 模型,并从启用 RW 开始训练模型(训练为常规模型),请从模型文件夹中删除inter_b文件。
适用于重用经过训练的 LIAE 模型和更改 DST,但不适用于 SRC。
2. 当您想为不同的名人创建新的 RTM 模型时,请删除inter_ab文件,用新的 SRC 替换 SRC,添加随机 DST 集并继续执行与创建新 RTM 模型时相同的工作流程。
适用于重用经过训练的 LIAE 模型和更改 SRC,但不适用于 DST
3。如果要使用经过训练的 RTM 模型对目标 DST 执行其他训练,请不要删除inter_ab或inter_b。
不适用于常规训练的 LIAE 模型重用(可能会遇到最终预测的面孔看起来就像 DST 或与 SRC 非常相似的问题)
4.删除 inter_ab 和 inter_b 当您在常规场景中重用经过训练的 LIAE 模型时,无论是 src/dst 更改还是您遇到结果看起来像 DST 的问题,请注意,这与禁用预训练时发生的情况类似,只有编码器/解码器保持训练状态,所有其他数据都被删除,这意味着模型在某种程度上会恢复到一种状态,就好像它只是预训练一样(不完全是,但更接近)到那个比训练状态)这可能会导致训练需要更长的时间。
在这种情况下,只需将随机 DST 替换为特定的 taget DST,在禁用 RW 的情况下开始训练:
如果要使用旧的 iperov 工作流进行训练,请从 OLD WORKFLOW 的第 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] : 重命名
[d] : delete
[0] : df192 - 最新的
第三个会询问您要使用哪个 GPU/GPU 或 CPU 进行合并(转换)过程:
选择一个或多个 GPU idx(用逗号分隔)。
[CPU] : CPU
[0] :您的 GPU [0] 选择哪个 GPU
索引? :
按回车键将使用默认值 (0)。
完成后,您将看到一个包含当前设置的命令行窗口以及预览窗口,其中显示了操作交互式转换器/合并所需的所有控件: [图像丢失,工作正在进行中]
以下是所有合并/转换器功能的列表:
请按 Tab 键检查帮助屏幕,查看哪些键对应于哪个选项,以防它们发生变化或您使用不同的布局键盘,它们也可能随着时间的推移而变化。
也不是说合并 AMP 可能不具有 SAEHD 合并的所有选项,但是一旦您了解了 SAEHD 合并,那么 AMP 就非常相似,大多数选项都具有相同的名称并以类似的方式工作。我不会使用特定于 AMP 的合并信息来扩展指南,因为它几乎都相同,几乎没有丢失或添加,帮助屏幕(选项卡)的存在是有原因的。
1. 主要叠加模式: - 原始:显示原始帧,没有交换面 - 叠加:在帧上简单叠加学习的面
- 这是推荐使用的叠加模式,因为它最稳定,
并且保留了大部分原始训练的脸部外观。
- hist-match:根据直方图叠加学习到的脸部和轮胎以匹配它,它有 2 种模式:正常和蒙版,可以用 Z 切换 - 建议使用正常。
- 无缝:使用 OpenCV Poisson 无缝克隆功能将新学习的人脸混合到原始帧
中的头部 - 无缝 HIM 匹配:结合了 HIST-MATCH 和 Seamless。
- raw-rgb:覆盖原始学习的人脸,没有任何遮罩
2.历史匹配阈值:控制直方图马的强度在 hist-match 和无缝 hist-match 叠加模式下进行 tching。
Q - 增加值 A - 减少值
3.侵蚀蒙版:控制蒙版的大小。
W - 增加掩模侵蚀(较小的掩模) S - 减少掩模侵蚀(更大的掩模)
4.模糊蒙版:模糊/羽化蒙版边缘以实现更平滑的过渡
E - 增加模糊
D - 减少模糊
5.运动模糊:输入初始参数(转换器模式、模型、GPU/CPU)合并后,加载所有帧和data_dst对齐的数据,同时计算用于创建此设置控制的运动模糊效果的运动矢量,它允许您将其添加到面部移动的地方,但即使有很小的移动,高值也可能会模糊面部。该选项仅在“data_dst/aligned”文件夹中存在一组人脸时才有效 - 如果在清理过程中您有一些带有 _1 前缀的人脸(即使只有一个人的脸),该效果将不起作用,如果有一面镜子反射目标人的脸,也是如此,在这种情况下,您不能使用运动模糊,添加它的唯一方法是分别训练每组人脸。
R - 增加运动模糊
F - 减少运动模糊
6.超分辨率:使用与数据集/面部增强器类似的算法data_src它可以为牙齿、眼睛等区域添加更多定义,并增强学习到的人脸的细节/纹理。
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.颜色tRansfer 模式:与训练期间的颜色转移类似,您可以使用此功能更好地将学习到的人脸的肤色与原始帧相匹配,从而实现更无缝和逼真的面部交换。有 8 种不同的模式:
RCT - 最常使用和推荐。
LCT - 第二大最常使用的选项,效果比 RCT 更强。 MKL
MKL-M - RCT的良好替代品,在某些方面非常相似。
IDT
IDT-M SOT-M MIX-M
11.图像降级模式:您可以使用 3 种设置来影响原始帧的外观(不影响交换的脸):
降噪 - 对图像进行降噪,使其略微模糊(I - 增加效果,K - 减少效果) 双立方 - 使用双立方方法模糊图像(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 面部),对脸部应用额外的颜色校正和颜色匹配(通过使用蒙版仅显示合并帧的面部部分), 添加锐化、胶片颗粒/噪点等。