换脸|Faceswap:Converting指南[疯语咒AI]

换脸|Faceswap:Converting指南[疯语咒AI]

1. 简介

如果您已登陆此页面,但不知道如何提取人脸数据集或训练模型,请立即停止,然后阅读提取指南训练指南

那么,你已经走到这一步了吗? 困难的部分已经结束。我们有一个训练有素的模型,我们准备好创建一个交换。到目前为止,转换是该过程中涉及最少的部分,但我们仍然需要进行一些设置和最终调整才能获得良好的结果。

与其他指南一样,我将使用 GUI,但此处的所有命令也可在 cli 中使用,您可以执行 python faceswap.py convert -h 以获取命令列表,以及 python tools.py -h 获取可用工具的列表。

2. Settings(设置)

在前往转换选项卡之前,我们需要做一些准备工作,并锁定一些看起来不错的设置。

2.1 Alignments(对齐)

为了创建我们的最终交换,我们需要一个源视频(或帧文件夹)和经过训练的模型。我们还需要另一件事,那就是源视频的对齐文件。这与用于训练的对齐文件不同,更多的是,它是一个专为我们想要切换到的视频,而创建的对齐文件。这里对齐文件的目的是告诉 Faceswap 哪个是我们应该交换的目标人脸,以及它在frame中的位置。如果您尚未为源视频创建对齐文件,并对其进行清理,那么您现在应该这样做,有关如何创建用于转换的对齐文件的说明,请前往提取指南

2.2 Preview Tool(预览工具)

Faceswap 提供了一个Preview Tool,您可以在其中预览交换的结果,并调整设置以更好地将人脸与frame融合。

1. 转到Tools选项,然后是Preview子选项:

换脸|Faceswap:Converting指南[疯语咒AI]

2. 这里没有很多选项可以配置,但它们解释如下:

换脸|Faceswap:Converting指南[疯语咒AI]
  • Input Dir – 选择源视频的视频图标,或源帧文件夹的图像图标,然后导航到要交换的源。
  • Alignments File – 如果对齐文件位于您从中提取的默认位置,那么您可以将此留空。否则,单击该图标并导航到与您在前一字段中输入的视频对应的 .fsa 对齐文件。
  • Model Dir – 这应该是您在训练阶段指定的文件夹。它将包含一个 <model_name>.h5 文件和一个 <model_name>_state.json 文件。
  • Swap Model – 这是为了防止您以错误的方式训练模型(即当您尝试转换时,但主体的人脸保持不变)。您可以启用此选项来切换模型方向,并记下下次训练正确的方法。

3. 点击Preview按钮来启动预览工具,该过程将加载模型,源视频和对齐文件,然后显示如下所示的窗口:

换脸|Faceswap:Converting指南[疯语咒AI]

下面描述了布局的基本概述,但接下来我们将更详细地研究选项:

  • Top row of images – 原始frame里的人脸。
  • Bottom row of images – 交换后的人脸放入原来的frame 。
  • Bottom left option panel – 这些与Command Line Options有关(即您在主 GUI 中设置的用于转换的选项)。您在此处设置的任何内容都应该记下,因为您在运行转换时,需要复制这些选项。
  • Bottom right option panel – 这些与Configuration Options有关。这些是您从 GUI 中的Settings > Edit Convert Settings…对话框(或 cli 中的 ./config/convert.ini)访问的设置。您在此处更改(和保存)的任何设置都将在转换过程中被记住。
  • Update Samples – 此按钮将刷新顶部帧中显示的图像,从源视频文件中拉入新的人脸选择。按下此按钮时请耐心等待,根据您的设置,这可能需要几秒钟,因为人脸需要通过模型以生成新的交换。
  • Utility Buttons – 有两组实用程序按钮。左侧(在命令行选项下)影响完整配置(即与右侧面板中的每个选项卡对应的选项)。右侧的按钮(在配置选项下)只会影响您当前选择的选项卡。无论哪种方式,这些按钮都允许您重置选项的保存值或默认值,并允许您保存配置。

4. Command Line Options:这些选项与您稍后运行转换时,将在主 Faceswap GUI 中配置的设置相关。您在此处更改的任何内容都需要记下,因为在运行转换任务时,您需要使用相同的设置。

换脸|Faceswap:Converting指南[疯语咒AI]
  • Color – 这是在原始人脸和交换人脸之间使用的颜色匹配类型。理想情况下,您会将其保留为“None”,但根据所使用的模型和数据质量,您可能希望使用其中一种内置颜色匹配方法。一些方法具有可以在右侧面板中调整的设置(但我稍后会介绍)。值得注意的是,这里没有“right”选项可供选择。不同的交换将需要不同的配色技术,目前的方法有:
    • None不要进行任何颜色匹配。
    • Avg Color-取原始人脸和交换人脸之间的颜色的平均值,并将此应用于交换的人脸。
    • Color Transfer– 由 Reinhard 等人在 2001 年开发的颜色匹配算法,此方法在右侧窗格中有几个选项。
    • Manual Balance– 允许您手动更改交换人脸的颜色/对比度/亮度,此方法在右侧窗格中具有可用设置。
    • Match Hist– 尝试从源人脸中的直方图匹配交换人脸上的直方图,此方法在右侧窗格中具有可用设置。
    • Seamless Clone – 无论结果看起来有多好,如果你正在创建一个视频,不要使用这种方法。
  • Mask Type – 这是您要用于转换的mask类型。提取指南中提供了可用的mask及其说明。 如果要使用对齐文件中不可用的mask,则可以使用mask工具生成其他maskmask在右侧窗格中具有设置,用于调整如何将交换的人脸混合到原始frame上。

5. Configuration Options:右侧面板中的这些选项,允许您为将在转换过程中运行的每个插件配置设置。当您在此处进行更改时,保存的值将在您的 convert.ini 中更新(可从 GUI 中的Settings > Edit Convert Settings…访问)。这意味着一旦您在此处正确锁定了设置,它们将自动被选择用于转换过程。

换脸|Faceswap:Converting指南[疯语咒AI]

插件分为 3 个主要类别,每个类别可能包含一个或多个插件的设置。我将概述可用的主要类别和插件,但您需要使用的实际设置会因情况而异,因此由您来评估结果,并选择最佳设置。 所有设置都有工具提示,解释每个选项的作用。

  • Color – 此处显示的设置与上一Command Line Options部分的颜色下拉列表相关。例如,如果您在左侧窗格中选择了“Color-Transfer”作为颜色匹配方法,那么您将在右侧窗格中选择“Color Transfer”选项来配置该插件的选项。
    • Color Transfer – 公开几个选项来关闭/打开此插件。根据来源,打开或关闭这些将产生不同的效果。
    • Manual Balance – 允许你手动调整颜色/亮度/对比度的最终交换,如果你选择了这个插件。Color Balance部分允许你选择一个要工作的颜色空间,然后调整该颜色空间的平衡。Brightness Contrast部分允许你调整亮度和对比度。
换脸|Faceswap:Converting指南[疯语咒AI]
  • Match Hist – 这个插件只需要编辑一个参数,它允许你设置颜色匹配发生的阈值。这有助于消除“极端”颜色。
  • Mask – 此处的设置对应于mask和提取box如何融入背景图像。如果没有应用混合,那么交换后的人脸和原始帧之间会有一个非常清晰的边界。这里有 2 个“masks”可以编辑。Box Mask 是包含正在交换的人脸的方形框,Face Mask 是定义人脸边缘的mask。根据你所训练的覆盖范围来决定每一个mask将使用多少,使用提取指南中的例子:
换脸|Faceswap:Converting指南[疯语咒AI]
  • 如果您以 100% 进行训练,那么提取框完全有可能包含整个mask,因此编辑框混合设置将无济于事。然而,在低覆盖设置(例如 67.5%)下,完全可以想象大部分提取框位于mask区域内,在这种情况下,人脸混合设置不会产生太大的影响,但两者都需要调整。
  • 作为提示,如果您将颜色插件类型更改为“manual-balance”并将亮度设置为 -100%,您可以非常清楚地看到box/mask边缘的位置,以及更改设置的影响:
    • Box Blend – 编辑设置,将提取框的边缘混合到原始Frame中。使用工具提示来了解每个设置的作用,并进行调整,使你的交换无缝混合。
换脸|Faceswap:Converting指南[疯语咒AI]
  • Mask Blend – 编辑设置,将mask的边缘混合到原始帧中。使用工具提示来了解每个设置的作用,并进行调整,使你的交换无缝混合。
换脸|Faceswap:Converting指南[疯语咒AI]
  • Scaling – 可以调整的最终设置是“scaling”,或者更具体地说是锐化(sharpening)。通常情况下,交换可能必须放大以适应最终帧。在这里,您将找到人工锐化图像的选项。锐化是否能产生好的结果是个人喜好的问题,这些设置几乎总是会因情况而异:
换脸|Faceswap:Converting指南[疯语咒AI]
  • 质量最好的锐化选项是“Unsharp Mask”,然后是“Gaussian”,最后是“Box”。使用最适合您的或设置为“None”以禁用。如果工具提示没有给你足够的信息,你可以谷歌这些锐化方法来更好地了解参数的作用。

一旦你觉得一切看起来都很好,确保你的设置被保存,记下你所选择的mask类型和颜色插件,然后关闭Preview Tool 。

2.3 Settings Menu(设置菜单)

我们上面设置的所有设置都可以在Preview Tool中使用。这些可以忽略,因为我们已经将它们锁定。但是,如果您从命令行运行,因此无法访问这些工具,您可以在文件 faceswap/config/convert.ini 中编辑这些选项。这些选项与Preview Tool 部分中显示的完全相同,因此您可以参考该部分以获取帮助。我们接下来讨论的 writer选项也在同一个文件中。

1. Writer plugin

设置菜单中有一个部分我们仍然感兴趣,那就是与Writer相关的插件。Writer 插件决定了最终帧的生成方式,无论是视频、一系列图像还是动画 GIF。我们将在下一节中选择我们使用的 Writer,但将在此处设置选项。

  • 选择Settings > Configure Settings... (或者选择任务栏上的转换设置图标直接跳转到正确的部分):
换脸|Faceswap:Converting指南[疯语咒AI]
  • 选择Writer节点:
换脸|Faceswap:Converting指南[疯语咒AI]
  • 我不会介绍所有单独的设置,因为它们各不相同,因此将鼠标悬停在工具提示上,而是对可用编写器的概述:
    • Ffmpeg – 将交换输出到视频文件。
    • Gif – 从交换中创建一个动画GIF
    • OpenCV – 将交换输出到一系列图像。
    • Pillow – 将交换输出为一系列图像(比 OpenCV 支持更多格式,但速度较慢)。
  • 你应该注意一些高级别的事情:
    • 使用 FFMPEG 插件的 H265 编码会大大减慢转换速度。
    • 您可以使用 OpenCV 或 Pillow 编写器,并选择绘图透明选项将mask输出到 4 通道 PNG 或 TIFF 的 alpha 通道。如果您想将交换加载到外部应用程序进行后期处理,这将非常有用。
  • 配置好插件后,请单击 Ok 保存设置,并退出配置页面。

3. Convert(转换)

我们马上就到家了!我们已经准备好了一切,我们只需要在convert选项中输入正确的信息,让它生成我们的交换。由于我们已经正确配置了所有内容,因此这很简单。

  • 在主GUI中选择Convert选项:
换脸|Faceswap:Converting指南[疯语咒AI]
  • Data – 我们将配置的第一部分是Data
换脸|Faceswap:Converting指南[疯语咒AI]
  • Input Dir – 这是您希望交换人脸的视频或图像文件夹。根据您的来源选择相应的视频或图像图标,然后导航到正确的位置。
  • Output DIr – 输出将保存在这里。如果文件夹不存在,将在此位置创建一个新文件夹。
  • Alignments – 这是与您将要交换人脸的frames相关的对齐文件。如果它位于默认位置(源文件),那么您可以将此留空,该文件将自动被拾取。
  • Reference Video – 仅当您的输入是一个充满图像的文件夹,并且输出使用 FFMPEG 编辑器时才需要此选项。如果是这种情况,那么这应该是原始视频的路径,其中包含完整图像的文件夹是从中提取的。
  • Model Dir – 这应该是您在训练阶段指定的文件夹。它将包含一个 <model_name>.h5 文件和一个 <model_name>_state.json 文件。
  • Plugins – 接下来,我们将配置plugins
换脸|Faceswap:Converting指南[疯语咒AI]
  • Color Adjustment – 选择使用Preview Tool时,选择的颜色调整。
  • Mask Type – 选择使用Preview Tool时,选择的mask类型。
  • Writer – 选择您要使用的writer(有关writer 的细分,请参阅上一节)。
  • Frame Processing – 我不喜欢玩这些游戏,但下面有一个解释:
换脸|Faceswap:Converting指南[疯语咒AI]
  • Output Scale – 这将缩放最终输出。例如,100% 比例(默认)的 720p 视频将作为 720p 视频输出。缩放比例为 50% 时,它将输出为 360p 视频。缩放比例为 200% 时,它将输出为 1440p 视频。这里没有做任何花哨的事情,它只是缩放输出。
  • Frame Ranges – 您可以指定要转换的帧范围。例如,如果您有一个 2000 帧长的视频,但您只想交换第 500 – 1500 帧的人脸,那么您将输入 500-1500。
  • Keep Unchanged – 此选项仅在选择了“Frame Ranges”时才相关。使用上面的示例,启用此选项后,您将收到 2000 帧输出,但只会交换 500-1500 帧。禁用此选项后,您将只会收到 1000 帧(您选择用于交换的帧)。
  • Face Processing – 不要使用此部分。说真的,如果你必须使用它,那么你只是在covering 糟糕的工作流程。但是,选项存在,所以我将描述一下(以及为什么不应该使用它们)。
换脸|Faceswap:Converting指南[疯语咒AI]
  • Input Aligned Dir – 这允许您将 Faceswap 指向您要切换到的视频中已知人脸的文件夹。只有存在于对齐文件和此文件夹中的人脸才会被交换,如果您必须使用此文件夹,那是因为您没有正确清理对齐文件。干净的对齐文件对于获得良好的交换至关重要,因此…不要使用此选项,清理您的对齐文件。
  • Filter/nFilter, Ref Threshold – 这些选项用于过滤/过滤不需要的人脸。不要使用它,您应该已经清理了您的对齐文件,所以这不是必要的。你总是比机器更有效地过滤人脸,而且不会花很长时间,启用这些选项也会严重减慢转换过程。
  • Settings – 最后,我们有了转换的设置:
换脸|Faceswap:Converting指南[疯语咒AI]
  • Jobs – 通常,您不需要触摸它。默认设置将使用尽可能多的并行线程,但是,在某些系统上,convert 可能会耗尽 RAM,在这种情况下,您可能希望将其设置为“1”或较小的数字。
  • Trainer – 用于训练模型的模型类型。通常您不需要填写此内容,因为将从模型文件夹中读取训练器。但是,如果您在同一文件夹中有多个模型(不好的做法,将来将不受支持),那么您可以在此处为要转换的模型指定训练器。
  • Distributed – 是否在多个 GPU 上运行推理。可能没什么区别,因为速度瓶颈在转换阶段的 CPU 而不是GPU
  • On The Fly – 切勿使用此选项。始终为您的转换生成一个对齐文件,但是,如果由于某种原因您不想这样做,并且您想获得转换缓慢的糟糕交换,那么请务必启用此选项。
  • Swap Model – 当人们开始时,他们经常以错误的方式训练模型(即训练时 A 和 B 文件夹错误)。如果你发现你的交换只有原始人脸的低质量版本,那么你训练的方式是错误的。启用此选项并记住下次以正确的方式进行训练。
  • Single Process – 参见“Jobs”,与将“Jobs”设置为“1”的作用相同。

现在我们已经锁定了所有设置,我们可以继续点击Convert按钮,并等待我们的最终交换生成。

(0)
上一篇 2023年9月25日 上午10:23
下一篇 2023年9月25日 上午10:39

更多相关内容

开始你的AI探索之旅,开启无限可能,学习AI道路上我们一起前进。