菜单

关键组件

相关源文件

本页面详细概述了构成 Deep-Live-Cam 系统的关键组件和模块。它解释了这些组件如何协同工作,为应用程序提供换脸和增强功能。

有关高层架构的信息,请参阅 系统架构。有关使用新功能扩展系统的详细信息,请参阅 扩展指南

核心系统组件

Deep-Live-Cam 组织了几个主要组件,它们协同工作以提供换脸功能。下图显示了主要组件及其关系。

来源:modules/core.py modules/ui.py modules/globals.py

核心模块

核心模块(modules/core.py)作为 Deep-Live-Cam 应用程序的中央协调器。它初始化系统,解析命令行参数,管理资源,并协调处理流程。

主要职责

  • 应用程序初始化和命令行解析
  • 资源管理(内存限制、GPU 利用率)
  • 处理流程编排
  • 文件操作管理

主要功能

  • parse_args():处理命令行参数并设置全局配置
  • start():启动处理流程
  • run():初始化系统的主要入口点
  • limit_resources():根据配置限制内存使用

来源:modules/core.py31-147 modules/core.py178-239

Globals 模块

Globals 模块(modules/globals.py)管理应用程序范围的设置和状态。它存储其他组件访问的配置值、处理标志和文件路径。

关键属性

  • 文件路径(source_pathtarget_pathoutput_path
  • 处理选项(keep_fpskeep_audiomany_faces
  • 功能标志(map_facescolor_correctionnsfw_filter
  • UI 设置(live_mirrorlive_resizableshow_fps

该模块还通过 source_target_mapsimple_map 集合维护换脸功能的 状态

来源:modules/globals.py12-44

用户界面组件

UI 模块(modules/ui.py)通过使用 CustomTkinter 构建的可自定义 GUI 处理所有用户交互。它提供了用于源/目标选择、处理配置和结果预览的窗口。

来源:modules/ui.py81-382 modules/ui.py418-484 modules/ui.py538-555

主应用程序窗口

主窗口提供以下控件

  • 源文件和目标文件选择
  • 处理选项配置
  • 摄像头模式下的摄像头选择
  • 执行按钮(开始、预览、实时)

关键 UI 元素

  • 源/目标图像显示
  • 处理选项开关
  • 状态指示器
  • 操作按钮

配置设置会自动保存到 switch_states.json,并在启动时加载。

来源:modules/ui.py137-382 modules/ui.py93-110 modules/ui.py113-134

预览窗口

预览窗口显示了在处理整个视频之前换脸的结果。它允许用户

  • 查看处理后的帧
  • 对于视频,使用滑块在帧之间导航
  • 在进行完整处理之前评估换脸质量

来源:modules/ui.py538-555 modules/ui.py740-777

换脸界面

换脸系统允许用户指定要将哪些源人脸映射到哪些目标人脸。此组件包括

  • 用于选择源人脸和目标人脸的 UI
  • 所选人脸的预览
  • 换脸管理功能

主要功能

  • create_source_target_popup():创建映射 UI
  • update_popup_source():更新映射中的源人脸
  • 用于摄像头换脸的功能:create_source_target_popup_for_webcam()update_webcam_source()update_webcam_target()

来源:modules/ui.py418-484 modules/ui.py486-535 modules/ui.py963-1206

摄像头预览

摄像头预览提供使用摄像头输入的实时换脸功能。主要功能包括

  • 摄像头选择
  • 实时换脸预览
  • FPS 显示
  • 镜像模式选项

来源:modules/ui.py780-961

处理组件

处理组件负责实际的人脸检测、分析和换脸操作。它们由核心模块协调,但独立运行。

来源:modules/core.py178-239 modules/ui.py764-777 modules/ui.py889-926

帧处理器

帧处理器是执行换脸和增强的核心组件。这些处理器遵循插件架构

  • get_frame_processors_modules() 动态加载指定的帧处理器
  • 每个处理器都实现了 process_frame()process_frame_v2() 方法。
  • 可以通过用户界面或命令行标志来开启/关闭处理器。

关键帧处理器

  • 换脸器:将目标中的人脸替换为选定的源人脸。
  • 人脸增强器:在换脸后提高人脸的质量。

来源: modules/core.py179-180 modules/ui.py764-769 modules/ui.py889-926

人脸分析系统

人脸分析器组件负责

  • 检测图像和视频帧中的人脸。
  • 提取人脸嵌入以进行人脸识别。
  • 促进源和目标之间的人脸映射。

主要功能

  • get_one_face():从图像中提取单个人脸。
  • get_unique_faces_from_target_image()get_unique_faces_from_target_video():从目标中提取所有唯一人脸。
  • 人脸映射函数,可实现源人脸与目标人脸的匹配。

来源: modules/ui.py12-19 modules/ui.py403-407 modules/ui.py505-514

配置和状态管理

Deep-Live-Cam 结合使用命令行参数、全局变量和持久存储来管理配置和状态。

来源: modules/globals.py12-44 modules/core.py31-87 modules/ui.py93-134

命令行界面

该系统支持全面的命令行界面,用于无头操作或脚本集成。命令行选项包括:

  • 输入/输出路径指定(-s-t-o
  • 处理选项(--frame-processor--keep-fps--keep-audio
  • 功能标志(--many-faces--map-faces--nsfw-filter
  • 性能设置(--max-memory--execution-provider--execution-threads

命令行参数由核心模块中的 parse_args() 解析并存储在全局模块中。

来源: modules/core.py31-87

持久化配置

用户设置存储在 JSON 文件(switch_states.json)中,并在应用程序启动时加载。这包括:

  • 处理选项(keep_fpskeep_audio 等)
  • 功能标志(map_facescolor_correction 等)
  • 用户界面偏好设置(live_mirrorlive_resizable 等)

配置管理的关键函数

  • save_switch_states():将当前设置保存到 JSON。
  • load_switch_states():在启动时从 JSON 加载设置。

来源: modules/ui.py93-134

平台和资源管理

Deep-Live-Cam 包含复杂的资源管理功能,以优化跨不同平台和硬件配置的性能。

来源: modules/core.py121-156 modules/core.py112-119 modules/core.py158-161

执行提供程序管理

该系统支持多种执行提供程序以进行神经网络推理:

  • CPU:通用回退选项。
  • CUDA:适用于 NVIDIA GPU。
  • DirectML:适用于 Windows GPU。
  • CoreML:适用于 Apple Silicon。
  • ROCm:适用于 AMD GPU。

主要功能

  • encode_execution_providers()decode_execution_providers():处理用户友好名称和内部提供程序名称之间的转换。
  • suggest_execution_providers():识别系统上可用的提供程序。

来源: modules/core.py112-136

内存和线程管理

系统包含用于以下方面的函数:

  • 根据平台和用户配置限制内存使用。
  • 为不同的执行提供程序设置适当的线程参数。
  • 处理任务后释放 GPU 内存。

主要功能

  • limit_resources():设置内存限制并配置 TensorFlow。
  • release_resources():在需要时清除 CUDA 缓存。
  • suggest_max_memory()suggest_execution_threads():根据平台提供合理的默认值。

来源: modules/core.py139-161 modules/core.py121-136

组件交互总结

以下图表说明了在典型的换脸操作中,关键组件是如何交互的。

来源: modules/core.py178-239 modules/ui.py740-961

此组件交互概述为理解 Deep-Live-Cam 的工作原理及其各个部分如何交互奠定了基础。有关特定组件的更详细信息,请参阅此开发者 wiki 的其他部分。