本页面详细概述了构成 Deep-Live-Cam 系统的关键组件和模块。它解释了这些组件如何协同工作,为应用程序提供换脸和增强功能。
有关高层架构的信息,请参阅 系统架构。有关使用新功能扩展系统的详细信息,请参阅 扩展指南。
Deep-Live-Cam 组织了几个主要组件,它们协同工作以提供换脸功能。下图显示了主要组件及其关系。
来源:modules/core.py modules/ui.py modules/globals.py
核心模块(modules/core.py)作为 Deep-Live-Cam 应用程序的中央协调器。它初始化系统,解析命令行参数,管理资源,并协调处理流程。
主要职责
主要功能
parse_args():处理命令行参数并设置全局配置start():启动处理流程run():初始化系统的主要入口点limit_resources():根据配置限制内存使用来源:modules/core.py31-147 modules/core.py178-239
Globals 模块(modules/globals.py)管理应用程序范围的设置和状态。它存储其他组件访问的配置值、处理标志和文件路径。
关键属性
source_path、target_path、output_path)keep_fps、keep_audio、many_faces)map_faces、color_correction、nsfw_filter)live_mirror、live_resizable、show_fps)该模块还通过 source_target_map 和 simple_map 集合维护换脸功能的 状态。
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
换脸系统允许用户指定要将哪些源人脸映射到哪些目标人脸。此组件包括
主要功能
create_source_target_popup():创建映射 UIupdate_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
摄像头预览提供使用摄像头输入的实时换脸功能。主要功能包括
处理组件负责实际的人脸检测、分析和换脸操作。它们由核心模块协调,但独立运行。
来源: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() 解析并存储在全局模块中。
用户设置存储在 JSON 文件(switch_states.json)中,并在应用程序启动时加载。这包括:
keep_fps、keep_audio 等)map_faces、color_correction 等)live_mirror、live_resizable 等)配置管理的关键函数
save_switch_states():将当前设置保存到 JSON。load_switch_states():在启动时从 JSON 加载设置。Deep-Live-Cam 包含复杂的资源管理功能,以优化跨不同平台和硬件配置的性能。
来源: modules/core.py121-156 modules/core.py112-119 modules/core.py158-161
该系统支持多种执行提供程序以进行神经网络推理:
主要功能
encode_execution_providers() 和 decode_execution_providers():处理用户友好名称和内部提供程序名称之间的转换。suggest_execution_providers():识别系统上可用的提供程序。系统包含用于以下方面的函数:
主要功能
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 的其他部分。