[指南]-DeepFaceLab 2.0说明和教程(推荐)

DeepFaceLab 2.0指南/教程

此教程机翻自:https://mrdeepfakes.com/forums/thread-guide-deepfacelab-2-0-explained-and-tutorials-recommended

什么是DeepFaceLab 2.0?

 

DeepFaceLab 2.0是利用机器学习来交换视频中人脸的工具/应用程序。

 

1.0和2.0有什么区别?DFL 2.0有什么新功能

 

DFL 2.0的核心与1.0非常相似,但是对它进行了重写和优化,使其运行速度更快,并且以兼容性为代价提供更好的质量。

因此,不再支持AMD卡,并且新型号(基于SAE / SAEHD和Quick96)与以前的版本不兼容。但是,在更高版本的DFL 1.0中提取的所有数据集仍可以在2.0中使用。

 

2.0的主要功能和更改:

  • 适用于所有Windows版本,零依赖的独立应用程序。

  • 包括2种型号:SAEHD(4种体系结构)和Quick 96。

  • 支持多GPU训练。

  • 更好的优化(与DFL 1.0相比),提高了脸部(数据集)提取,训练和合并期间的性能

  • Faceset Enhancer工具-用于放大/增强源Faceset(数据集)的细节。

  • 新的GAN Power选项-生成对抗网络培训,可增强面部细节。

  • 新的TrueFace Power选项-可变的面部识别功能,可以更好地与源相似。

  • 能够选择用于每个步骤(提取,训练,合并)的GPU。

  • 能够在命令行窗口中快速重命名,删除和创建新模型。

  • 现在,合并过程还可以输出遮罩文件,以便在外部视频编辑软件中进行后期处理,并可以选择将其渲染为黑白视频。

  • 嵌入在数据集/面容图像文件中的人脸界标/位置数据,并具有提取嵌入信息以进行数据集修改的选项。

  • 培训预览窗口。

  • 交互式转换器。

  • 源和目标(data_src / dst)数据集的Debug(面部界标预览)选项。

  • 使用S3FD进行Facese(数据集)提取和/或手动提取。

  • 以16为增量的任何分辨率的训练。可以以高达256的分辨率训练模型。

DeepFaceLab 2.0与NVIDIA GPU和CPU兼容,如果您想在AMD GPU上进行培训,则不再有AMD支持-DFL 1.0可以做到,但不再受支持/更新。

DFL 2.0需要Nvidia GPU,它们至少支持CUDA Compute Compability 3.0版

 

对于GOOGLE驱动器的注意事项:如果您获得有关超出下载配额的信息,请右键单击->添加到我的驱动器,然后在驱动器中制作一个副本(右键单击->复制)并下载该新副本。

 

如果您没有NVIDIA GPU,并且您的CPU不允许您在任何合理的时间进行训练,或者您不想将DFL 1.0与AMD GPU配合使用,则可以考虑试用Google Cloud Computing服务Google Colab和我们的DFL实施

 

-------------------------------------------------- -------------------------------------------------- --------------------------------------------------

 

所有DFL功能的说明:


DeepFaceLab 2.0包含用于提取,训练和合并(以前称为convert)的.bat文件,这些文件是创建Deepfake的3个主要步骤,它们与两个子文件夹一起位于主文件夹中:

  • _internal(这是DFL工作所需的所有文件所在的位置)

  • 工作区(您可以在其中放置模型,视频,面集(数据集)和最终视频输出

-------------------------------------------------- -------------------------------------------------- --------------------------------------------------


在进入主要指南部分之前,这里是一些术语(文件夹用“引号”书写)

Faceset(数据集) -是从帧(从视频中提取)或照片中提取(或与地标对齐)的一组图像。

有两个数据集在使用DFL 2.0和它们data_dst和data_src:

- data_dst是含有从目标(目的地)视频data_dst.mp4萃取对齐面部图像(256×256)的数据集,它们含有约面的形状信息,在提取/对齐过程中,它们的特征(眼睛,嘴巴,鼻子,眉毛)及其在图像上的位置在“ data_dst”文件夹中创建了2个文件夹:

“对齐”  包含大小为256x256的面部图像(带有对齐数据)

“ aligned_debug”包含原始帧,这些原始帧的地标重叠在表面上,用于识别正确/不正确对齐的面部(并且不参与训练)或合并过程)。
清理完数据集(误报,不正确对齐的面并修复它们)后,可以将其删除以节省空间。

-data_src是一个数据集,包含从data_src.mp4文件(可以是采访,电影,预告片等)或您的来源的图像中提取的面部图像-基本上,这些是我们要放入的人的面部提取图像对方的身体/头部(在目标/目标视频上)。
默认情况下,提取时此文件夹仅包含“ aligned”文件夹,但也可以生成“ aligned_debug”文件夹(提取时可以选择)。

但是,在提取面部之前,您必须先从中提取面部:

-对于data_dst,您应该准备目标(目标)视频并将其命名为data_dst.mp4-
对于data_src,  您应该准备源视频(如上述示例)并将其命名为data_src.mp4或准备jpg或png格式的图像。
从视频中提取帧的过程也称为提取,因此在本指南的其余部分中,我将这两个过程称为“面部提取/对齐”和“帧提取”。

如开头提到的,所有这些数据都存储在“ workspace”文件夹中,这是两个data_src / dst.mp4文件,两个“ data_src / dst”文件夹所在的位置(具有提取的帧和“ aligned” /“ aligned_debug”文件夹提取/对齐的面)和用于存储模型文件的“模型”文件夹。
 

-------------------------------------------------- -------------------------------------------------- --------------------------------------------------


选项根据其功能分组。
 

1.工作区清理/删除:


1)清除工作区 -不言自明,它将删除“工作区”文件夹中的所有数据,可以随时删除此.bat文件,以防止意外删除要存储在“工作区”文件夹中的重要文件
 

2.从源视频(data_src.mp4)中提取帧:


2)从视频data_src中提取图像 -从data_src.mp4视频文件中提取帧,并将其放入自动创建的“ data_src”文件夹中,可用选项:-FPS-
跳过视频默认帧率,输入其他帧率的数值(例如输入5将仅以每秒5帧的速度呈现视频,这意味着将提取较少的帧)
-JPG / PNG-选择提取的帧的格式,jpg较小,通常质量足够好,因此建议使用png体积大,质量不高,但可以选择。
 

3.视频剪辑(可选):


3)剪切视频(将视频拖放到我身上) -通过将视频拖放到该.bat文件中,可以快速将视频剪切为所需的长度。如果您没有视频编辑软件并且想快速剪切视频,则很有用,可以选择以下选项:
从时间-视频开始
-结束时间-视频结束-
音频轨道-保留默认
比特率-让我们更改视频的比特率(质量)视频-也最好保留默认设置
 

3.从目标视频(data_dst.mp4)中提取帧:


3)从视频data_dst FULL FPS中提取图像 -从data_dst.mp4视频文件中提取帧,并将其放入自动创建的“ data_dst”文件夹中,可用选项:-JPG / PNG-
与2)中相同。
 

4. Data_src面向提取/对齐:


准备源数据集的第一步是对齐地标,并从位于“ data_src”文件夹内的提取帧中生成256x256面部图像。

有2种方法:
4)data_src提取面S3FD- 使用S3FD算法自动提取。
4)data_src提取面为MANUAL-   手动提取。
可用的选项包括:
-选择用于面部提取/对齐过程的GPU(或CPU)。
-选择是否生成“ aligned_debug”文件夹。
 

4. Data_src清理:


完成此操作后,下一步是清理假阳性/未正确对齐的面的源面集/数据集,有关详细信息,请检查此线程:不允许查看链接。注册或登录查看。

4.1)data_src视图对齐结果 -打开外部应用程序,该应用程序可以快速浏览“ data_src / aligned”文件夹的内容,以防误报和错误对齐的源面孔以及其他人的面孔,因此您可以删除它们。

4.2)data_src排序 -包含各种排序算法来帮助您查找不需要的面孔,这些是可用的选项:

[0]模糊
[1]面孔偏航方向
[2]面孔俯仰方向
[3]直方图相似度
[4]直方图差异
[5]亮度
[6]色相
[7]黑色像素数量
[8]原始文件名
[9]图像中的一张脸
[10]绝对像素差
[11]最佳脸

4.2)data_src util添加界标debug图片 -让你提取人脸后产生“aligned_debug”文件夹(如果你想拥有它,但忘记或没有选择在第一时间正确的选择。

data_src UTIL faceset提高4.2) -使用特殊的机器学习算法,以高档/增强数据集中的面孔外观,如果数据集有点模糊或者您想使锐利的图像具有更多细节/纹理,则很有用。

4.2)data_src util faceset元数据还原和 4.2)data_src util面集元数据保存 -让您保存并稍后从源面集/数据集中恢复嵌入的对齐数据,以便在提取某些脸部图像后可以对其进行编辑(例如,锐化它们,编辑眼镜,皮肤瑕疵,颜色校正)不会丢失对齐数据,因此您无需再次重新提取它们。

如果不按此步骤编辑“已对齐”文件夹中的任何图像,则将不会再使用对齐数据和这些图片进行培训,因此,在保持名称相同的情况下,不允许翻转/旋转,仅进行简单的编辑,例如。

4.2)data_src util faceset pack和  4.2)data_src util faceset pack-将 “ aligned”文件夹中的所有面孔打包/解压缩到一个文件中。

4.2.other)data_src util恢复原始文件名 -将面部图像的名称恢复为原始顺序/文件名(排序后)。
 

5.准备Data_dst:


这里的步骤与源数据集几乎相同,除了少数例外,让我们从面部提取/对齐过程开始。
我们仍然只有手动和S3FD提取方法,但也有一种结合了这两种方法,并且有一种特殊的手动提取模式,始终会生成“ aligned_debug”文件夹:

5)data_dst提取面为MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG-此方法用于手动对齐/提取从“ aligned_debug”文件夹中删除的帧的面孔(有关下一步的更多内容-Data_dst清理)
5)data_dst提取面孔MANUAL-手动提取。
5)data_dst提取人脸S3FD +手动修复 -自动提取+对于算法无法正确检测人脸的帧进行手动提取。
5)data_dst提取面为S3FD-使用S3FD算法自动提取。
可用的选项包括:
-选择用于面部提取/对齐过程的GPU(或CPU)。
 

5. Data_dst清理:


对齐data_dst人脸之后,我们必须清理它们,类似于我们使用源人脸集/数据集进行处理的方式一样,我们将选择一些排序方法,由于它们的工作原理与src完全相同,因此我将不作解释。
但是,清理目标数据集与源数据集有所不同,因为我们要针对存在它们的所有帧对齐所有面。我们可以使用以下几种工具:

5.1)data_dst查看对齐结果 -让您使用外部应用程序(内置于DFL中)查看“ aligned”文件夹的内容,该应用程序比默认的Windows资源管理器提供更快的缩略图生成
5.1)data_dst viewaligned_debug结果-让我们快速浏览“ aligned_debug”文件夹的内容,以查找和删除目标人脸具有不正确对齐的地标或根本没有放置地标的所有帧(这意味着根本没有检测到人脸)。通常,您可以使用它来查找是否已正确提取并对齐了所有面部(如果某些帧上的界标未与面部或眼睛/鼻子/嘴巴/眉毛的形状对齐或丢失,则应将其删除,以便我们稍后可以手动重新提取/对齐它们)。
5.2)data_dst排序 -与源faceset / dataset相同,此工具可让您对“ data_dst / aligned”文件夹中所有对齐的面孔进行排序,以便更轻松地查找错误对齐的面孔,假阳性和其他人的面孔
5.2)data_dst实用程序面孔包 和 5.2)data_dst实用程序面孔包解包 -与源代码相同,我们可以将整个数据集快速打包到一个文件中。5.2)data_dst util恢复原始文件名 -与源相同,排序后恢复所有对齐面的原始名称/顺序。5.3)data_dst遮罩编辑器  - 允许您手动编辑data_dst对齐的脸部的遮罩(因此您可以在合并/转换后排除脸部的某些部分以使其不显示-脸部上没有遮罩的部分,原始脸部/框架将可见)-可选功能。 此外,遮罩编辑器  还有一个称为“默认眉毛扩展”修饰符的选项  -  



它使您可以自动在眉毛上方扩展遮罩,而无需手动编辑每个脸部的遮罩,但是这可能会在侧面轮廓上引起问题,该侧面扩展也会覆盖背景(建议仅用于正面角度和中等角度)。
 

例:

 

 

编辑的蒙版训练+合并(用dst蒙版转换)的结果:

 

 

这是一个非常繁琐且耗时的过程,相反,如果您想消除Deepfake中的障碍,则可以在合并/转换期间尝试使用FANseg蒙版。相反,您更有可能在合并过程中仅使用FANseg转换。

 

在转换器(或我们推荐的交互式转换器)中,您可以选择各种遮罩模式,例如fan-prd,fan-dst,fan-prd * fan-dst,learned * fan-prd * fan-dst),这些模式可用于自动遮盖脸部的障碍物(例如眼镜,遮盖/阻挡data_dst脸部的手)。

 

这是FANseg模式遮盖手的示例:

 


返回到清理,现在您已经知道这里的工具是清理data_dst数据集的完整工作流的示例。

首先使用5.2)data_dst sort 对人脸进行  排序,然后选择直方图对人脸进行排序,这通常会按颜色/结构的相似性对人脸进行排序,因此很可能将相似的人归为一类,并分离出可能包含旋转/放大/缩小人脸的任何图像,以及其他人的误报和面孔,并将其置于列表的开头/结尾。

您首先应删除所有误报和不需要的面孔。现在,您可以删除目标的所有未正确对齐的面并移至下一步,也可以将其切出并放置在单独的文件夹中,原因是我们接下来需要使用  5.1)data_dst查看aligned_debug结果 并找到所有缺少地标或没有正确放置在目标人的脸上的框架,通过将那些未正确对齐的面孔放在一边,我们可以对它们进行少量处理,只需将它们复制到“ aligned_debug”文件夹中,替换掉框架,尽管它们仍在Windows资源管理器中高亮显示,请单击“删除”以将其删除,但仍有一些我们必须手动定位(例如根本没有检测到的所有面孔),但是这样做可以节省您会花费很多时间,特别是如果长剪辑中有很多未正确对齐的脸部,这些脸部通常会位于正确对齐的脸部中间的某个位置,并且可能很难注意到它们。如果您想知道如何做,请参阅我的常见问题解答中的提示#11:不允许您查看链接。或登录查看。

-通过任何方法(直方图,模糊,偏航等)对data_dst进行排序以查找不良帧
-然后将其复制到“ 新文件夹”中
-将原始“ aligned” 重命名   为其他名称(例如  “ aligned_1” ),以便您可以重命名“ 新文件夹”  的坏面孔要  “对齐”
-然后使用5.3.other)data_dst util恢复原始文件名,
-完成后转到“ 对齐”  文件夹,在该  文件夹中,您将找到所有带有原始名称的坏面孔和一些像_0 / _1之类的前缀
-右键单击时按住shift键,打开powershell并使用以下命令:
get-childitem * .jpg | foreach {rename-item $ _ $ _。name.replace(“ _ 0”,“”)}

-如果您有更多带有不同前缀的文件,只需通过将_0更改为您可能具有的任何其他前缀_1来再次运行命令:
get-childitem * .jpg | foreach {rename-item $ _ $ _。name.replace(“ _ 1”,“”)}

-这样,您可以将那些对齐不良的帧复制到  “ aligned_debug”中,然后单击“替换” ,然后在删除时删除它们高亮显示(如果您碰巧有很多错误的对齐方式,则很有用)
-最后,删除错误的框架文件夹“ aligned”,然后将“ aligned1”重命名为原始名称。

无论您是使用我的技术还是手动找到它们,现在都应该关闭  。 恢复脸部图像的原始名称/顺序,然后运行  5)data_dst提取脸部手动重新提取DELETED ALIGNED_DEBUG以提取刚刚从“ aligned_debug”中删除的  脸部。完成之后,您就清理了data_dst数据集,正确提取了所有面孔(包括部分可见的面孔)并准备进行训练。FAQ

中提供了更多详细信息(您一定要阅读FAQ,其中包含许多常见问题,错误修复,技巧等):
不允许您查看链接。注册或登录查看。

并且在该线程中,有一些有关如何创建源数据集,保留哪些内容,删除哪些内容以及通常如何清理源数据集(与目标/目标数据集几乎相同)以及如何/在何处共享它们的详细信息与其他用户:不允许您查看链接。注册或登录查看。
 

6.培训:

 

当前有2种模型可供选择以进行培训:


SAEHD(6GB +): 高清晰度样式的自动编码器模型-高端模型,用于具有至少6GB VRAM的高端GPU。

特征:
-以16的增量以高达256x256像素的增量运行
-半面,半面和全脸模式
-4种架构:DF,LIAE,DFHD,LIAEHD-
可调批量大小
-可调型号自动编码器,编码器,解码器和蒙版解码器尺寸
-可调自动备份
-预览历史记录
-目标迭代
-随机面部偏航翻转设置
-蒙版学习
-GPU优化器
-学习辍学
-随机扭曲
-可调GAN训练能力设置
-可调True Face训练能力设置
-可调的面部和背景样式电源设置
-颜色转移
-渐变剪切
-预训练模式

Quick96(2-4GB): 从SAE模型派生的简单模型-专门用于具有2-4GB VRAM的低端GPU。

特征:
-以96x96像素分辨率运行
-全脸模式
-批处理大小4

这两种模型都可以产生良好的伪造,但显然SAEHD是首选且功能更强大的模型。
如果您想测试您的想法,Quick96并不是一个坏主意,但是您当然仍然可以在相同的设置下运行SAEHD,甚至更低。
如果要查看其他人可以使用各种图形卡实现的功能,请查看此电子表格,以供用户共享其模型设置:
您无权查看链接。注册或登录查看。

在检查了其他人的设置并确定是接受快速训练还是要等待并运行更重的模型之后,请使用以下任一方法启动该模型:
 

6)火车SAEHD

6)训练Quick96

 

由于Quick96不可调节,因此您会看到命令窗口弹出并仅询问一个问题-CPU或GPU(如果您有更多问题,它将选择其中之一或同时进行训练)。

 

但是,SAEHD将为您提供更多调整选项,您已经知道这些功能是什么,现在这里对它们进行了更详细的说明,以便在培训开始时将其呈现给用户:

 

每N小时  自动备份一次(0..24?:help):自我说明-让我们启用每N小时自动备份模型的功能。保留为0(默认值)将禁用自动备份。默认值为0(禁用)。

 

目标迭代:达到一定数量的迭代后将停止训练,例如,如果您希望将模型训练为仅进行100.000次迭代,则应输入值100000。将其保留为0会使它运行,直到您手动将其停止为止。默认值为0(禁用)。

 

随机翻转面孔(y / n?:help):在您没有要交换到目标的人脸(源数据集)的所有必要角度的情况下,该选项很有用。例如,如果您有一个目标/目标视频,人物直视向右,而您的源只具有直视向左的脸,则应启用此功能,但请记住,因为没有人脸对称,结果看起来可能不太像src以及来源面部的特征(例如美容标记,疤痕,痣等)都会被镜像。默认值为n(禁用)。

 

Batch_size(?:help):批处理大小设置会影响每次迭代中要比较的面数。最低值为2,并且您可以将GPU允许的最大值提高到最小,这受VRAM的影响。您的模型分辨率,尺寸越高,启用的功能越多,将需要更多的VRAM,从而可以实现更小的批量。

如何猜测要使用的批量大小?您可以使用试错法,也可以通过查看DFL 2.0电子表格来查看其他人在他们的GPU上可以实现的目标,以帮助自己:不允许查看链接。注册或登录查看。

 

分辨率(64-256?:help):  在此处设置模型分辨率,请记住,在训练过程中不能更改此选项。它会影响换脸的分辨率,模型分辨率越高-学习的脸部越详细,但训练的负担也将越来越长。分辨率可以从64x64到256x256以16为增量增加。

 

脸部类型(h / mf / f?:help):  此选项可让您设置要训练的脸部区域,共有3个选项-半脸,半脸和全脸。
全脸训练整个脸部,半脸仅训练从嘴到眉毛,但在某些情况下,可以剪裁脸部的顶部或底部,而半脸中部提供的训练面积比半脸大30%,同时还可以防止大多数不良剪接避免发生(但仍然可能发生)。建议使用全脸以获得最大的灵活性,但是半脸和中半脸提供更好的细节,因为在相同的模型分辨率下,更多像素被用于解析脸部细节(因为它更大/更大了)。

 

 

AE体系结构(dfhd / liaehd / df / liae?:help):通过  该选项,您可以在DF和LIAE两种主要学习体系结构及其高清版本之间进行选择,后者以性能为代价提供更高的质量。

 

DFL 2.0 SAEHD中的DF和LIAE体系结构基于DFL 1.0 SAE模型中DF和LIAE模型的实现。

而   DFL 2.0 SAEHD中的DFHD和LIAEHD体系结构基于DFL 1.0 SAEHD模型中DF和LIAE模型的实现。

HD和非HD版本的体系结构在本质上的区别是HD模型变体中的层数增加。

 

DF:此模型体系结构提供了更直接的人脸交换,不使人脸变形,但要求源和目标/目标人脸/头部具有相似的人脸形状。

该模型在正面拍摄时效果最好,并且要求您的源数据集具有所有所需的角度,在侧面轮廓上可能会产生较差的结果。

 

LIAE:当涉及到源和目标/目标之间的面部/头部形状相似性时,此模型体系结构没有那么严格,但是该模型确实使面部变形,因此建议您具有实际的面部特征(眼睛,鼻子,嘴巴,整体面部结构) )在来源与目标/目标之间相似。该模型与正面镜头的来源更差,但可以更好地处理侧面轮廓。

 

下面是DFHD,DF,LIAEHD和LIAE模型架构之间的比较,这些架构使用相同的硬件,相同的分辨率和使用相同的源和目标数据集的其他参数进行了训练。
 

 

感谢@ kkdlux进行比较(上排:ORIGINAL / LIAEHD / DFHD,下排:LIAE / DF):您不允许查看链接。注册或登录查看。

 

接下来的4个选项控制模型的神经网络维度会影响模型的学习能力,修改这些模型会对学习的面孔的性能和质量产生重大影响,因此应将其保留为默认值。


 自动编码器尺寸(32-1024?:help):自动编码器尺寸设置会影响模型学习面孔的整体能力。
编码器尺寸(16-256?:help): 编码器尺寸设置,影响模型学习面孔的一般结构的能力。
解码器尺寸(16-256?:help):  解码器尺寸设置,影响模型学习细节的能力。
解码器面罩尺寸(16-256:?帮助): 面膜解码器的尺寸设置,会影响学习面具的质量时,培训与 学习面具 启用。不影响培训质量。

更改每个设置时的性能变化( 解码器掩码尺寸)可能会对性能产生不同的影响,如果没有广泛的培训,就无法衡量每个对性能和质量的影响。DFL创建者@ iperov将其设置为某些默认值,这些默认值应提供最佳结果并在训练速度和质量之间取得良好的折衷。

同样,在更改一个参数时,也应更改其他参数,以保持它们之间的关系相似(例如,如果将“编码器”和“解码器”的尺寸从64降低到48,则也可以将“自动编码器”的尺寸从256降低到192-240)。值应更改2倍。可以随意尝试各种设置,但是如果要获得更好的质量,最好是提高分辨率而不是更改这些设置。如果要稳定运行,请保持默认状态。

学习掩码(y / n?:help): 启用此设置将使您的模型开始学习面的形状,以生成可在合并期间使用的蒙版。蒙版是Deepfake流程中必不可少的部分,该流程使合并可以将新学习/不诚实的面孔放在原始镜头上。默认情况下,合并使用在data_dst的面部提取/对齐过程中生成的dst蒙版。如果您未启用此功能并在转换器中选择学习的掩码,则在合并过程中仍将使用dst掩码。学习的遮罩通常比默认的dst遮罩更好,但是使用此功能会对性能和VRAM使用产生重大影响,因此最好首先对模型进行一定程度的训练或完全训练模型,并仅在短时间内启用该遮罩(5-6k次迭代)在训练结束时或某处(可以多次启用和禁用)。学习过的面膜对脸部质量没有影响,仅对面膜有影响。学习的遮罩可以单独使用,也可以与FANseg遮罩模式结合使用。默认值为n(禁用)。

眼睛优先(y / n?:help):  试图通过强制神经网络训练优先级更高的眼睛来解决眼睛训练的问题,尤其是在诸如DFHD和LIAEHD的高清架构变体上。
请记住,它不能保证正确的眼睛方向,它只会影响眼睛的细节和周围区域。示例(之前和之后):



将模型和优化器放在GPU上(y / n?:help): 启用GPU优化器会将所有负载都放在GPU上,这将大大提高性能(迭代时间),但会导致批处理大小降低,禁用此功能(False)会将CPU的某些工作(优化器)卸载到CPU,从而减少了GPU的负载(和VRAM使用率) ),以达到训练速度(更长的迭代时间)为代价,使批生产规模略大或运行更多征税模型(更高的分辨率或模型尺寸)。
基本上,如果您遇到OOM(内存不足)错误,则应禁用此功能,这样一来,一些工作将被转移到CPU上,而某些数据将从GPU VRAM转移到系统RAM中,您将能够在没有OOM错误和/或没有OOM错误的情况下运行模型以更高的批次大小,但以降低性能为代价。默认值为y(启用)。

使用学习率下降(y / n?:help): 仅在训练结束时才应启用此功能,而如果随机采样或  扭曲脸部等功能,则永远不应启用此功能。一旦对模型进行了很好的训练并使其变得清晰,您就可以禁用  样本的随机扭曲,这将使您在没有迭代的情况下,以较少的迭代获得更多的细节和清晰度。谨慎使用,在完全训练模型之前启用可能会导致它永远无法改善,除非您禁用它,并在禁用此功能的情况下继续进行训练。默认值为n(禁用)。

启用样本的随机扭曲(y / n?:help): 样本随机扭曲是一项功能,过去一直在DFL 1.0的旧SAE模型中启用,但现在是可选功能,用于对模型进行泛化,以便它可以正确学习模型的所有基本形状,面部特征和结构脸部,表情等,但是只要启用该模型,可能就很难学习到精细的细节-因此,建议您在脸部仍在改善的情况下保持启用此功能(通过查看减少的损耗值和预览窗口) ),一旦您对脸部进行了充分的训练,并且想要获得更多细节,就应该禁用它,并在数十万次迭代中开始看到更多细节,并且禁用此功能后,您可以继续进行训练。默认值为y(启用)。

GAN power(0.0 .. 10.0?:help): GAN代表Generative Adversarial Network(生成对抗网络),在DFL 2.0中,它是对数据集进行培训以获取更详细/更清晰面孔的一种附加方式。此选项的调整范围是0.0到10.0,只有在模型或多或少地完成训练后(禁用样本的随机扭曲之后),才应启用该选项  。建议从低值开始,然后一直到最大值以测试该功能是否提供了良好的结果,因为该功能在很大程度上取决于是否拥有良好且干净的源数据集。如果结果不好,则需要禁用它并启用随机抽样扭曲一段时间,以便模型可以恢复。在启用此功能之前,请考虑进行备份。默认值为0.0(禁用)。

这是启用GAN训练前后的示例:

之前:
不允许查看链接。注册或登录查看。
之后:

 


如果很难注意到第一个示例中的差异,请在新窗口中打开它。

“真面目”的力量。(0.0000 .. 1.0?:help):  使用可变功率设置进行真人脸训练,让您将模型鉴别器设置为更高或更低的值,这样做是为了尝试使最终人脸看起来更像src,与 GAN一样 仅当禁用了随机扭曲并且已或多或少地对模型进行了充分训练后,才应启用此功能,在这里,您还应该从一个低值开始,并确保源数据集干净且正确对齐,如果结果不好,则需要禁用并启用一段时间的样本随机扭曲,以便模型可以恢复。在启用此功能之前,请考虑进行备份。默认值为0.0(禁用)。

这是一个示例:



面部样式功效(0.0..100.0?:help)和  背景样式功效(0.0..100.0?:help): 此变量设置控制图像的面部或背景部分的样式转移,用于将目标/目标面孔(data_dst)的样式转移到最终学习的面孔,这样可以提高质量和合并后最终结果的外观但是较高的值可能导致学习的面孔看起来更像data_dst,而不是data_src。

建议使用最大为10的值,并在训练过程中将其减小到1甚至0.1。
此功能会对性能产生重大影响,使用它会增加迭代时间,并且可能需要您减小批处理大小或禁用gpu优化器(将模型和优化器放置在GPU上)。在启用此功能之前,请考虑进行备份。

该选项可能执行的操作示例是将data_dst中的嘴唇,眼睛,化妆等的样式/颜色转移到最终学习的面部,并保留面部的某些特征(肤色,某些纹理或面部特征)。设置越强-越多的东西或样式将从data_dst转移到最终学习的面孔。默认值为0.0(禁用)。

src脸部设置的颜色转移(none / rct / lct / mkl / idt / sot?:help): 此功能用于将data_src的颜色与data_dst进行匹配,以使最终结果具有与data_dst相似的肤色/色调,并且训练后的最终结果不会在人脸移动时改变颜色(如果不同的人脸可能会发生这种情况角度取自包含不同光照条件或颜色分级不同的各种光源)。有以下几种选项可供选择:

-rct(reinhard彩色转印):基于:不允许查看链接。注册或登录查看。
-lct(线性颜色转移):使用线性变换将目标图像的颜色分布与源图像的颜色分布匹配。
-mkl(Monge-Kantorovitch线性):基于:不允许查看链接。注册或登录查看。
-idt(迭代分发传输):基于:不允许查看链接。注册或登录查看。
-sot(切片式最佳传输):基于:不允许查看链接。注册或登录查看。

示例:(即将推出)

启用渐变剪切(y / n?:help): 实施此功能是为了防止使用DFL 2.0的各种功能时可能发生的所谓的模型崩溃/损坏。它对性能的影响很小,因此,如果您真的不想使用它,则必须启用自动备份,因为折叠后的模型无法恢复,必须将其废弃,并且必须从头开始进行培训。默认值为n(禁用),但是由于对性能的影响非常低,并且可以通过防止模型崩溃来节省大量时间,因此我建议始终在所有模型上启用它。

启用预训练模式(y / n?:help): 启用预训练过程,该过程使用随机人脸数据集对模型进行初始训练,将其训练到大约50k至100k迭代后,当您开始使用要训练的适当data_src和data_dst进行训练时,可以重新使用该模型,因为您可以节省时间不必从0开始,每次训练一切都结束了它的建议要么使用该功能,制作自己data_src和data_dst随着人们随机的面孔,或者从我们的论坛抓住预训练模型pretrain模型:
你是不是允许查看链接。注册或登录查看。
默认值为n(禁用)。
注意:可以随时启用pretrain选项,但建议在开始时仅对模型进行一次预训练(大约100-200k次迭代)。
 

7.合并:

 

训练完模型后,是时候将学习的面孔与原始帧合并以形成最终视频(转换)了。


为此,我们有2个与2个可用模型相对应的转换器:

7)合并SAEHD
7)合并Quick96

一旦选择了其中的任何一个,命令行窗口就会出现几个提示。

第一个将询问您是否要使用交互式转换器,默认值为y(启用),建议您在常规转换器上使用它,因为它具有所有功能,并且还具有交互式预览功能,您可以在其中看到所有更改的效果在更改各种选项并启用/禁用各种功能时会
使用交互式合并吗?(y / n):

第二个会询问您要使用的模型:
选择一个保存的模型,或输入名称来创建一个新模型。
[r]:重命名
[d]:删除
[0]:df160-最新


第3个会询问您要在合并(转换)过程中使用哪个GPU / GPU或CPU:
选择一个或多个GPU IDx(以逗号分隔)。
[CPU]:CPU
[0]:GeForce GTX 1060 6GB
[0]要选择哪个GPU索引?:

按Enter将使用默认值(0)。

完成之后,您将看到一个带有当前设置的命令行窗口以及一个预览窗口,其中显示了操作交互式转换器/合并程序所需的所有控件。

快速浏览命令行窗口和转换器预览窗口:



转换器具有许多选项,可用于更改遮罩类型,大小,羽化/模糊,可以添加其他颜色转移并锐化/增强最终训练的脸更深入。

以下是所有合并/转换器功能的说明列表:

1.主要覆盖模式:
-原始:显示原始框架而无需交换面部
-覆盖:简单将学习的面部覆盖在框架上
-历史匹配:覆盖学习的面部和轮胎以进行匹配它基于直方图(具有2种模式:正常和蒙版的历史匹配,可通过Z按钮切换)
-无缝:使用opencv泊松无缝克隆功能在原始帧中混合头顶上的新学习面孔
-无缝历史匹配:将两个历史匹配和无缝。
-raw-rgb:不使用任何遮罩覆盖原始学习过的脸部

注意:无缝模式会导致闪烁,建议使用覆盖。

2.历史匹配阈值: 控制直方图匹配和无缝直方图覆盖模式下直方图匹配的强度。
Q-增加值
A-减少值

3。腐蚀掩模:控制掩模的大小。
W-增加蒙版腐蚀(较小的蒙版)
S-减少蒙版腐蚀(较大的蒙版)

4.模糊蒙版:使蒙版边缘模糊/羽化,以实现更平滑的过渡
E-增加模糊
D-减少模糊

5.运动模糊:输入初始参数(交互式转换器,模型,GPU / CPU)后,合并/转换器将加载所有帧和data_dst对齐的数据,同时执行此操作,该操作将计算用于创建此设置控制的运动模糊效果的运动矢量,让我们将其添加到人脸四处移动的位置,但即使移动很小,高值也可能使人脸模糊。该选项仅在“ data_dst / aligned”文件夹中存在某组面孔时才有效-如果在清理过程中某些面孔带有_1前缀(即使仅存在一个人的面孔),效果将不起作用,同样如果有一面镜子可以反射目标人物的脸,在这种情况下,您将无法使用运动模糊,而添加它的唯一方法是分别训练每组脸。



6.超分辨率:使用与data_src数据集/面部设置增强器类似的算法,它可以为牙齿,眼睛等区域添加更多定义,并增强所学面部的细节/纹理。
T-增强效果
G-降低增强效果

7.模糊/锐化:使用Box或Gaussian方法模糊或锐化所学的面部。
Y-锐化面部
H-模糊面部
N-框/高斯模式开关

8。面部比例:将 学习到的面部放大或缩小。
U-将学习的脸朝下
缩放J-将学习的脸朝下缩放

9.遮罩模式:有6种遮罩模式:

dst:使用从data_dst面集/数据集提取期间生成的界标形状导出的蒙版。
Learned Mask:学习的面具,如步骤6所述,使用在训练中学习的面具。如果学习面具被禁用,它将使用dst mask。
fan-prd:第一种FANseg遮罩方法,它可以预测合并过程中的遮罩形状,并考虑到障碍物(手,眼镜,遮盖脸部的其他物体)以遮蔽它们。
fan-dst:第二种FANseg遮罩方法,它通过考虑dst遮罩形状+障碍物来预测合并期间的遮罩形状。
fan-prd + fan-dst:第三个FANseg遮罩方法,结合了fan-prd和fan-dst方法。
fan-prd + fan-dst + Learned:  结合了fan-prd,fan-dst和Learned Mask方法。

最快的遮罩方法是dst,但不能排除障碍物,学习的遮罩在形状方面更好,但也不能排除障碍物,fan-dst速度较慢,但可以排除障碍物,并且通常在大多数情况下足够好,fan-prd可以有点不可预测,因此不建议使用,fan-dst + prd不会提供比dst好得多的蒙版,而将fan-prd,fan-dst和学习型蒙版相结合的6th选项是最好的,但也是最慢的,需要您也训练有学习面具。

10.颜色转移模式:类似于训练过程中的颜色转移,您可以使用此功能将学习到的脸部的肤色与原始帧更好地匹配,以实现更加无缝和真实的脸部交换。有8种不同的模式:

RCT
LCT
MKL
MKL-M
IDT
IDT-M
SOT-


即将推出M MIX-M个示例。

11.图片降级模式:  有3个设置,您可以用它来影响原有框架的外观(不影响换面):
降噪 -图像去噪使其略微模糊(I -增加的影响,K -减少效果)
双立方 -使用双三次方法使图像模糊(O-增加效果,L-减少效果)
颜色 -减少颜色位深度(P-增加效果;;-减少效果)

其他控件:

TAB按钮 -在主预览窗口和帮助屏幕之间切换。
请记住,您只能在主预览窗口中更改参数,按帮助屏幕上的任何其他按钮都不会更改它们。
-/ _和= / + 按钮用于缩放预览窗口。
使用大写锁定将增量从1更改为10(影响所有数值)。

要保存/覆盖当前下一帧的所有设置,请按Shift + /键。
要保存/覆盖当前一帧中所有先前帧的设置,请按shift + M键。
要开始合并所有帧,请按Shift +>键。
要返回第一帧,请按shift + <键。
要仅转换下一帧,请按>键。
要返回1帧,请按<键。
 

8.将帧转换回视频:


合并/转换所有面部之后,“ data_dst”文件夹中将有一个名为“ merged”的文件夹,其中包含构成视频的所有帧。
最后一步是将它们转换回视频,并与data_dst.mp4文件中的原始音轨合并。

为此,您将使用提供的4个.bat文件之一,该文件将使用FFMPEG将所有帧组合成以下格式之一的视频-avi,mp4,lessless mp4或lossless mov。

-8)合并为avi
-8)合并为mov无损
-8)合并为mp4无损
-8)合并为mp4

就是这样!完成所有这些步骤后,您应该拥有一个名为result.xxx(avi / mp4 / moc)的文件,这是您的Deepfake视频。

 

热门文章

暂无图片
编程学习 ·

2020年上半年之总结

今天是2020年的上半年的最后一天即6月30号,这半年发生了许多的事情,又好像啥都没发生。身份的转变以及对未来的迷茫。从现在开始,好好工作,不要想着薪水多与少,做自己想做的事,珍惜生命,好好相待眼前人。
暂无图片
编程学习 ·

springboot+idea+bootstrap的带有图片的表格编辑操作

前面已经写了 批量导入,图片显示,现在写的是批量修改,后面会写用echarts+springboot 做折线图,有时间贴上 1、jsp代码如下,编辑按钮formatter: function (value, row, index) {var edit = <input class="btn btn-primary" type="button" value=&qu…
暂无图片
编程学习 ·

FFMPEG编译ffplay

关键就是要有SDL安装SDL(失败)yum install -y SDL-devel编译SDL2(成功) https://blog.csdn.net/quantum7/article/details/104173159编译参数# export is must use export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}pkg-config --modversion ffnvcodecC…
暂无图片
编程学习 ·

设计模式

设计模式 >**设计模式简介** 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。…
暂无图片
编程学习 ·

利用BootStrap创建搜索框--」详解

今天学了bootstrap由于官网上没有搜索框,我要做一个网站正好需要,我就自己做了一个搜索框,话不多说直接上代码下面是jsp代码<div class="col-sm-5" id="so"><div class="input-group"><input type="text" class="…
暂无图片
编程学习 ·

服务器使用Nginx部署Springboot项目(jar包)

部署SpringBoot项目到后台Nginx实现多项目反向代理1,将java项目打成jar包2.准备工具3.将jar包传入服务器3.使用Xshell运行jar包4.下载安装nginx5.配置nginx.conf6通过域名访问(成功) 1,将java项目打成jar包 这里我用到的是maven工具这里有两个项目,打包完成后一个为demo.jar,另…
暂无图片
编程学习 ·

关于table中合并单元格的一些问题

关于table中合并单元格的一些问题 首先要明白列表中定义tr为一行,td为一行中的单元格,也就是列的数量。所以在合并行(rowspan)时,得到的是新的一列。代码运行结果如下。<tr><td></td><td></td><td rowspan="3"></td>…
暂无图片
编程学习 ·

java实现的通用遗传算法框架

这两天写了一个比较通用的遗传算法框架common-geneticalgorithm,之所以写这个是因为以前每次需要用到遗传算法的时候总是手写一遍,从开始写代码起到现在估计至少写了不下20次了,像matlab,python,js,go,java的版本都写过。 主要思路是将重复的代码部分,像选择算子,精英保留,…
暂无图片
编程学习 ·

制药业中的自然语言处理(NLP)

文章目录NLP 用于发现新药物化合物NLP 用于将参与者纳入临床试验药品营销的 NLP参考资料 转载来源:https://zhuanlan.zhihu.com/p/140044281自然语言处理(NLP)在制药业的使用似乎少于机器视觉和预测分析等 AI 方法,但尽管如此,NLP 在制药业仍有一些应用。该行业主要处理结…
暂无图片
编程学习 ·

Finereport不破解前提下解除并发数限制,突破官网2个并发限制

官方免费版具有全部系统功能,但是只有2个并发,也就是2个以内用户可以访问,第三个用户访问就会提示“未注册,无法访问”,本案例中6个用户,超过了限制,所以没法实际使用,仅仅玩玩还行这里提供一款软件,实现不对免费版进行任何修改,通过搭建特殊环境,突破2用户在线访问限…
暂无图片
编程学习 ·

win10系统Idea运行maven项目的编码设置

编码。。。。好吧,我了解的比较少,此处仅针对本人遇到的问题整理个处理过程。今天运行个maven项目,idea控制台显示中文乱码,不管是System.out还是log4j的输出,但是log4j输出到日志文件又是正常的。查看了网上的处理办法:1、设置Idea的File Encoding2、设置Idea vmoption3…
暂无图片
编程学习 ·

Java NIO(Netty,Redis,Zookeeper高并发实战整理)

Java NIO NIO与OIO的对比 1.OIO事面向流的,NIO是面向缓冲区的。OIO是面向字节流或字符流的,在一般的OIO操作中,一流式的方法顺序地从一个流中读取一个或多个字节,因此,不能随意地改变读取指针的位置。NIO中引入了Channel(通道)和Buffer(缓冲区)的概念。读取和写入,只需…
暂无图片
编程学习 ·

Promise的深入理解

一、promise 的认识 1.js的单线程 1)javascript的执行环境是单线程的 2)单线程:指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个,它会「阻塞」其他任务,这个任务可称为主线程,但是实际上还有其他线程…
暂无图片
编程学习 ·

企业实战--kubernetes(八)---存储(ConfigMap)

一、Configmap简介 Configmap用于保存配置数据,以键值对的形式存储 Configmap资源提供了向Pod诸如配置数据的方法 旨在让镜像和配置文件解偶,以便实现镜像的可移植性和可复用性 典型的使用场景: 填充环境变量的值 设置容器内的命令行参数 填充卷的配置文件创建Configmap的方…
暂无图片
编程学习 ·

HTML概述

HTML发展史HTML没有1.0,因为关于它的初版存在争议,1995年HTML 2.0面世,1997年由国际官方组织W3C推出了HTML 3.2以及HTML 4.0标准,后面W3C(万维网联盟)也渐渐变成Web技术领域的权威,经过漫长的演变,2014年,HTML 5标准最终面世。HTML 2.0——1995年11月,RFC 1866发布HTML…
暂无图片
编程学习 ·

关于微服务架构最好的文章!

本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景。❝ 为了防止不提供原网址的转载,特加上原文链接:https://www.cnblogs.com/skabyy/p/11396571.html要理解微服务,首先要先理解不是微服务…
暂无图片
编程学习 ·

库存补单及销量预测

库存补单的数学模型 摘要根据顾客对商品的需求,科学合理的制定库存补单决策对于自家商店发展具有重大的影响,进而成为商家关注的热点问题。本文研究的是补单的策略问题。针对问题一,是典型的预测问题,要求我们能够准确的预测出未来五天的日销售量。由于日销售量是个非线性的…
暂无图片
编程学习 ·

二、三层交换机与路由器的工作原理总结

交换原理 转发决策 交换机的转发决策有三种操作:丢弃、转发和扩散。 丢弃:当本端口下的主机访问已知本端口下的主机时丢弃。 转发:当某端口下的主机访问已知某端口下的主机时转发。 扩散:当某端口下的主机访问未知端口下的主机时要扩散。 每个操作都要记录下发包端的源MAC地…