菜单

处理管道

相关源文件

Deep-Live-Cam 处理流程是负责面部检测、映射、交换和增强操作的核心工作流。本页面记录了输入(图像、视频和网络摄像头馈送)如何通过系统处理以生成面部交换输出的技术细节。

有关特定面部处理算法的信息,请参阅面部处理。有关视频捕获机制的详细信息,请参阅视频捕获和处理

1. 管道概述

处理流程包含几个顺序阶段,这些阶段将包含面部的输入媒体转换为具有交换面部的输出媒体。该系统支持各种输入类型、配置选项以及可以启用或禁用的处理模块。

来源:modules/core.py178-238 modules/processors/frame/core.py79-84

2. 输入与预处理

流程首先接受以下三种输入类型之一

  1. 单张图像:一张包含待处理面部的静态图像
  2. 视频文件:一个视频文件,从中提取和处理帧
  3. 网络摄像头馈送:来自连接摄像头的实时视频流

2.1 输入验证

在开始处理之前,系统会执行验证以确保输入有效且兼容

来源:modules/core.py164-170 modules/core.py178-200 modules/processors/frame/face_swapper.py30-55

2.2 帧提取

对于视频输入,系统会将单个帧提取到临时目录中

  1. 创建一个临时目录以存储提取的帧
  2. 使用 FFmpeg 从视频中提取帧
  3. 帧作为单独的图像文件保存在临时目录中

来源:modules/core.py201-208

3. 帧处理

输入准备好后,每一帧都将经历一个帧处理器流程。系统使用插件架构,可以启用或禁用不同的处理器。

3.1 帧处理器架构

帧处理器是实现标准接口的模块化组件

来源:modules/processors/frame/core.py11-18 modules/processors/frame/face_swapper.py20-22

3.2 并行处理

对于视频处理,系统利用并行处理来提高性能

  1. 创建一个具有可配置工作线程数的线程池
  2. 帧被分配到各个线程进行并行处理
  3. 使用进度条跟踪和显示进度

来源:modules/processors/frame/core.py69-84

4. 面部处理阶段

流程的核心包含多个面部处理阶段

4.1 面部检测与分析

第一阶段在输入帧中检测和分析面部

  1. 面部分析器使用 InsightFace 检测帧中的面部
  2. 对于每个检测到的面部,都会提取面部特征点和嵌入
  3. 根据配置,面部可以单独处理或批量处理

来源:modules/processors/frame/face_swapper.py101-119

4.2 面部映射

当涉及多个面部时,系统可以进行源面部到目标面部的映射

系统支持两种映射模式

  1. 简单模式:每个源面部直接映射到特定的目标面部
  2. 聚类分析:根据相似度对面部进行分组,并在集群之间进行映射

来源:modules/processors/frame/face_swapper.py123-210

4.3 面部交换

面部交换过程包括

  1. 加载面部交换模型 (inswapper_128_fp16.onnx)
  2. 在源面部和目标面部之间应用交换操作
  3. 可选地应用嘴部遮罩以保留目标嘴部区域
  4. 可选地应用颜色校正以匹配肤色

来源:modules/processors/frame/face_swapper.py70-98 modules/processors/frame/face_swapper.py267-532

4.4 面部增强

如果启用,可以使用面部增强处理器来提高交换后的面部质量

  1. 使用 GFPGAN 模型 (v1.4) 来增强面部细节
  2. 面部交换后应用增强
  3. 增强可提高分辨率和面部特征的质量

来源:models/instructions.txt1-5

5. 输出生成

处理完所有帧后,系统将生成最终输出

5.1 图像输出

对于图像输入,将处理后的图像简单地保存到指定的输出路径。

来源:modules/core.py184-198

5.2 视频输出

对于视频输入,系统会

  1. 从处理后的帧创建视频
  2. 可选地保持原始帧率(或默认为 30 FPS)
  3. 可选地恢复原始音轨
  4. 清理临时文件

来源:modules/core.py215-238

6. 配置选项

流程行为可以通过各种配置选项进行自定义

选项描述默认
keep_fps保持原始视频帧率
keep_audio在输出视频中保留原始音频True
many_faces处理帧中的所有检测到的面部
map_faces启用手动面部映射
mouth_mask保留原始嘴部区域
color_correction匹配面部之间的颜色色调
execution_providers硬件加速选项['cpu']
execution_threads并行处理线程数8

来源:modules/core.py30-83

7. 流程执行提供商

该系统支持多种执行提供商以实现硬件加速

执行提供商的选择基于

  1. 可用硬件
  2. 用户配置
  3. 平台兼容性

来源:modules/core.py112-136 requirements.txt17-18

8. 资源管理

该流程包含用于管理系统资源的机制

  1. 内存限制:根据配置限制最大内存使用量
  2. CUDA 缓存清理:处理后释放 GPU 内存
  3. 临时文件管理:创建和清理临时文件

来源:modules/core.py139-162 modules/core.py241-244

总结

Deep-Live-Cam 处理流程为图像和视频中的面部交换提供了一个灵活高效的框架。其模块化设计允许通过帧处理器进行自定义,同时支持各种硬件加速选项,以在不同平台上实现最佳性能。

该流程处理从输入准备到面部检测、映射、交换、增强,最后到输出生成的整个工作流,并提供大量配置选项来控制该过程。