菜单

项目结构

相关源文件

目的与范围

本文档提供了 Deep-Live-Cam 项目目录结构、文件组织和代码架构的全面概述。旨在帮助开发人员了解不同组件的位置及其相互关系,从而方便导航和贡献代码库。

有关特定组件及其交互的信息,请参阅 关键组件。有关高级系统架构,请参阅 系统架构

目录结构概览

Deep-Live-Cam 项目遵循模块化组织,具有几个关键目录,分别用于容纳系统的不同方面。

源文件:.gitignore

根目录

根目录包含应用程序的主要入口点和配置文件。

入口点

  • run.py:应用程序的主要 Python 入口点。
  • 特定环境的启动器
    • run-cuda.bat:用于使用 CUDA 加速启动的脚本。
    • run-directml.bat:用于使用 DirectML 加速启动的脚本。
    • run-laptop-gpu.bat:为笔记本电脑 GPU 优化的启动脚本。

配置文件

  • switch_states.json:存储用户配置设置和 UI 状态,跨会话保持。

源文件:.gitignore

模块目录

modules/ 目录包含应用程序的核心功能,并组织成子模块。

子模块目的
core/协调其他模块的核心处理引擎。
face_analyser/处理面部检测、提取和嵌入分析。
processors/包含帧处理组件,如面部交换器和增强器。
utilities/用于文件操作、视频处理等的辅助函数。
ui/用户界面组件和交互。
globals/应用程序中使用的全局配置设置。
video_capture/视频捕获和处理实用程序。
predictor/NSFW 内容检测和过滤。
gettext/国际化支持
cluster_analysis/用于面部聚类和映射的算法。

源文件:.gitignoremodules/__init__.py

处理器模块

modules/processors/ 目录进一步细分为:

子模块目的
frame/core/帧处理器的基类和接口。
frame/face_swapper/面部交换功能实现。
frame/face_enhancer/面部增强功能实现。

源文件:.gitignore

模型目录

models/ 目录存储应用程序使用的神经网络模型。

模型文件目的
inswapper_128.onnx用于面部交换的 ONNX 模型。
GFPGANv1.4.pth用于使用 GFPGAN 进行面部增强的 PyTorch 模型。
DMDNet.pth额外的增强模型。

源文件:.gitignore

Locales 目录

locales/ 目录包含用于国际化的 JSON 文件。

文件目的
*.json不同语言的翻译字符串。

模块关系

下图说明了 Deep-Live-Cam 系统中各个模块之间的关系和依赖关系。

代码与系统映射

下图将系统架构中讨论的自然语言概念映射到其对应的代码实体。

依赖流

此图说明了执行如何从入口点流经系统到各种处理组件。

被忽略的文件和开发工件

.gitignore 文件指出了几个不包含在版本控制中的开发工件和临时文件。

类别被忽略的文件
Python 工件__pycache__/*.py[cod]*$py.class*.pyc
IDE 文件.idea.vscode/
环境.venv/venv/env/tf_env/
临时文件.tmp/temp/*.log*.backup
媒体文件*.png*.mp4*.mkv
模型models/inswapper_128.onnxmodels/GFPGANv1.4.pth*.onnx
配置switch_states.json

这表明模型文件需要在设置过程中单独下载,并且项目支持多种开发环境。

源文件:.gitignore

开发工作流

项目结构支持以下开发工作流程:

  1. 新的帧处理器可以添加到 modules/processors/frame/
  2. UI 组件可以在 modules/ui/ 中扩展。
  3. 新模型可以添加到 models/ 目录。
  4. 可以通过 modules/globals/ 暴露配置选项。

这种模块化结构允许系统的不同方面独立开发和测试,从而促进协作和维护。

外部依赖

该项目依赖于几个集成到代码库中的外部依赖项。

  1. InsightFace:由面部分析器用于面部检测和识别。
  2. ONNX Runtime:为 ONNX 模型提供执行环境。
  3. GFPGAN:面部增强技术。
  4. FFmpeg:视频处理实用程序。
  5. OpenCV:用于图像和视频处理的计算机视觉库。

这些依赖项通过相应的模块集成,而不是直接暴露在顶层项目结构中。

源文件:.gitignore