本文档概述了 Faceswap 的三个主要流程:提取(Extract)、训练(Train)和转换(Convert)。这些流程构成了面部交换的核心工作流程管道。本页面将解释每个流程如何工作以及它们如何连接,为理解 Faceswap 系统奠定基础。有关每个特定流程的更详细信息,请参阅 提取管道、训练管道 和 转换管道。
Faceswap 通过三个顺序流程运作,形成一个完整的管道。
来源:faceswap.py34-54 scripts/extract.py30-182 scripts/convert.py65-182
三个流程分别是:
提取(Extract):检测源媒体(图像或视频)中的人脸,使用面部地标进行对齐,并将它们提取为图像文件以及对齐数据。
训练(Train):使用提取的人脸来训练深度学习模型,将一张身份的面部转换为另一张身份的面部。
转换(Convert):使用训练好的模型来交换目标媒体(图像或视频)中的面部,并生成带有交换面部的最终输出。
这三个工作流程在 Faceswap 的命令行界面中被实现为命令。
提取流程在源媒体中识别面部,将它们对齐到一个标准化的位置,并将它们保存为单独的图像文件。
来源:scripts/extract.py30-182 scripts/extract.py619-717 scripts/fsmedia.py59-163
ImagesLoader:从目录加载图像或从视频文件中加载帧。
Extractor Pipeline:用于面部处理的插件链。
Alignments:存储有关检测到的面部的元数据。
输出:
来源:scripts/extract.py30-48 scripts/extract.py181-244 scripts/fsmedia.py59-120
训练流程使用提取的面部来创建模型,该模型能够实现面部身份之间的转换。
Data Loader:加载和预处理提取的面部图像。
Model:用于面部转换的神经网络架构。
Trainer:管理训练过程。
输出:
转换流程将训练好的模型应用于目标媒体中的面部交换。
来源:scripts/convert.py65-182 scripts/convert.py283-722 scripts/convert.py725-907
DiskIO:处理输入读取和输出写入。
Predict:使用训练好的模型生成交换面部。
Converter:对交换后的面部应用后处理。
输出:
来源:scripts/convert.py283-323 scripts/convert.py725-797
三个核心流程设计为顺序运行,但也可以使用现有数据独立运行。
提取 → 训练:
提取 → 转换:
训练 → 转换:
这种模块化设计提供了灵活性:
来源:scripts/extract.py30-48 scripts/convert.py65-107
每个核心工作流程的实现遵循相似的模式。
命令行参数:每个进程通过 argparse 接受特定的参数。
插件系统:动态加载的模块化组件。
基于队列的管道:多线程处理管道。
I/O 处理:用于输入/输出操作的专用类。
来源:scripts/extract.py30-48 scripts/extract.py619-717 scripts/convert.py65-107 scripts/convert.py283-323 scripts/convert.py725-797
以下是使用每个核心工作流程的示例。
提取
训练
转换
Faceswap 的三个核心工作流程——提取(Extract)、训练(Train)和转换(Convert)——构成了完整的面部交换管道。
每个进程都是模块化的,可以通过命令行选项和插件进行自定义,从而灵活地执行面部交换。这些工作流程可以按顺序运行以完成整个面部交换管道,也可以根据需要单独运行。
来源: scripts/extract.py30-48 scripts/convert.py65-107 faceswap.py34-54