本文档介绍了FaceSwap存储库,解释了它的目的、架构和核心组件。FaceSwap是一个开源工具,利用深度学习识别和交换图片和视频中的面孔。
FaceSwap提供了一个完整的换脸流程,围绕三个主要过程进行组织:
该系统采用模块化的插件架构,允许用户为面部检测、对齐、遮罩和模型架构选择不同的实现。FaceSwap支持多个后端(CPU、NVIDIA/CUDA、DirectML、ROCM、Apple Silicon),并提供命令行和图形用户界面。
来源:faceswap.py34-54 README.md84-102
换脸过程遵循一个顺序的三阶段流程:
提取过程(scripts/extract.py)负责:
此过程使用用于面部检测(例如MTCNN、S3FD)、对齐(例如FAN)和遮罩(例如Components、Extended)的插件。
训练过程获取提取的面孔,并训练一个神经网络模型,将一个身份的面孔转换为另一个身份的面孔。该模型学会编码面部特征,转换它们,然后将它们解码回逼真的面孔。
转换过程(scripts/convert.py)将训练好的模型应用于目标媒体中的面孔交换。
来源:scripts/extract.py30-60 scripts/convert.py65-100 USAGE.md36-57
FaceSwap使用插件系统提供模块化和可扩展性。流程的每个阶段都可以使用关键组件的不同实现,由用户选择。
提取插件:
训练插件:
转换插件:
来源:scripts/extract.py61-120 scripts/convert.py283-360 USAGE.md49-57
FaceSwap支持多种后端来运行深度学习操作,使其能够在不同的硬件配置上工作。
系统在设置过程中检测并配置适当的后端。
后端配置存储在 .faceswap 配置文件中,可以通过以下三种方式确定:
FACESWAP_BACKEND 环境变量.faceswap 配置文件来源:setup.py66-144 lib/utils.py35-123
The Alignments 类(scripts/fsmedia.py59-163)处理面部对齐数据的存储和检索,包括:
对齐信息存储在 .fsa 文件中,并由 extract 和 convert 过程使用。
The Images 类(scripts/fsmedia.py166-346)管理图像和视频帧的加载。
转换过程包括几个关键类:
Convert:协调转换过程的主类(scripts/convert.py65-267)DiskIO:处理图像和视频的加载/保存(scripts/convert.py283-722)Predict:应用模型转换面孔(scripts/convert.py725-942)提取过程包括:
Extract:管理提取工作流程的主类(scripts/extract.py30-180)Filter:在启用时处理面部身份过滤(scripts/extract.py182-480)PipelineLoader:管理图像加载到提取流程(scripts/extract.py483-614)FaceSwap提供两种用户交互界面:
命令行界面 (CLI):
faceswap.py 入口点图形用户界面(GUI):
python faceswap.py gui 启动CLI示例
来源:faceswap.py34-54 USAGE.md49-57
FaceSwap通过其三个主要过程:提取(extract)、训练(train)和转换(convert),为图像和视频中的换脸提供了全面的流程。模块化的插件架构允许用户通过选择不同的检测、对齐、遮罩和模型架构实现来定制工作流程。
该系统通过其后端系统支持各种硬件配置,并提供命令行和图形界面以适应不同的用户偏好。如后期处理选项和对不同模型架构的支持等高级功能,使FaceSwap成为一个强大而灵活的换脸工具。