一、项目概述
DeepFaceLive 是一个实时人脸换脸和处理应用,采用 Python 开发,使用 PyQt6 作为 GUI 框架,支持多种 AI 模型进行人脸检测、标记、交换和动画处理。
二、技术栈详解
2.1 前端/客户端技术
| 技术 | 版本 | 用途 |
|---|---|---|
| PyQt6 | 6.5.1 | 主要 GUI 框架 |
| xlib.qt | 自研 | Qt 组件封装库 |
| OpenGL | - | 硬件加速渲染 |
核心 UI 组件:
QCameraSource.py- 相机源配置界面QFaceDetector.py- 人脸检测参数配置QFaceMarker.py- 人脸标记配置QFaceMerger.py- 人脸融合配置QFaceSwapDFM.py/QFaceSwapInsight.py- 换脸模块QFaceAnimator.py- 人脸动画控制QFrameAdjuster.py- 帧调整设置QStreamOutput.py- 流输出配置
2.2 后端技术
| 技术 | 版本 | 用途 |
|---|---|---|
| Python | 3.8.10 | 编程语言 |
| PyTorch | 1.13.1+cu117 | 深度学习框架 |
| ONNX Runtime | 1.15.1 | 模型推理引擎 |
| OpenCV | 4.8.0.74 | 计算机视觉 |
| NumPy | 1.21.6 | 数值计算 |
| FFmpeg | - | 视频/音频处理 |
后端处理模块:
backend/
├── FaceDetector.py # 人脸检测器(支持 CenterFace, S3FD, YoloV5Face)
├── FaceMarker.py # 人脸关键点标记(LBF, 2D/3D landmarks)
├── FaceMerger.py # 人脸融合
├── FaceSwapDFM.py # DeepFaceLab 模型换脸
├── FaceSwapInsight.py # InsightFace 模型换脸
├── FaceAnimator.py # 人脸动画(LIA 模型)
├── FaceAligner.py # 人脸对齐
├── CameraSource.py # 相机输入源
├── FileSource.py # 文件输入源
└── StreamOutput.py # 流输出(虚拟摄像头/文件/RTMP)
2.3 AI 模型支持
modelhub/
├── onnx/
│ ├── CenterFace/ # 轻量级人脸检测
│ ├── S3FD/ # 高精度人脸检测
│ ├── YoloV5Face/ # YOLO 人脸检测
│ ├── InsightFaceSwap/ # InsightFace 换脸
│ ├── LIA/ # 实时人脸动画
│ └── GFPGAN/ # 人脸增强
├── torch/
│ ├── CenterFace/
│ ├── S3FD/
│ └── FaceAligner/ # 人脸对齐
└── cv/
└── FaceMarkerLBF/ # LBF 人脸标记
三、架构设计模式
3.1 前后端分离架构
┌─────────────────────────────────────────────────────────┐
│ PyQt6 UI 层 │
│ (用户交互、参数配置、实时预览、信号处理) │
└────────────────────┬────────────────────────────────────┘
│ BackendConnection
│ (pickle 序列化通信)
┌────────────────────┴────────────────────────────────────┐
│ Backend 处理层 │
│ (AI 推理、图像处理、多进程并行) │
└─────────────────────────────────────────────────────────┘
3.2 数据流处理流程
输入源 → 人脸检测 → 人脸标记 → 人脸处理 → 输出
↓ ↓ ↓ ↓ ↓
Camera Detector Marker Swap/Anim Preview/File
File (ONNX) (LBF) (DFM/ Stream
/3D) Insight)
3.3 自研 xlib 框架
xlib/
├── qt/ # PyQt 组件封装
│ ├── QXWidget # 基础组件
│ ├── QXLabel # 标签
│ ├── QXButton # 按钮
│ ├── QXSlider # 滑块
│ └── QXOpenGLWidget # OpenGL 渲染
├── mp/ # 多进程通信
├── cv/ # 计算机视觉工具
├── face/ # 人脸处理核心
│ ├── Faceset # 人脸集合管理
│ ├── FaceWarper # 人形变
│ └── FLandmarks2D # 2D 关键点
├── avecl/ # 向量计算加速
└── image/ # 图像处理工具
四、魔改建议
4.1 性能优化方向
建议 1:升级到更新的深度学习框架
# 当前使用 PyTorch 1.13.1 (2022年)
# 建议:
- 升级到 PyTorch 2.x (torch.compile 加速)
- 使用 TensorRT 进行 ONNX 模型加速
- 添加 OpenVINO 支持以优化 Intel CPU 推理
建议 2:优化多进程架构
# 当前使用 pickle 序列化通信
# 建议:
- 使用 SharedMemory 减少数据拷贝
- 实现零拷贝的帧传递机制
- 添加 GPU 直通渲染 (OpenGL interop)
建议 3:添加模型量化支持
# 建议:
- 添加 INT8/FP16 量化选项
- 实现 ONNX 动态量化
- 支持 TensorRT FP16 模式
4.2 功能扩展方向
建议 4:新增人脸增强模块
创建新文件:
- backend/FaceEnhancer.py
- ui/QFaceEnhancer.py
集成模型:
- CodeFormer (人脸修复)
- RestoreFormer (高质量复原)
- Real-ESRGAN (超分辨率)
建议 5:添加表情控制模块
创建新文件:
- backend/FaceExpression.py
- ui/QFaceExpression.py
功能:
- Audio2Face (音频驱动表情)
- Emotion Control (情绪控制)
- Face Reenactment (人脸重演)
建议 6:支持多人脸场景
# 当前主要针对单张人脸
# 建议:
- 添加多人脸检测和追踪
- 实现人脸 ID 关联
- 支持选择性换脸
4.3 架构重构方向
建议 7:插件系统改造
# 创建插件接口:
xlib/
├── plugin/
│ ├── __init__.py
│ ├── IPlugin.py # 插件接口定义
│ ├── PluginManager.py # 插件管理器
│ └── registry/ # 插件注册表
# 支持动态加载模型和处理器
建议 8:Web 界面支持
添加:
- FastAPI 后端服务
- Vue.js/React 前端界面
- WebSocket 实时通信
- 远程控制和预览
建议 9:配置文件系统
# 创建项目配置格式
config.yaml:
models:
detector: YoloV5Face
marker: LBF_68
swap: InsightFace
enhancer: CodeFormer
performance:
device: cuda:0
batch_size: 1
resolution: 720p
output:
virtual_camera: true
save_file: false
4.4 具体实施路径
阶段一:快速见效(1-2周)
- 添加 GFPGAN 人脸增强模块
- 实现 GPU 内存自动释放
- 添加预设配置保存/加载
阶段二:核心优化(1-2月)
- 升级到 PyTorch 2.x
- 实现零拷贝帧传递
- 添加 TensorRT 加速
阶段三:架构升级(2-3月)
- 设计插件系统
- 开发 Web 界面
- 支持多人脸场景
4.5 推荐优先级
| 优先级 | 改进项 | 难度 | 收益 |
|---|---|---|---|
| 🔴 高 | 添加 GFPGAN/CodeFormer 增强 | 低 | 高 |
| 🔴 高 | GPU 内存优化 | 中 | 高 |
| 🟡 中 | PyTorch 2.x 升级 | 中 | 中 |
| 🟡 中 | 配置文件系统 | 低 | 中 |
| 🟢 低 | Web 界面 | 高 | 中 |
| 🟢 低 | 插件系统 | 高 | 低 |
五、关键文件索引
| 文件 | 功能 | 重要性 |
|---|---|---|
main.py | 程序入口 | ⭐⭐⭐ |
xlib/mp/mp.py | 多进程通信 | ⭐⭐⭐ |
backend/FaceDetector.py | 人脸检测 | ⭐⭐⭐ |
backend/FaceSwapInsight.py | InsightFace 换脸 | ⭐⭐⭐ |
xlib/qt/QXApplication.py | QT 应用框架 | ⭐⭐ |
modelhub/onnx/InsightFaceSwap/ | 换脸模型 | ⭐⭐ |
六、技术栈总结
- 客户端框架: PyQt6 (Python Qt 绑定)
- AI 推理: PyTorch + ONNX Runtime
- 图像处理: OpenCV + NumPy
- 架构模式: 前后端分离 + 多进程
- 核心优势: 自研 xlib 框架,模块化设计良好
- 改进空间: 框架版本较旧,可引入更多优化技术
分析日期: 2026-01-21