批处理之Step 4.1: View Source Faceset Result
步骤 4.1:查看源 Faceset 结果
提取后,您可以使用附带的 VNView 图像查看器查看源面集结果。
Run: 4.1) data_src view aligned result.bat
源面集将使用附带的 XNView 图像查看器打开。您还可以在 data_src/aligned 文件夹中找到这些文件。您会注意到图像按顺序编号,并带有包含下划线和数字的后缀。DeepFaceLab根据原始图像编号和图片中人脸的索引来命名每个文件。第一张脸(由 _0 后缀表示)通常是父帧图像中最大的脸。
示例:DeepFaceLab 2.0 XNView 图像查看器
按索引删除不需要的面孔
如果您没有限制每个图像的最大面部数量,则提取器可能会产生大量不需要的面部提取和错误检测。
示例:DeepFaceLab 2.0 多面调试图像
源 Faceset 原始提取样本:
示例:DeepFaceLab 2.0 清理前提取的面集
使用 XNView 或导航到 data_src/aligned 文件夹,您可以开始删除不需要的面孔。由于源面部可能是第一或第二图像索引,因此您可以快速删除其他人的面部。在搜索栏中开始输入“_0.jpg”。这将向您显示在每帧图像中检测到的第一张脸。删除任何不需要的面孔和错误检测。您还可以开始移除高度旋转或缩放的面以及源面的极端障碍物。现在搜索“_1.jpg”并从下一个面部索引中删除所有不需要的图像,重复该过程直到到达最后一个面部索引。清除搜索框并再次查看整个面部设置,以查找您可能错过的任何不需要的图像。
示例:DeepFaceLab 2.0 源人脸集重复检测
请注意可能存在重复或错误的面部提取。在上图中,您可以看到已提取了 2 张相似的面孔。虽然面部边界框(蓝色)发现了 2 个不同的面部,但特征对齐(绿色)被遮挡,这导致图像边界框(红色)瞄准了错误的面部。在这种情况下,应保留第一张图像(索引 _0)。如果您不确定哪张脸是正确的,您只需将它们都删除即可。
Step 4.2: Source Faceset Sorting & Cleanup
目的:整理源输入数据。
面部集提取器将从原始图像中导出许多面部,并且可能包括错误检测、对齐不良的面部和重复图像。源面集清理的目标是生成准确对齐的主题面集,具有丰富的多样性和很少的重复项。由于您可能拥有大量源图像,因此请随意删除任何您不确定的面孔。您还应该修剪源面集以适合目标面集角度、表情和颜色。提取目标面集后,请重新访问本部分。
清理和修剪后的源面集:
示例:DeepFaceLab 2.0 清理后提取的面集
Run: 4.2) data_src sort.bat
有多种不同的排序方法可供选择。按直方图相似度排序会将相似的图像分组在一起,帮助您批量删除不需要的面孔和极其相似的图像。按俯仰排序和按偏航排序将帮助您找出不良对准。按模糊排序可以删除低质量图像。
这些排序方法将按照新的顺序重命名文件。运行文件“4.2)data_src util恢复原始文件名”会将文件恢复为其原始名称和顺序。唯一的例外是按最佳面孔和更快的最佳面孔排序。这两种方法会要求你输入所需数量的图像,它会从中选择具有不同属性的各种面孔。其余图像将被移动到“aligned_trash”文件夹中。最好的面孔排序并不十分准确,因此不要仅依赖它来创建您的面孔集。
排序方式 | 描述 |
---|---|
[0] blur | 根据对比度按图像模糊程度排序。 |
[1] motion blur | 按运动模糊排序。 |
[2] face yaw direction | 按偏航角排序(水平/从左到右)。 |
[3] face pitch direction | 按间距排序(垂直/从上到下)。 |
[4] face rect size in source image | 按原始视频帧图像中面部的大小排序(降序)。 |
[5] histogram similarity | 按直方图相似度排序(降序)。 |
[6] histogram dissimilarity | 按直方图相似度排序(升序)。 |
[7] brightness | 按图像亮度排序。 |
[8] hue | 按图像色调排序。 |
[9]amount of black pixels | 按图像中黑色像素的数量排序(升序)。 |
[10] original filename | 按原始文件名的顺序排序。不恢复原始文件名。 |
[11] one face in image | 按原始视频帧图像中的人脸数量排序(升序)。 |
[12]absolute pixel difference | 按绝对差值排序。 |
[13] best faces | 通过多种方法(带模糊)进行排序并删除相似的面孔。选择要保留的面部图像的目标数量。丢弃的面移至 data_src/aligned_trash。 |
[14] best faces faster | 按多种方法排序(使用面部矩形大小)并删除相似的面部。选择要保留的面部图像的目标数量。丢弃的面移至 data_src/aligned_trash。 |
DeepFaceLab 2.0 排序方法
示例:DeepFaceLab 2.0 排序方法
Data_src 实用程序
有几个实用程序可以帮助您处理源图像。
Data_src 实用程序 | 描述 |
---|---|
4.2) data_src util 添加地标调试 images.bat | 添加面部标志调试图像。复制 data_src/aligned 中的面集图像。向图像添加可见的地标。将“_debug”附加到文件名。注意:在训练之前从 Faceset 中删除调试图像。 |
4.2) data_src util 面集增强.bat | 通过高档增强源面集。增强图像将在 data_src/aligned_enhanced 中创建。系统会询问您是否要替换(覆盖)原始图像。 |
4.2) data_src util 面集元数据恢复.bat | 从meta.dat 文件恢复源faceset 元数据。 |
4.2) data_src util 面集元数据 save.bat | 将源faceset元数据保存为meta.dat文件。[控制台:现在您可以编辑图像了。!!!在文件夹中保留相同的文件名。您可以更改图像的大小,恢复过程将缩小回原始大小。之后,使用恢复元数据。] |
4.2) data_src 实用程序faceset pack.bat | 将源faceset打包为data_src/aligned/faceset.pak文件。系统将询问您是否要删除原始文件。 |
4.2) data_src utilfacesetresize.bat | 调整源面孔集图像的大小并更改面孔类型。[注:半脸/中脸/全脸/全脸/头部/无变化]调整大小的图像将在 data_src/aligned_resized 中创建。系统会询问您是否要替换(覆盖)原始图像。 |
4.2) data_src utilfacesetunpack.bat | 解压源 data_src/aligned/faceset.pak 文件。Faceset.pak 将被删除。 |
4.2) data_src util 恢复原始文件名.bat | 排序后用原始文件名重命名源faceset文件。Faceset 文件名取自原始视频帧图像文件名。 |
DeepFaceLab 2.0 源实用程序
第 5 步:提取目标面集
目的:为 DeepFaceLab 提供目标对齐的脸部图像。
目标面集的提取过程与源面集的提取过程类似。如果您已导入自己的目标面集,则可以跳到步骤 5.3。
Run: 5) data_dst faceset extract.bat
Which GPU Index to choice?:从列表中选择一个或多个 GPU 索引来运行提取。
建议在选择多个 GPU 索引时使用相同的设备。
面部类型 ( f / wf / head ):选择提取的面部类型。
[工具提示:全脸/全脸/头部。“全脸”覆盖脸部的整个区域,包括前额。“head”覆盖整个头部,但需要 XSeg 来表示 src 和 dst 面集。]
图像大小 ( 256 – 2048 ):选择提取的面孔集图像文件的大小(分辨率)。
[工具提示:输出图像大小。图像尺寸越大,面部增强器的效果越差。仅当源图像足够清晰并且面部不需要增强时才使用高于 512 的值。]
Jpeg 质量 ( 1 – 100 ):选择提取的面集图像文件的质量(压缩)。
[工具提示:Jpeg 质量。jpeg 质量越高,输出文件大小越大。]
几分钟后,提取将完成,并为您提供有关找到的图像数量和检测到的人脸数量的报告。目标面集图像文件将在 data_src/aligned 文件夹中创建。调试图像也将在 data_dst/aligned_debug 文件夹中生成。
Optional: 5) data_dst faceset extract MANUAL.bat
手动目标 Faceset 提取器采用与5) data_dst Faceset extract.bat相同的选项。打开一个界面以在图像上手动设置面集对齐标志。手动模式每帧仅允许选择一个脸部。
Optional: 5) data_dst faceset extract + manual fix.bat
具有手动修复功能的目标面集提取器采用与5) data_dst Faceset extract.bat相同的选项。自动目标面集提取器,可以选择手动标记未检测到的帧。自动提取后,将打开一个界面,允许您在没有检测到人脸的视频帧上手动设置人脸对齐标志。手动模式允许每帧选择一个脸部。
手动重新提取面
您可以手动重新提取对齐不良或未检测到的面部。删除不需要的面孔后,您可能需要重新执行此步骤。
首先,通过运行
5.1) data_dst view aligned_debug results.bat
打开 data_dst/aligned_debug 文件夹。删除任何包含要包含在目标脸部集中的对齐不良或未检测到的脸部的图像。接下来,您将仅从已删除的帧中手动重新提取脸部。由于您在手动模式下只能选择一张脸,因此该图像将接收索引 _0 并将覆盖该帧和脸部索引的当前对齐图像。具有任何其他索引的该帧的对齐图像将保留。尽管不是必需的,但在删除调试图像时删除相应的对齐图像可能会有所帮助。
示例:DeepFaceLab 2.0 Data_dst 视图对齐调试
Optional: 5) data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG.bat
打开一个界面,仅在与已删除的调试图像相对应的视频帧上手动设置面集对齐标志。
Which GPU Index to choice?:从列表中选择一个或多个 GPU 索引来运行提取。
建议在选择多个 GPU 索引时使用相同的设备。
图像大小 ( 256 – 2048 ):选择提取的面孔集图像文件的大小(分辨率)。
[工具提示:输出图像大小。图像尺寸越大,面部增强器的效果越差。仅当源图像足够清晰并且面部不需要增强时才使用高于 512 的值。]
Jpeg 质量 ( 1 – 100 ):选择提取的面集图像文件的质量(压缩)。
[工具提示:Jpeg 质量。jpeg 质量越高,输出文件大小越大。]
界面和流程与4)data_src faceset提取手册相同。您将无法更改脸型。控制台将记录找到的图像数量和检测到的面部数量。
步骤 5.1:查看目标 Faceset 结果
提取后,您可以查看目标面集。
Run: 5.1) data_dst view aligned results.bat
示例:DeepFaceLab 2.0 目标人脸集
按索引删除不需要的面孔
请参阅步骤 4.1:查看源 Faceset 结果中的索引搜索方法以获取说明。尝试保留尽可能多的目标面孔集图像。首先去除其他人的面孔和错误检测。稍后您可以引用调试图像来删除和修复错误的对齐。
再次,请注意可能的重复和错误的面部提取。由于您希望保留尽可能多的目标面,因此您必须注意确定要保留哪些面以及要删除哪些面。在下图中,您可以看到已提取了 2 张相似的面孔。虽然面部边界框(蓝色)发现了 2 个不同的面部,但特征对齐(绿色)被遮挡,这导致图像边界框(红色)瞄准了错误的面部。使用调试图像来确定哪张是理想的脸部。
示例:DeepFaceLab 2.0 重复人脸检测
Optional: 5.1) data_dst view aligned_debug results.bat
在 XNView 中打开目标aligned_debug 图像。使用此图像查看器可以查找对齐不良的相应面集图像。
在之前运行
5) data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG
,使用此查看器删除包含对齐不良的面部的调试图像。
步骤 5.2:目标 Faceset 排序、清理和重新提取
目的:整理目标输入数据。
Run: 5.2) data_dst sort.bat
有关基本说明,请参阅步骤 4.2:源 Faceset 排序和清理中的排序方法。
对于目标脸部集,您希望保留尽可能多的脸部图像,因为任何被删除的脸部都不会出现在最终的深度伪造中。
Data_dst 实用程序
有一些实用程序可以帮助您进行目标图像操作。
数据_dst 实用程序 | 描述 |
---|---|
4.2) data_dst util faceset pack.bat | 将目标面集打包为 data_dst/aligned/faceset.pak 文件。删除原文件?( y / n ) : 选择打包后删除原文件。 |
4.2) data_dst util faceset resize.bat | 调整目标面孔集图像的大小并更改面孔类型。调整大小的图像将在 data_dst/aligned_resized 中创建。新图像尺寸 ( 128-2048 ):选择新的面集图像尺寸(分辨率)更改面型(h/mf/f/wf/head/same):选择以更改面型。[注:半脸/中脸/全脸/全脸/头部/无变化]data_src/aligned_resized 合并到 data_src/aligned ?:选择用调整大小的图像替换(覆盖)原始脸部集图像。 |
4.2) data_dst util faceset unpack.bat | 解压目标 data_dst/aligned/faceset.pak 文Faceset.pak 将被删除。 |
4.2) data_dst util recover original filename.bat | 排序后用原始文件名重命名目标面集文件。Faceset 文件名取自原始视频帧图像文件名。 |
DeepFaceLab 2.0 目标实用程序
步骤 5.3:XSeg 掩模标记和 XSeg 模型训练
目的:定义用于模型训练和合并的面孔集掩模区域。
每个面都将包含提取过程中生成的默认蒙版。创建 Xseg 蒙版允许您指定面部的哪些区域将被训练或不被训练,并定义用于合并的蒙版形状。使用 XSeg 将产生更好的构图并增加与源面集的相似度。XSeg 遮罩还将帮助模型确定面部尺寸和特征,从而产生更真实的眼睛和嘴巴运动。虽然默认蒙版可能适用于较小的脸部类型,但较大的脸部类型(例如全脸和头部)需要自定义 XSeg 蒙版才能获得最佳结果。Xseg 面罩还可以让您排除手、头发、眼镜、穿孔等障碍物。
XSeg 实用程序
在开始使用 XSeg 之前,请阅读此各种可用工具的表。
XSeg 实用程序 | 描述 |
---|---|
5.XSeg Generic) data_dst whole_face mask – apply.bat | 将通用 XSeg 整个面罩应用于目标面集。 |
5.XSeg Generic) data_src whole_face mask – apply.bat | 将通用 XSeg 整个面罩应用于源面集。 |
5.XSeg) data_dst mask – edit.bat | 编辑目标 XSeg 掩码标签。 |
5.XSeg) data_dst mask – fetch.bat | 将 XSeg 标记的目标面集图像复制到 data_dst/aligned_xseg。 |
5.XSeg) data_dst mask – remove.bat | 从目标面集图像中删除 XSeg 遮罩标签。 |
5.XSeg) data_dst trained mask – apply.bat | 将经过训练的 XSeg 掩码应用于目标面集。 |
5.XSeg) data_dst trained mask – remove.bat | 从目标面集中删除经过训练的 XSeg 掩码。 |
5.XSeg) data_src mask – edit.bat | 编辑源 XSeg 掩码标签。 |
5.XSeg) data_src mask – fetch.bat | 将 XSeg 标记的源面集图像复制到 data_src/aligned_xseg。 |
5.XSeg) data_src mask – remove.bat | 从源面集图像中删除 XSeg 掩模标签。 |
5.XSeg) data_src trained mask – apply.bat | 将经过训练的 XSeg 掩模应用于源面集。 |
5.XSeg) data_src trained mask – remove.bat | 从源面集中删除经过训练的 XSeg 掩码。 |
5.XSeg) train.bat | 使用来自源面集和目标面集的标记图像训练 XSeg 掩模。 |
DeepFaceLab 2.0 XSeg 实用程序
快速入门:通用 XSeg 预训练掩模
开始使用 Xseg 的最快方法是应用预训练掩模。DeepFaceLab 包括一个通用的全脸 Xseg 面罩。您还可以自行预训练或下载预训练掩模。通用掩码文件可以在 _internal/model_generic_xseg 文件夹中找到。请记住,这是全脸型面膜,可能不适用于其他脸型。
Optional: 5.XSeg Generic) data_dst whole face mask apply.bat
选择哪个 GPU 索引?:从列表中选择单个 GPU 索引以应用 XSeg 掩码。
通用整个面罩将应用于目标面集。将经过训练的通用 XSeg 模型文件放置在 _internal/model_generic_xseg 中。
Optional: 5.XSeg Generic) data_src whole face mask apply.bat
选择哪个 GPU 索引?:从列表中选择单个 GPU 索引以应用 XSeg 掩码。
通用整个面罩将应用于源面集。您可以在 _internal/model_generic_xseg 中找到通用预训练 XSeg 模型文件。
示例:应用 DeepFaceLab 2.0 通用 XSeg 掩模
如果您开始或继续使用通用掩模训练深度伪造,您会注意到开始形成更大的掩模区域。模型需要一些时间来适应面罩。对于许多项目来说,这种通用蒙版是一个很好的起点,但是极端角度和黑暗、模糊或严重遮挡的面孔可能会遇到困难。
标记 XSeg 掩码
要创建您自己的 Xseg 蒙版,您首先需要使用蒙版多边形标记一些面。之后,您将进行训练并将面罩应用到面部。
Run 5.XSeg) data_dst mask edit.bat
您将看到 Xseg 初始屏幕,图像加载后您将能够使用该界面。首先让我们回顾一下 XSeg UI。
图:DeepFaceLab 2.0 XSeg 遮蔽界面
首先标记一些清晰、完全暴露且未被遮挡的较容易的面。选择一个舒适的起点和方向来处理脸部周围。使用鼠标左键沿着面的边缘放置点。鼠标滚轮将允许您放大和缩小,将图像重新置于光标的中心。使用 Ctrl + Z 撤消先前的点。
完成对面的标记后,您可以通过单击第一个点来完成多边形。然后,您可以通过移动、添加或删除点来修改多边形。当您处理面部集时,请尝试在每个图像中沿着下巴和发际线周围的类似路径保持蒙版形状的一致性。对于较小的脸型,您应该沿着下巴线并穿过眉毛上方的前额。使用头型脸部设置时,您需要包括整个脸部、耳朵、头发以及颈部(可选)的一部分。稀疏或移动的头发很难深度伪造,因此您可能需要在后期处理中对其进行细化。
无需专注于制作数百个点的精确掩模;几十个就可以了。相反,您可以花时间在面集偏航、俯仰和颜色范围内标记各种面。您还应该标记各种面部表情,例如张嘴和闭嘴,以及眼睛看着不同的方向。您可以关闭编辑器并使用排序工具对图像重新排序,以确保标记的面孔分布良好。通常,您标记的图像越多,蒙版就越好。
Run 5.XSeg) data_src mask edit.bat
建议您在源面孔集中和目标面孔集中标记至少几十个面孔。对于复杂的 Deepfake,您应该标记 100 个或更多面孔。
障碍与排除
可以将面部前方的障碍物排除在面罩区域之外。第一种方法是简单地围绕障碍物的边缘绘制遮罩。第二种方法是在排除模式下在对象周围绘制遮罩。按 W 键或单击 图标切换到排除模式并在对象周围绘制多边形。重要的是要记住,使用排除模式时,还必须在脸部周围绘制包含遮罩。请勿仅使用排除掩模来标记脸部。按 Q 键或使用 图标切换回包含模式。如果可能的话,您还应该在各种框架上标记障碍物。
请记住,您对面具形状所做的任何更改都可能会影响 Deepfake 脸部的训练和合并。您可能需要在训练期间采取额外的步骤,以确保排除的障碍物不会使面部变形。为了获得最佳结果,您应该使用后处理软件处理这些障碍物。
获取和删除
标记脸部后,您可以创建标记图像文件的备份。
Run: 5.XSeg) data_dst mask_fetch.bat
删除原文件?( y / n ) :选择在获取后从faceset中删除Xseg标记的文件。
这会将所有目标 XSeg 标记文件复制到 data_dst/aligned_xseg,并且系统会询问您是否要删除原始文件。
Run: 5.XSeg) data_src mask_fetch.bat
删除原文件?( y / n ) :选择在获取后从faceset中删除Xseg标记的文件。
这会将所有源 XSeg 标记文件复制到 data_src/aligned_xseg,并且系统会询问您是否要删除原始文件。
Optional: 5.XSeg) data_dst mask remove.bat
[安慰: !!!警告:标记的 XSEG 多边形将从框架中删除!!!]
完全删除您创建的所有目标 XSeg 标签。谨慎使用。
Optional: 5.XSeg) data_src mask remove.bat
[安慰: !!!警告:标记的 XSEG 多边形将从框架中删除!!!]
完全删除您创建的所有源 XSeg 标签。谨慎使用。
XSeg模型训练
下一步是训练 XSeg 模型,以便它可以根据您提供的标签创建掩码。
Run: 5.XSeg) train.bat
Which GPU Index to choice?:从列表中选择一个或多个 GPU 索引来运行提取。
建议在选择多个 GPU 索引时使用相同的设备。
面部类型 ( h / mf / f / wf / head ):选择 XSeg 训练的面部类型。
[工具提示:半脸/中脸/全脸/全脸/头部。选择与您的 Deepfake 模型相同的选项。]
Batch_size ( 2 – 16 ):选择 XSeg 训练的批量大小。
[工具提示:较大的批量大小对于神经网络的泛化效果更好,但可能会导致内存不足错误。手动调整您的显卡的此值。]
启用预训练模式 ( y / n ):选择使用 _internal/pretrain_faces 面孔集进行 XSeg 训练。
[控制台:尝试进行第一次迭代。如果出现错误,请减少模型参数。]
[控制台:Windows 10 用户重要通知。您应该设置此设置才能正常工作。https://i.imgur.com/B7cmDCB.jpg]
[注:开发者建议 Windows 10 用户在“系统”>“显示”>“图形设置”中启用硬件加速 GPU 调度。测试系统的开/关性能。]
将面部类型设置为与您的面部设置相同。您可能可以使用最高的批量大小,但是如果训练运行失败,您可以降低批量大小。
命令窗口将显示当前时间、当前迭代(循环)计数、处理当前迭代的时间以及损失值(训练进度)。预览窗口将显示正在训练的图像和掩模,以及随时间变化的损失值的图表。使用空格键循环显示不同的预览,使用“P”键生成当前预览。当训练器尝试将标签与面部集匹配时,您可以看到应用于图像的转换。起初,面具会变形且不稳定。一段时间后,您会发现蒙版呈现出一致的形状并具有明确的边缘。按“S”键保存训练,或按“Enter”键保存并退出。
示例:DeepFaceLab 2.0 XSeg Trainer 预览
示例:DeepFaceLab 2.0 XSeg Trainer 命令窗口
后续运行
如果您再次启动 XSeg 训练器,您将看到以下选项:
Which GPU Index to choice?:从列表中选择一个或多个 GPU 索引来运行提取。
建议在选择多个 GPU 索引时使用相同的设备。
[控制台:在 2 秒内按 Enter 键以覆盖模型设置。]
如果按 Enter 键,您将能够更改这些选项:
重新开始训练?( y / n ):选择重新启动 XSeg 训练。
[工具提示:重置模型权重并从头开始训练。]
Batch_size ( 2 – 16 ):选择 XSeg 训练的批量大小。
[工具提示:较大的批量大小对于神经网络的泛化效果更好,但可能会导致内存不足错误。手动调整您的显卡的此值。]
启用预训练模式 ( y / n ):选择使用 _internal/pretrain_faces 面孔集进行 XSeg 训练。
模型脸型无法更改。
应用 XSeg 遮罩
XSeg 掩模已经过训练,但要使用该掩模,您必须首先将其应用于面部集图像。如果您有多个 GPU,则可以使用它们同时应用源和目标面集蒙版。
Run: 5.XSeg) data_dst trained mask apply.bat
选择哪个 GPU 索引?:从列表中选择单个 GPU 索引以应用 XSeg 掩码。
将经过训练的 XSeg 掩码应用于目标面集。需要经过训练的 XSeg 模型。将经过训练的 XSeg 模型文件放置在工作区/模型中。
Run: 5.XSeg) data_src trained mask apply.bat
选择哪个 GPU 索引?:从列表中选择单个 GPU 索引以应用 XSeg 掩码。
将经过训练的 XSeg 掩模应用于源面集。需要经过训练的 XSeg 模型。将经过训练的 XSeg 模型文件放置在工作区/模型中。
应用 XSeg 掩模后,您可以开始或继续训练 Deepfake 模型。不过我建议您先检查所使用的面膜。打开 XSeg 编辑器,然后按反引号或波浪号键 ( ` ) 来切换所应用的蒙版。使用“A”和“D”键滚动图像并在需要时创建新的面部标签。再次运行 XSeg 训练器,应用掩模,并重复该过程,直到应用的掩模相对干净。
示例:DeepFaceLab 2.0 XSeg 应用掩模
您还可以删除应用的 XSeg 掩码并返回到默认生成的掩码,而不会影响您创建的标签。
Optional: 5.XSeg) data_dst trained mask remove.bat
[安慰: !!!警告:应用的 XSEG 面罩将从框架上移除!!!]
从目标面集中删除经过训练的 XSeg 掩码。Faceset 将保留默认生成的蒙版。这不会影响 XSeg 标签。
Optional: 5.XSeg) data_src trained mask remove.bat
[安慰: !!!警告:应用的 XSEG 面罩将从框架上移除!!!]
从源面集中删除经过训练的 XSeg 掩码。Faceset 将保留默认生成的蒙版。这不会影响 XSeg 标签。
使用 XSeg 掩模进行训练和合并
当您使用 XSeg 掩模训练 Deepfake 模型时,您会注意到面部训练区域符合新的掩模形状。如果您继续使用之前的掩模进行训练,那么模型将需要一些时间来适应。在训练预览窗口中,您将看到包含您应用的 XSeg 蒙版和预测蒙版的预览。预测掩模基于源掩模,将用于训练实际的 Deepfake(预测)面部。随着时间的推移,该预测掩模也将适应 XSeg 掩模。
完成训练后,您还可以在合并过程中使用 XSeg 掩模。在合并期间使用 XSeg 掩码模式需要 /model 文件夹中经过训练的 XSeg 模型。您应该训练模型,直到掩模边缘定义明确并且在各个面集中保持一致。
第6步:Deepfake模型训练
现在是开始训练 Deepfake 模型的时候了。这显然是 Deepfake 过程中最重要的部分,在开始之前您必须做出几个关键决定。决定模型设置的主要因素是:可用的硬件、所需的质量和真实感,以及您可以投入训练的时间。您可能需要尝试多种不同的设置,直到生成一个可以在您的系统上以合理速度运行的模型。
训练开始后,某些设置将无法更改。您需要事先选择模型类型和训练器、模型架构和变体以及编码器/解码器维度。由于有多个培训阶段和步骤,一些选项可以而且应该在整个过程中进行更改。此外,某些 DeepFaceLab 进程可能会覆盖某些选项,例如在模型预训练期间。
请参阅DeepFaceLab 2.0 模型训练设置表以获取其他用户的建议。
模特和教练
有 3 种不同的模型/训练器可供选择:Quick96、SAEHD 和 AMP。
Quick96 | 预定义模型;对于测试很有用。DF-UD,全脸,分辨率:96,批量大小:4 |
SAEHD | 稀疏自动编码器高清。大多数深度伪造品的标准模型和训练器。 |
AMP | 放大器。目标面部表情被放大到源。 |
DeepFaceLab 2.0 模型训练器
架构和变体
有 2 种架构和 4 种变体可供选择。通过 SAEHD,您可以选择任一架构以及 0-4 变体的任意组合。Quick96 明确使用 DF-UD 架构。AMP 明确使用自己的架构。每种模型类型、架构和选项都会对系统性能产生独特的影响,从而影响训练速度和结果的质量。
建筑学 | 描述 |
---|---|
DF | 严格的面部解读,无需变形。最准确、最真实的源数据。当源和目标具有相似形状的面和颜色时效果最佳。面部特征(眼睛、嘴巴、鼻子等)的位置在来源和目的地之间可能有所不同。在正面拍摄时效果更好;配置文件上可能会出现更糟糕的结果。源面集必须充分覆盖目标俯仰、偏航和颜色范围。 |
LIAE | 宽松的面部解释,带有一些变形。更适应目的地面貌。会适应不同形状和颜色的面孔。面部特征的位置可能会稍微改变以适合目标面部。对于极端角度和缺失数据可能有更好的结果。更多地复制目标颜色和照明条件。 |
DeepFaceLab 2.0 模型架构
变体 | 描述 |
---|---|
U | 增加与源脸的相似度。需要更多显存。 |
D | 通过使用相同的计算成本有效地将分辨率加倍来提高性能。需要更长时间的训练并建议使用预训练模型。分辨率必须更改为 32 的倍数(其他变体:16)。 |
T | 增加与源脸的相似度。 |
C | (实验)将激活函数设置为余弦单位(默认值:Leaky ReLu)。 |
DeepFaceLab 2.0 模型架构变体
您将通过键入架构名称后跟连字符和变体选项(例如 df、liae、df-ud、liae-udt)来输入模型架构。
自动编码器和尺寸(尺寸)
自动编码器是一种神经网络架构,能够发现[未标记]数据中的结构,以便开发输入的压缩表示。自动编码器是一种无监督学习技术,我们利用神经网络来完成表示学习任务。
- Jeremy Jordan,自动编码器简介
自动编码器、解码器和编码器值控制模型的神经网络维度,直接影响模型学习人脸的能力。
Dim | 描述 |
---|---|
Auto Encoder Dims | 自动编码器尺寸。影响模型学习面部的整体能力。 |
Inter Dims | 内部尺寸 (AMP)。影响模型学习面部的整体能力。设置等于或高于自动编码器亮度。 |
Encoder Dims | 编码器尺寸。影响编码器(输入)摄取面部的能力。 |
Decoder Dims | 解码器尺寸。影响解码器(输出)重新创建面部的能力。 |
Decoder Mask Dims | 解码器掩模尺寸。影响学习到的蒙版质量;可能会影响训练。 |
DeepFaceLab 2.0 自编码器/编码器/解码器维度描述
所有编码器和解码器的尺寸都应该改变,这意味着如果您提高或降低 AE 尺寸,您也应该提高或降低 E 和 D 尺寸。解码器蒙版变暗决定了学习蒙版的质量,如果您愿意,可以独立更改。Inter Dims 仅用于 AMP 型号。一般来说,更高分辨率的模型需要更高的尺寸。
Batch Size
批量大小是 DeepFaceLab 中最重要的选项之一,因为它决定了一次(每次迭代)可以处理的图像数量。较高的批量大小将带来更好的模型泛化和更快的训练(更少的迭代)。非常低的批量大小 (<=4) 会慢很多,并且模型可能无法概括面部特征、颜色等。非常高的批量大小最终可能会导致性能回报下降,并且创建者之间存在争议“最佳批量大小”。建议您实现的批量大小至少为 4,最好在 8-16 范围内。
批量大小可以随时更改,并且有各种模型选项会使用或多或少的系统资源,迫使您更改批量大小。此外,如果您选择使用预训练模型,您可能需要更改批量大小才能在您的硬件上工作。您可以下载在更强大的系统上生成的预训练模型,降低批量大小,并使用您自己的图像进行训练。
模型训练设置
请参阅DeepFaceLab 2.0 模型训练设置表以获取其他用户的建议。
所有模型训练设置和选项 (SAEHD)
训练设置 | 描述 |
---|---|
每 N 小时 (0 – 24) 自动备份一次 | 设置自动备份间隔。[工具提示:每 N 小时自动备份一次模型文件并预览一次。最新备份位于 model/<>_autobackups/01] |
写入预览历史记录 ( y / n ) | 选择写入预览图像历史记录(每 30 次迭代)。[工具提示:预览历史记录将写入 _history 文件夹。] |
选择预览历史记录的图像 ( y / n ) | (条件:写入预览历史记录)训练开始时,系统将提示您选择用于历史记录生成的预览图像。 |
目标迭代 | 将目标迭代设置为结束并保存训练。设置为 0 以实现不间断训练。 |
随机翻转 SRC 面 ( y / n ) | [工具提示:随机水平翻转 SRC 面集。覆盖更多角度,但脸部可能看起来不太自然。] |
随机翻转 DST 面 ( y / n ) | [工具提示:随机水平翻转 DST 面集。如果未启用 src 随机翻转,则可以更好地泛化 src->dst。] |
批量大小 | [工具提示:较大的批量大小对于神经网络的泛化效果更好,但可能会导致内存不足错误。 |
手动调整您的显卡的此值。] | |
分辨率 (64 – 640) | (已修复)[工具提示:更高的分辨率需要更多的 VRAM 和训练时间。对于 -d archi,值将调整为 16 和 32 的倍数。] |
脸型 ( h / mf / f / wf / head ) | (已修复)[工具提示:半脸/中脸/全脸/全脸/头部。半脸的分辨率更好,但覆盖的脸颊面积较小。中脸比半脸宽 30%。“全脸”覆盖脸部的整个区域,包括前额。“head”覆盖整个头部,但需要 XSeg 来表示 src 和 dst 面集。] |
AE架构 | (已修复)[工具提示:“df”保留更多身份保留的面孔。“liae”可以修复过于不同的脸型。’-u’ 增加了脸部的相似度。’-d’(实验性)使用相同的计算成本将分辨率加倍。示例:df、liae、df-d、df-ud、liae-ud,…] |
自动编码器尺寸 (32 – 1024) | (已修复)[工具提示:所有面部信息将打包到 AE 暗淡中。如果 AE 变暗量不够,则无法识别闭眼等情况。暗度越多越好,但需要更多 VRAM。您可以微调模型大小以适合您的 GPU。] |
编码器尺寸 (16 – 256) | (已修复)[工具提示:更多暗淡有助于识别更多面部特征并获得更清晰的结果,但需要更多 VRAM。您可以微调模型大小以适合您的 GPU。] |
解码器尺寸 (16 – 256) | (已修复)[工具提示:更多暗淡有助于识别更多面部特征并获得更清晰的结果,但需要更多 VRAM。您可以微调模型大小以适合您的 GPU。] |
解码器掩码尺寸 (16 – 256) | (已修复)[工具提示:典型掩模尺寸 = 解码器尺寸 / 3。如果您手动从 dst 掩模中剪切掉障碍物,则可以增加此参数以获得更好的质量。] |
蒙面训练 ( y / n ) (条件:面部类型 wf 或 head)
[工具提示:此选项仅适用于“whole_face”或“head”类型。
Masked 训练将训练区域剪辑为 full_face mask 或 XSeg mask,因此网络将正确训练人脸。]
眼睛和嘴巴优先 ( y / n ) [工具提示:帮助解决训练过程中的眼睛问题,例如“异形眼”和错误的眼睛方向。
也使牙齿的细节更高。]
样本的均匀偏航分布 ( y / n ) [工具提示:有助于修复由于面部集中的侧面数量较少而导致的模糊侧面。]
模糊蒙版 ( y / n ) [工具提示:模糊训练样本所应用面罩之外的附近区域。
结果是脸部附近的背景变得平滑,并且在交换的脸部上不太明显。
需要 src 和 dst 面集中的精确 xseg 掩码。]
将模型和优化器放置在 GPU 上 ( y / n ) [工具提示:当您在一个 GPU 上训练时,默认情况下模型和优化器权重会放置在 GPU 上以加速该过程。
您可以将它们放置在CPU上以释放额外的VRAM,从而设置更大的尺寸。]
使用 AdaBelief 优化器?(是/否) [工具提示:使用 AdaBelief 优化器。
它需要更多的VRAM,但模型的准确性和泛化性更高。]
使用学习率 dropout ( n / y / cpu ) [工具提示:当脸部经过足够的训练后,您可以启用此选项以获得额外的清晰度并减少子像素抖动,从而减少迭代次数。
在禁用随机扭曲之前和 GAN 之前启用它。
n——禁用。
y – 启用
cpu – 在 CPU 上启用。这允许不使用额外的 VRAM,从而牺牲 20% 的迭代时间。]
启用样本的随机扭曲 ( y / n ) [工具提示:需要随机扭曲来概括两张脸的面部表情。
当脸部经过足够的训练后,您可以禁用它以获得额外的清晰度并减少子像素抖动,从而减少迭代次数。]
随机色调/饱和度/光强度 ( 0.0 – 0.3 ) [工具提示:仅在神经网络的输入处将随机色调/饱和度/光强度应用于 src 脸部集。
稳定面部交换期间的颜色扰动。
通过选择 src 面集中最接近的一个来降低颜色传输的质量。
因此 src 面集必须足够多样化。
典型精细值为0.05]
GAN 功率(0.0 – 5.0) [工具提示:强制神经网络学习面部的小细节。
仅当面部经过 lr_dropout(on) 和 random_warp(off) 足够训练时才启用它,并且不要禁用。
值越高,出现伪影的几率就越高。典型精细值为0.1]
GAN 补丁大小 (3 – 640) (条件:GAN 功率)
[工具提示:patch 大小越大,质量越高,需要的 VRAM 就越多。
即使在最低设置下,您也可以获得更清晰的边缘。
典型的精细值为分辨率/8。]
GAN 尺寸 (4 – 512) (条件:GAN 功率)
[工具提示:GAN 网络的维度。
尺寸越高,需要的 VRAM 就越多。
即使在最低设置下,您也可以获得更清晰的边缘。
典型的精细值为 16。]
‘真面目’的力量。( 0.0000 – 1.0 ) (有条件:DF 架构)
[工具提示:实验选项。
判别结果面更像 src 面。
更高的价值——更强的歧视。
典型值为 0.01。
比较 – https://i.imgur.com/czScS9q.png]
面部风格功率 (0.0 – 100.0) [工具提示:学习预测人脸的颜色与蒙版内的 dst 相同。
如果您想将此选项与“whole_face”一起使用,则必须使用经过 XSeg 训练的掩模。
警告:仅在 10k 迭代后启用它,此时预测的脸部足够清晰,可以开始学习风格。
从 0.001 值开始并检查历史更改。
启用此选项会增加模型崩溃的可能性。]
背景样式功率 (0.0 – 100.0) [工具提示:学习预测人脸的掩模外部区域与 dst 相同。
如果您想将此选项与“whole_face”一起使用,则必须使用经过 XSeg 训练的掩模。
对于 Whole_face,您必须使用经过 XSeg 训练的掩模。
这可以使脸部更像 dst。启用此选项会增加模型崩溃的可能性。
典型值为2.0]
src 面集的颜色传输(none / rct / lct / mkl / idt / sot ) [工具提示:将 src 样本的颜色分布更改为接近 dst 样本。
尝试所有模式以找到最好的。]
启用渐变裁剪 ( y / n ) [工具提示:梯度裁剪减少了模型崩溃的机会,牺牲了训练速度。]
启用预训练模式 ( y / n ) [工具提示:用大量不同的面孔预训练模型。
之后,模型可以用来更快地训练假货。
强制 random_warp=N、random_flips=Y、gan_power=0.0、lr_dropout=N、styles=0.0、uniform_yaw=Y]
DeepFaceLab 2.0 模型训练设置 (SAEHD)
预训练和使用预训练模型
您可以预训练模型以学习各种面孔的面部特征和颜色。然后,这个预训练的模型可用于启动具有相同核心模型设置的任何深度伪造。DeepFaceLab 包括Flickr Faces HQ (FFHQ)预训练脸部集,其中通用的预训练整个面罩已应用于对齐图像。旧版本的 DFL 使用CelebA 数据集。您可以在标记为 _internal/pretrain_faces 的文件夹中找到当前图像作为 faceset.pak 文件。通过将文件复制到 data_src/aligned 并运行文件 4.2) data_src util Faceset unpack.bat 查看faceset。您可以通过运行文件 4.2) data_src utilfaceset pack.bat 并将结果faceset.pak 文件移动到 _internal/pretrain_faces 文件夹中,从 data_src/aligned 文件夹中的图像创建自己的预训练faceset。
- 点赞
- 收藏
- 关注作者
评论(0)