介绍
很多人在开始Faceswapping时不知所措,并且犯了许多错误。错误是好的。这是我们的学习方式,但是有时在深入学习之前可能会有所帮助。
在本文中,我将详细介绍Extraction的工作流程。我并不是说这是最好的工作流程,也不是您应该做的,但是它对我有用,并希望为您创建自己的工作流程提供一个良好的起点。
我将在本教程中使用GUI,但前提是cli完全相同(GUI中存在的所有选项在cli中都是可用的)。
为什么要提取?
在最高级别,提取包括三个阶段:检测,对齐和蒙版生成。每个插件都有几个插件。它们的优缺点在工具提示(针对GUI)或帮助文本(针对cli)中进行了详细说明,因此在此不再赘述。但是,检测是在框架中查找人脸的过程,对齐是在人脸中查找“地标”并一致地定向人脸的过程。最终,遮罩生成将创建一个“遮罩”,该遮罩将识别最终面部图像的哪些部分是面部,哪些是背景/障碍物。
提取有两个主要目的:
从技术上讲,这是第三个目的,即您要进行转换时要提取它们,同时也要对其中一些面孔进行训练。我还将对此进行介绍。
虽然转换时不需要提取的脸部(仅需要路线文件),但是将它们包含起来很有用,以便我们可以为转换过程清理数据集。
路线文件
路线文件包含有关在每帧中找到的所有面部的信息,尤其是面部的位置以及68个点界标的位置:
该文件还存储为每个面部提取的所有蒙版。
路线文件的目的有三点:
因此,现在我们知道了为什么需要提取脸部,如何确定良好的工作流程?
提取中
第一步,无论您创建面部表情的原因是从帧中实际提取面部。
排序
现在我们已经提取了脸部,我们需要清理数据集和路线文件。提取器在获取面孔方面做得很好,但并不完美。它将有一些误报,将无法对齐某些面孔,还将吸引我们不想交换的人。如果您转至faces文件夹,最有可能的是输出的大部分内容如下所示:
清理看起来并不有趣!幸运的是,我们可以简化此过程。清理数据集的最快,最简单的方法是将这些面孔按有意义的顺序排序,然后删除所有我们不需要的面孔。最好的分类方法是“按面分类”。
注意:按面排序需要占用大量RAM。它必须进行很多计算。我已经测试成功在8GB RAM上对22k张面孔进行了排序。如果您要排序的面孔数量超出RAM中可容纳的面孔数量,则该过程将自动切换到慢得多的方法,因此,如果您的内存有限,则可能需要将数据集拆分为较小的子集。从理论上讲,所需的RAM量为(n 2 * 24)/ 1.8,其中n是图像数。您还需要考虑任何其他RAM开销(即其他程序正在运行,图像已加载到RAM),但从理论上讲,这将占用30,000个图像(30000 2 * 24)/ 1.8 = 12,000,000,000字节或大约11GB。
转到GUI中的“工具”选项卡,然后转到“排序”子选项卡:
该过程将开始通读面孔,为每个面孔建立身份。然后它将通过相似性将面孔聚在一起。实际的群集过程可能需要很长时间,因为它必须计算大量数据。不幸的是,没有关于进度的视觉反馈,因此请耐心等待。
完成后,您应该发现99%的面孔已排序在一起:
所有的垃圾也一起整理:
现在,您要做的就是滚动faces文件夹,然后删除那些不想保留的面孔。
清理路线文件
现在,我们已经删除了所有不需要的面孔,只剩下了我们要做的一组,我们需要清理路线文件。为什么?由于有关有害面部的所有信息仍在文件中,因此将来可能会给我们造成问题。使用集成工具清理路线文件还具有将面重命名为其原始文件名的附加优势,因此是双赢的。
导航至“工具”标签,然后导航至“路线”子标签:
完成后,您的面孔将被重命名为其默认名称,并且所有不需要的面孔将从您的路线文件中删除。
该过程将备份您的旧路线文件,并将其放在原始位置的新创建文件旁边。它的名称与清理后的路线文件的名称相同,但文件名末尾会附加“ backup_
此时,如果您要提取要转换的内容(或者该集合将用于转换和训练),则可以完全删除您的faces文件夹。这些面孔都不再需要。如果您需要重新生成脸部设置,则可以使用“对齐”工具(提取作业)来完成。
手动修复路线
好的,我们抽出了脸,清理了所有垃圾,现在确定要完成了吗?好吧,那里的家伙。当然,您可以继续前进,但是您想要好的交换还是想要一次很好的交换?
手册对于以下任务很有用:
根据我们要提取数据集的内容,这将决定我们要在此处执行的操作。如果我们纯粹是从训练集中提取数据,则可以完全跳过此步骤,尽管最好检查一下现有的路线以确保正确构建任何蒙版。
如果要提取进行转换,那么我们绝对要修复帧中的任何多个面,以及所有缺少对齐的帧。仅此一项就可以改善最终交换。然后,根据您要达到的彻底程度,可以解决所有不良的对齐方式,
我将不详细介绍如何使用手动工具。那本身就是一个教程,但是应该非常直观,并带有所有可用选项的工具提示。
每次在手动调整期间保存时,都会创建路线文件的备份。如果您满意您的新路线文件正确无误,则可以删除这些备份。它们将与原始路线文件位于同一文件夹中。
每次在手动调整期间保存时,都会创建路线文件的备份。如果您满意您的新路线文件正确无误,则可以删除这些备份。它们将与原始路线文件位于同一文件夹中。
对齐方式固定后,您将需要重新生成面容。这是因为面部图像会由于移动地标而发生变化,因此训练过程将无法找到您修改过的面部。
首先删除您的输出Faces文件夹。您不再想要这种情况。
然后,您可以点击保存图标旁边的文件夹按钮,以直接从路线文件中提取面。
下面列出了一种替代方法,但是如果您已成功从“手动工具”中提取,则可以直接跳至从路线文件中提取训练集
如果打算使用口罩训练或使用“经向地标”,则将路线文件从源帧位置复制到新创建的Faces文件夹中。
从路线文件中提取训练集
现在,您已经清理了路线文件,您可能希望拉出其中一些面以用于转换集。这是一个简单的任务:
导航到“工具”选项卡,然后导航到“路线”子选项卡:
如果打算使用口罩训练或使用“经向地标”,则将路线文件从源帧位置复制到新创建的Faces文件夹中。
合并面集进行训练
因此,您已经准备好要训练的大量面孔,并且有大量有关面孔所来自框架的路线文件。这些可以合并为一个培训资源吗?当然可以!
准备
我们要做的准备一点点合并对齐文件之前:
现在,在GUI中,导航到“工具”选项卡,然后导航至“路线”子选项卡:
完成
过程完成后:
您的训练准备好了
转自:https://forum.faceswap.dev/viewtopic.php?f=5&t=27