菜单

开发者指南

相关源文件

本指南为希望扩展或修改 Deep-Live-Cam 系统的开发者提供了全面的资源。它涵盖了开发环境设置、系统架构、核心组件和扩展模式。

有关项目目录结构和组织的更多信息,请参阅 项目结构。有关关键组件及其交互的详细解释,请参阅 关键组件。有关开发扩展或添加新功能的指南,请参阅 扩展指南

开发环境设置

先决条件

Deep-Live-Cam 要求

依赖项

该项目使用各种深度学习、图像处理和 UI 库

类别关键依赖项
深度学习PyTorch, ONNX Runtime
计算机视觉InsightFace, OpenCV, TensorFlow
UICustomTkinter, Pillow
实用工具NumPy, PSUtil

平台特定的依赖项通过 requirements.txt13-18 中的条件导入进行处理

来源:requirements.txt1-22

所需模型

系统需要在 models 目录中放置两个预训练模型

  • inswapper_128.onnx - 面部交换模型
  • GFPGANv1.4.pth - 面部增强模型

来源:models/instructions.txt1-5

系统架构

代码与概念映射

下图将高层概念映射到特定的代码模块

来源:modules/core.py1-260 modules/processors/frame/core.py1-85

处理流程

下图说明了从初始化到完成的处理流程

来源:modules/core.py178-239 modules/processors/frame/core.py69-85

帧处理器系统

帧处理器系统是 Deep-Live-Cam 的核心扩展机制。它使用插件架构,允许对帧进行模块化处理。

帧处理器接口

每个帧处理器都必须实现此标准接口

来源:modules/processors/frame/core.py12-18

帧处理器加载系统

来源:modules/processors/frame/core.py21-67

执行提供商

Deep-Live-Cam 支持多种执行提供商以实现硬件加速

提供商目标硬件配置
CUDANVIDIA GPUNVIDIA 系统的默认选项
DirectMLWindows 上的 AMD/Intel GPUWindows 系统的替代选项
CoreMLApple SiliconmacOS ARM 上的默认选项
CPU所有系统回退选项

执行提供商系统通过 modules.globals.execution_providers 列表进行管理,并通过 modules/core.py116-118 函数进行处理

来源:modules/core.py112-136

开发扩展

添加新的帧处理器

创建新的帧处理器

  1. modules/processors/frame/ 中创建一个新的 Python 模块
  2. 实现所有必需的接口方法
  3. 在 UI 状态字典 modules.globals.fp_ui 中注册处理器

您的处理器将在从 UI 中选择或包含在命令行参数时被动态加载。

资源管理

Deep-Live-Cam 实现了多种资源管理策略

  1. 通过 limit_resources() 限制内存 modules/core.py139-155
  2. 通过 release_resources() 进行 GPU 内存清理 modules/core.py158-161
  3. 通过受控线程数并行处理 modules/processors/frame/core.py69-76

在开发扩展时,请遵循这些资源管理模式以确保最佳性能。

调试和测试

日志模式

系统使用集中式日志函数 update_status() modules/core.py173-176

  • 打印消息到控制台
  • 在 GUI 模式下运行时更新 UI 状态栏

使用示例

常见问题

问题可能解决方案
ImportError检查所有依赖项是否已正确安装
CUDA 内存不足减少 max_memory 或减少 execution_threads
模型加载失败验证模型是否位于正确的位置和格式
帧处理器错误在您的处理器中实现适当的错误处理

贡献工作流程

  1. 使用所有依赖项设置开发环境
  2. 遵循架构模式进行更改
  3. 使用各种输入(图像、视频、网络摄像头)进行测试
  4. 提交带有描述性提交消息的更改

结论

Deep-Live-Cam 代码库遵循模块化架构,通过帧处理器系统使其具有可扩展性。通过理解本指南中描述的核心组件和接口,开发者可以自信地修改系统或添加新功能。

有关特定组件的更多详细信息,请参阅 关键组件 页面。

来源:modules/core.py1-260 modules/processors/frame/core.py1-85 requirements.txt1-22