菜单

配置系统

相关源文件

本文档详细介绍了 Faceswap 中使用的配置系统。该配置系统提供了一个灵活、可扩展的机制,用于定义、存储、验证和检索应用程序所有组件的配置选项。该系统通过统一的接口管理全局设置和插件特定的配置。

有关各种工具中可用配置选项的详细信息,请参阅 命令行界面图形用户界面

概述

Faceswap 配置系统围绕 FaceswapConfig 类构建,该类作为基类处理

  • 以 INI 格式加载和保存配置文件
  • 配置值的类型转换和验证
  • 为配置选项提供默认值
  • 随着系统的发展添加新的配置选项
  • 将配置选项组织到逻辑部分
  • 在 GUI 中显示具有适当控件的配置选项

配置系统架构

配置系统由几个关键组件组成,它们协同工作以管理应用程序设置

来源:lib/config.py79-634 plugins/extract/_config.py17-141 plugins/convert/_config.py12-18

配置文件

配置文件以 INI 格式存储,每个文件对应系统的一个主要组件。这些文件通常位于 Faceswap 安装目录的 config 目录中。

来源:lib/config.py265-290 lib/config.py527-532 lib/config.py620-633

配置文件结构

配置文件分为多个部分,每个部分包含相关的配置选项。注释提供了关于每个选项的有用信息,包括描述、可能的值和默认值。

配置文件示例部分

来源:lib/config.py489-520 lib/config.py420-430 plugins/extract/_config.py33-49

核心类

FaceswapConfig

FaceswapConfig 类是配置系统的基础。它提供了定义、加载、验证和访问配置选项的方法。

关键方法

  • set_defaults():必须由子类实现的抽象方法,用于定义默认配置选项
  • add_section():向配置添加一个部分,包含标题和帮助文本
  • add_item():添加一个配置项,包含数据类型、默认值和帮助文本等元数据
  • get():检索具有正确数据类型的配置值
  • save_config():将当前配置保存到文件

来源:lib/config.py79-634

ConfigItem 和 ConfigSection

这些数据类存储有关配置项和部分元数据

  • ConfigItem:存储有关配置选项的信息,包括默认值、数据类型、帮助文本和 GUI 相关元数据
  • ConfigSection:对相关的配置项进行分组,并提供节级别的帮助文本

来源:lib/config.py30-76

配置加载和验证过程

配置系统遵循特定的加载和验证过程

来源:lib/config.py620-633 lib/config.py406-417 lib/config.py522-532 lib/config.py202-235

插件配置系统

配置系统通过标准化机制支持插件特定的配置

插件使用标准化格式定义其配置

来源:lib/config.py139-183 plugins/train/trainer/original_defaults.py44-140

配置数据类型和验证

配置系统支持多种数据类型并进行验证

数据类型描述验证功能
bool布尔值(True/False)从字符串自动转换
int整数值GUI 的最小/最大范围、步长
浮点数浮点数值GUI 的最小/最大范围、小数精度
str字符串值下拉菜单的固定选项
list值列表配置文件中用空格或逗号分隔

每种数据类型都在 get() 方法中包含特定的验证逻辑

来源:lib/config.py202-235 lib/config.py237-263 lib/config.py534-596

在代码中使用配置

在代码中使用配置系统

访问配置

创建自定义配置

来源: plugins/extract/_config.py17-141 plugins/convert/_config.py12-18 plugins/convert/color/_base.py26-36 plugins/convert/scaling/_base.py26-38

特定后端配置

Faceswap 支持多种后端(NVIDIA/CUDA、DirectML、ROCm、Apple Silicon、CPU),具有特定后端要求。

来源: requirements/_requirements_base.txt1-14 requirements/requirements_nvidia.txt1-6 requirements/requirements_directml.txt1-5 requirements/requirements_rocm.txt1-3 requirements/requirements_apple_silicon.txt1-8 requirements/requirements_cpu.txt1-3

本地化支持

配置系统提供配置选项和帮助文本的本地化支持。

来源: plugins/extract/_config.py10-12 plugins/extract/_config.py32 locales/plugins.extract._config.pot1-118

结论

Faceswap 的配置系统提供了一个强大而灵活的框架来管理应用程序和插件的设置。通过集中式配置管理,它确保了应用程序之间的一致性,简化了验证,并可以根据需要轻松地用新的配置选项扩展系统。