FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程

工具软件 Edge插件网 4年前 (2020-08-04) 4736次浏览 已收录 0个评论

介绍

很多人在开始Faceswapping时不知所措,并且犯了许多错误。错误是好的。这是我们的学习方式,但是有时在深入研究之前可能会有所帮助。 在本文中,我将详细介绍我们如何训练模型。有几种型号有很多选择。我不会掩盖一切,但希望这能给您足够的知识来做出自己的明智决定。如果您尚未生成用于训练的面部表情,请立即停止并转到提取教程立即生成它们。 本教程中有很多背景信息。我建议您熟悉这一切。机器学习是一个复杂的概念,但我尝试将其分解为尽可能简单的理解。对神经网络的工作原理以及从中获得的数据类型有基本的了解,将极大地提高您成功交换数据的机会。 我将在本教程中使用GUI,但前提是cli完全相同(cli中提供了GUI中提供的所有选项)。

什么是训练?

总览

在较高的级别上,培训正在教我们的神经网络(NN)如何重塑脸部。大多数模型主要由两部分组成:
  1. 编码器 -这项工作的工作是将大量人脸作为输入,并将其“编码”为“矢量”形式的表示形式。重要的是要注意,它并不是在学习您输入的每张脸的确切表示,而是在尝试创建一种算法,该算法可用于以后尽可能地重建与输入图像最接近的脸。
  2. 解码器 -这样做的工作是获取由编码器创建的矢量,并尝试将此表示形式变回人脸,并使其与输入图像尽可能地匹配。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
某些模型的构造略有不同,但基本前提保持不变。 NN需要知道它在编码和解码人脸方面做得如何。它使用2个主要工具来执行此操作:
  1. 损失 -对于输入模型的每批面孔,NN都会查看其尝试通过其当前的编码和解码算法重新创建的面孔,并将其与所输入的实际面孔进行比较。完成后,它将给自己一个分数(损失值)并相应地更新其权重。
  2. 权重 -模型评估了重建脸部的程度后,便会更新其权重。这些输入到编码器/解码器算法中。如果它在一个方向上调整了权重,但是感觉到重建脸部的工作比以前做得差,那么它就知道权重在朝错误的方向移动,因此它将以另一种方式进行调整。如果感觉有所改善,那么它将知道继续沿前进方向调整权重。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
然后,该模型多次重复执行此操作,并根据其损失值不断更新其权重,从理论上讲会随着时间的推移而不断改进,直到达到您认为已学到足以有效重现脸部的程度,或者损失值停止下降为止。 现在我们有了神经网络的基本知识,以及它如何学习创建面孔,这对面孔交换有何作用?在上面的细目中,您可能已经注意到,该NN学习如何对一个人的面孔进行加载,然后重建这些面孔。这不是我们想要的……我们要承担很多的面孔并重建别人的面孔。为了实现这一目标,我们的NN做了两件事:
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
术语 使用Faceswap时,您将看到一些常见的机器学习术语。为了简化生活,此处显示术语表:

训练数据

数据质量对您的模型有多重要是不可以夸大其词的。较小的模型可以对体面的数据很好地执行,类似地,没有模型可以对不良的数据执行得很好。在模型的每一侧至少应有500张变化的图像,但是,数据越多,变化越多,则越好。使用的图像数量合理,介于1,000到10,000之间。添加比这更多的图像实际上会伤害训练。 太多相似的图像将无法帮助您的模型。您需要尽可能多的不同角度,表情和照明条件。常见的误解是针对特定场景训练模型。这是“记忆”,而不是您要实现的目标。您正在尝试训练模型以在所有角度,在所有情况下使用所有表达式来理解一张脸,并在所有角度,在所有条件下使用所有表达式来与另一张脸交换它。因此,您希望从A和B集的尽可能多的不同来源构建训练集。 两侧的不同角度非常重要。神经网络只能学习所见。如果95%的面孔正对着镜头直视而5%则是侧面朝上,那么模型将需要很长时间才能学习如何在侧面上创建侧面。它可能根本无法创建它们,因为它很少能看到侧面。理想情况下,您希望脸角,表情和光照条件的分布尽可能均匀。 同样,在A侧和B侧之间具有尽可能多的匹配角度/表情/照明条件也很重要。如果A侧有很多配置文件图像,而B侧没有配置文件图像,则该模型将永远无法在配置文件中执行交换,因为解码器B将缺少创建配置文件镜头所需的信息。 培训数据的质量通常不应模糊不清,并且应具有高质量(清晰和详细)。但是,可以在训练集中包含一些模糊/部分模糊的图像。最终,在最后一次交换中,某些面孔变得模糊/低分辨率/模糊不清,因此,对于NN来说,也必须看到这些类型的图像,以便进行忠实的娱乐,这一点很重要。 可以找到有关创建训练集的更多详细信息在摘录教程中

选择模型

Faceswap中有几种可用的模型,并且随着时间的推移会增加更多的模型。每个人的素质都可能是高度主观的,因此,这将简要概述每个(当前)可用的人。最终,最适合您的模型可以归结为许多因素,因此没有明确的答案。每种都有优点和缺点,但是如上所述,最重要的一个因素是数据的质量。没有模型可以解决数据问题。
您将在下面看到输入和输出大小(例如64px输入,64px输出)的说明。这是输入到模型(输入)的脸部图像的大小和从模型(输出)生成的脸部的大小。馈入模型的所有脸部都是正方形,因此64px的图像将是64像素宽高64像素。一个普遍的误解是,高分辨率的输入将导致更好的交换。虽然可以提供帮助,但并非总是如此。NN正在学习如何将面部编码为一种算法,然后再次对该算法进行解码。它只需要足够的数据就可以创建可靠的算法。输入分辨率和输出质量不直接关联。
值得注意的是,模型越大,训练所需的时间就越长。原始模型在Nvidia GTX 1080上的训练可能需要12-48小时的时间。反派在相同的硬件上可能需要一周以上的时间。通常认为,输入大小加倍的模型将花费两倍的时间。这是不正确的。至少需要四倍的时间,甚至可能更长。这是因为64px图像具有4,096像素。但是,一个128像素的图像具有16,384像素。这是原来的4倍,此外,还需要扩展模型以处理不断增长的数据量,并且训练时间可以快速累积。

型号配置设置

好的,您已经选择了模型,让我们开始培训吧!好吧,站在那里。我很欣赏您的渴望,但是您可能会想先设置一些特定于模型的选项。我将为此使用GUI,但是可以在faceswap文件夹中的faceswap / config / train.ini位置找到配置文件(如果使用命令行)。 由于这些模型各不相同,因此我将不涉及每个模型的选项,并且很难针对新模型进行更新,但是我将概述一些较常见的选项。我们将重点放在适用于所有模型的全局选项上。所有选项都有工具提示,因此将鼠标悬停在选项上可获得有关其功能的更多信息。 要访问模型配置面板,请转到设置 >配置火车插件…
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
此页面上的所有选项(“ 学习率 ”除外)仅在创建新模型时生效。一旦开始训练模型,此处选择的设置就会“锁定”到该模型,无论您在此处进行什么设置,只要您继续训练,就会重新加载该设置。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
虽然从直觉上看,覆盖范围似乎总是更好,但实际上并非如此,这是一种折衷。虽然更高的覆盖率意味着将交换更多的人脸,但是模型的输入大小始终保持不变,因此,由于需要将更多信息打包到相同大小的图像中,因此交换的细节可能不太详细。为了说明这一点,下面是一张具有62.5%覆盖率和100%覆盖率的相同图像的极端示例,它们的大小均为32px。如您所见,100%覆盖率图像包含的细节远少于62.5%版本。最终,此选项的正确选择取决于您:
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
设置遮罩是一种指示图像的哪个区域很重要的方法。在下面的示例中,红色区域“被遮盖了”(即:它被认为不重要),而透明区域被“遮盖了”(这是面部,因此我们感兴趣的区域):
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
戴口罩进行训练有两个目的:
  1. 它将训练的重点放在面部区域,从而迫使模型对背景的重视程度降低。这可以帮助模型更快地学习,同时还可以确保它不会占用不重要的空间学习背景细节。
  2. 学习的掩码可以在转换阶段使用。在当前的实现中,学到的掩码在转换时是否比使用标准掩码有什么好处是有争议的,但是使用掩码进行训练可以确保您可以选择使用它。
注意:如果您正在使用面罩进行训练,则必须在每个输入文件夹中为A和B中的所有面部提供路线文件。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
正如在 培训概述该模型的权重在每次迭代结束时都会更新。初始化是首先设置这些权重的过程。您可以看到这为模型的入门提供了帮助。如我们所知,我们的神经网络将用于什么,我们可以将这些权重设置为一些值,这将有助于模型在生命中有一个快速的开始。 初始化的默认方法是“ he_uniform”。这将从均匀分布中抽取样本。进入不同的初始化方法及其含义不是本教程的目标,但是可以通过本节中提供的选项来覆盖此默认设置。 应当注意,某些模型在内部为模型的某些层设置了初始化方法,因此这些层将不受此设置的影响。但是,对于尚未显式设置此参数的图层和模型,初始化器将更改为选定的选项。 现有的两个初始化器可以一起使用(即,它们都可以启用而不会产生不良影响)。我倾向于同时启用它们。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
这里的选项适用于模型中使用的某些图层。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
有多种不同的方法来计算损失,或者让NN识别其在训练模型方面的表现。我将不详细介绍每个可用功能,因为这将是一个漫长的过程,并且在互联网上有很多有关每个功能的信息。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
优化器控制神经网络的学习速率。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
如前所述,我不会详细介绍特定于模型的设置。这些因插件而异。但是,我将介绍您可能在每个插件中看到的一些常用选项。与往常一样,每个选项都有一个工具提示,可为您提供更多信息。
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
NN需要看到很多很多不同的图像。为了更好地学习人脸,它会对输入图像执行各种操作。这称为“数据扩充”。如注释中所述,标准设置适用于99%的用例,因此只有在知道它们会有什么影响时才进行更改。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
这是引擎盖下颜色增强功能的说明(您不会在预览/最终输出中看到它,仅用于演示目的):
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
对设置进行建模后,请单击“确定”以保存配置并关闭窗口。 注意:点击确定会将选项保存在所有选项卡上,因此请确保仔细检查它们。您可以单击“ 取消”以取消所有更改,或单击“ 重置”以将所有值恢复为其默认设置。

配置

现在您已经准备好了自己的脸,已经配置了模型,现在该开始了! 转到GUI中的“火车”选项卡:
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
在这里,我们将告诉Faceswap所有内容的存储位置,要使用的内容以及实际开始的培训。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
Faceswap提供了许多VRAM节省优化功能,这些优化功能使用户能够训练他们原本无法训练的模型。不幸的是,这些选项当前仅适用于Nvidia用户。这些应该是呼叫的最后一个端口。如果您可以在不启用这些选项的情况下以至少6-8的批量进行训练,那么您应该首先这样做,因为所有这些都会带来速度上的损失。可以相互启用所有这些选项,以节省堆栈。
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
如果您使用的是GUI,那么通常您将不想使用这些选项。预览是一个弹出窗口,显示培训进度。GUI将这些信息嵌入“显示”面板中,因此弹出的窗口将仅显示完全相同的信息,并且是多余的。预览在每次保存迭代时更新。
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
“时间间隔”选项是一项可选功能,通过该功能,您可以查看随着时间推移对固定脸部进行训练的进度。在每次保存迭代时,将保存一张图像,显示在该时间点对所选脸部进行训练的进度。请注意,延时摄影图像占用的磁盘空间量会随着时间推移而堆积。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
这些选项对于Faceswap的每个部分都是全局的,而不仅仅是培训。
锁定所有设置后,请检查它们以确保您满意,然后单击“ 训练”按钮开始训练。

监控培训

一旦开始训练,该过程将花费一两分钟来构建模型,预加载数据并开始训练。一旦启动,GUI将进入训练模式,在底部放置一个状态栏,并在右侧打开一些选项卡:
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
您无需在此处密切关注损失数。对于换脸,它们实际上是毫无意义的。这些数字给出了关于NN认为其重新创建Face A的程度以及重新创建Face B的程度的想法。但是,我们对模型通过Face A的编码创建Face B的效果很感兴趣。这是一个损失值,因为没有实际的例子可以让NN进行比较。
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
知道模型是否已完成训练的最好方法是观看预览。最终,这些说明将显示实际交换的外观。当您对预览感到满意时,就该停止训练了。眼部眩光和牙齿等精细细节将是最后要做的事情。一旦定义了这些,通常可以很好地表明培训即将完成。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
 
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
您无需太在意此处的数字。对于换脸,它们实际上是毫无意义的。这些数字给出了关于NN认为它如何重新创建Face A以及重新创建Face B的程度的想法。但是,我们对模型通过Face A的编码创建Face B的效果很感兴趣。这是一个损失值,因为没有实际的例子可以让NN进行比较。 损耗图仍然是有用的工具。最终,只要损失减少,该模型仍在学习。该模型学习的速度将随着时间的流逝而降低,因此到最后,可能很难辨别它是否仍在学习。在这些情况下,请参阅“分析”选项卡。
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
 
如上所述,损失图对于查看损失是否正在下降很有用,但是当模型经过长时间训练时可能很难辨别。分析选项卡可以为您提供更详细的视图。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
只需按一下GUI左下方的“ 终止”按钮,即可随时停止训练。该模型将保存其当前状态并退出。 通过选择相同的设置并将“ model dir”文件夹指向与保存的文件夹相同的位置,可以恢复模型。通过从GUI文件菜单或选项面板下面的保存图标保存Faceswap配置,可以使此操作变得更加容易。
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
然后,您可以重新加载配置并继续培训。 可以在“训练”文件夹中添加和删除人脸,但是请确保在进行任何更改之前先停止训练,然后再次恢复。如果您正在使用“经向地标”或使用蒙版进行训练,则需要确保使用新面和移除面更新路线文件。 恢复损坏的模型
有时模型会损坏。可能有多种原因,但这可以通过预览中的所有面孔变为纯色/乱码来证明,并且损耗值急剧上升而无法恢复。 Faceswap提供了可轻松恢复模型的工具。每次丢失值总体下降的保存迭代将保存备份。可以通过以下方式恢复这些备份:
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
点击恢复按钮。恢复后,您应该可以从上次备份进行培训。
附件
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
 
FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
来源:https://forum.faceswap.dev/download/file.php?id=188

Edge插件网 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:FaceSwap训练流程,Windows版FaceSwap训练AI变脸教程
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址