ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Deep-Live-Cam 实时换脸快速上手:如何三步换出换脸直播与批量换脸视频

Deep-Live-Cam 实时换脸快速上手:如何三步换出换脸直播与批量换脸视频

Deep-Live-Cam 实时换脸快速上手:如何三步换出换脸直播与批量换脸视频

【免费下载链接】Deep-Live-Camreal time face swap and one-click video deepfake with only a single image项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam

视频通话或直播时想实时换脸,想把整段视频里的人脸全部换掉?Deep-Live-Cam 是一款开源实时换脸工具:给它一张正脸照片,它就能替换摄像头画面或任意视频里的人脸,输出带原音轨的换脸直播预览和离线换脸视频。全程本地运行,不依赖在线服务。

它的工作机制不复杂:每一帧,程序先认出画面里的脸,再把你照片里的身份"画"回这张脸原有的结构上,最后可选地做一次清晰度增强。

你的电脑够不够格:1 分钟硬件自检

先说结论:没有独显的纯 CPU 机器也能跑,480p–720p 勉强实时;有独显或 Apple 芯片的机器余量更大。对照下面这张表自检:

项目要求
系统Windows / macOS / Linux 均可
Python3.11–3.14,推荐 3.14
必装依赖git、pip、ffmpeg(缺了视频处理直接报错)
硬件纯 CPU 能跑,NVIDIA 显卡或 Apple 芯片更快
Windows 额外项Visual Studio 2022 运行库

git、pip、ffmpeg 三样齐了,就可以进下一节装环境。

从克隆到打开主窗口的 4 步

第 1 步:拿代码

git clone --depth 1 https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam cd Deep-Live-Cam

做完后你会看到 Deep-Live-Cam 目录,里面有run.py和一个空的models/,属正常状态。

第 2 步:建虚拟环境并装依赖

用 venv 隔离,避免污染系统 Python:

python -m venv venv source venv/bin/activate pip install -r requirements.txt

Windows 用户改用venv\Scripts\activate激活。macOS 用户要额外补图形库,缺了 GUI 打不开、会报_tkinter错误:

brew install python@3.14 brew install python-tk@3.14

装完执行pip list,能看到 opencv、onnxruntime、insightface 这批依赖,说明环境就绪。

第 3 步:放模型文件(可选)

不想等首次自动下载,就把inswapper_128_fp16.onnx(换脸)和gfpgan-1024.onnx(增强)下载后放进models/,下载地址写在 models/instructions.txt 里。不放也行——首次运行会自动下载约 300MB 模型,等着就好。

ls models/

第 4 步:启动

python run.py

做完后主窗口打开,状态栏开始加载模型。窗口布局一眼能看懂:上方左边选源人脸照片,右边选目标(视频文件或摄像头);中间一排开关(Keep audio、Many faces、Face Enhancer 等);下方是 Start 和 Live 两个按钮。视线动线就三条:选源照片 → 选目标 → 按按钮。

一帧画面里发生了什么:换脸流水线四步

首次运行要下载约 300MB 模型,耗时不短。利用这段时间搞懂程序对每一帧做了什么——下面四步对每帧都跑一遍:

  1. 检测:buffalo_l 模型包在目标帧里找脸,算出边界框、关键点和身份向量(可以理解成这张脸的"指纹")
  2. 生成:inswapper 模型以 128×128 尺寸,把你照片的身份合成进目标脸的结构上。换的只有身份,姿态和表情保持原样
  3. 贴回:椭圆羽化软掩膜做 alpha 混合,把新脸贴回原帧,避免硬方形边界露馅
  4. 增强(可选):GFPGAN 把换脸后糊掉的五官细节补回来,用的就是前面放的 gfpgan-1024.onnx

想读源码时,直接对号入座:

模块职责源码路径
人脸检测与分析找脸、特征向量、106 点关键点modules/face_analyser.py
换脸执行合成新脸、椭圆掩膜贴回modules/processors/frame/face_swapper.py
人脸增强GFPGAN 提升清晰度modules/processors/frame/face_enhancer.py
GPU 加速算子模糊/缩放/锐化走 GPUmodules/gpu_processing.py
摄像头读取抽帧、编码modules/video_capture.py
命令行入口参数解析、流水线调度modules/core.py

普通使用完全不需要改它们。

两种用法:摄像头实时换脸与视频离线批量

用法 A:摄像头实时换脸三步走

① 选一张源人脸照片——要求就三条:正脸、光线均匀、脸上无遮挡。口罩、贴纸、逆光都会拖累检测;人脸在画面里占比大些更稳。

② 选摄像头——程序会自动挑当前环境里最快的推理后端,你不用管。

③ 按 Live——首次加载要等 10–30 秒,预览出来后换脸即生效。要换人,重新选一张源照片就行。

想推流,用 OBS 对预览窗口做窗口捕获即可;推出去的画面方向反了,加--live-mirror调一下;想调清晰度,拖动 Face Enhancer 开关。

用法 B:一条命令跑完视频换脸

不想开窗口,命令行可以整段视频一次换完:

python run.py -s face.jpg -t clip.mp4 --keep-audio --keep-fps

跑完终端会显示逐帧处理进度,最后合成输出视频。常用参数含义如下:

参数含义
-s/--source源脸照片
-t/--target目标视频(图片也可以)
--keep-audio保留原片音轨(默认开启,写上更保险)
--keep-fps保持原始帧率
--video-encoder libx265换编码器出更小文件,可选 libx264 / libx265 / libvpx-vp9
--many-faces处理画面里每一张脸
--map-faces把每张脸映射到不同源脸
--mouth-mask保留原画面嘴部区域
--max-memory内存占用上限(GB)
--nsfw-filter启用 NSFW 内容过滤

⚠️ 输出在哪?存进了一个以目标视频命名的文件夹——这是新手最常找不到的地方,去源视频旁边的clip.mp4目录里找。

推理后端怎么选 + 高频故障速查

--execution-provider决定算在哪个芯片上。不写任何参数时,程序自动选当前环境里最好的后端,新手直接python run.py即可。清楚自己硬件的,照表对一行:

你的硬件做法
无独显 / 核显什么都不加,python run.py
NVIDIA 显卡装 CUDA Toolkit 12.8.0 + cuDNN v8.9.7(bin 目录加进 PATH),pip install onnxruntime-gpu==1.26.0,再加--execution-provider cuda
Apple M1–M5依赖里已含 CoreML 支持,python3.14 run.py --execution-provider coreml
Intel 平台pip install onnxruntime-openvino==1.21.0,加--execution-provider openvino
Windows + AMD 核显pip install onnxruntime-directml==1.21.0,加--execution-provider dml

装完重启程序验证。下面是普通 PC(无独显)上的实际表现,CPU/GPU 占用和预览窗口都在画面里,可对照自己的机器建立预期:

高频故障对照表:

症状原因解法
打不开窗口,报_tkintermacOS 缺 tkinterbrew reinstall python-tk@3.14
提示 ffmpeg 缺失没装或不在 PATH装好后用ffprobe -version验证
状态栏找不到 inswapper 模型models/ 缺文件等首次自动下载完,或手动放入模型
有 GPU 却退回 CPU 跑cuDNN 不在 PATH 或版本不对装 cuDNN v8.9.7 +pip install onnxruntime-gpu==1.26.0
预览明显掉帧内存吃紧或增强开着降--max-memory,关掉 Face Enhancer
预览方向反了摄像头镜像习惯不同python run.py --live-mirror

表里没覆盖的情况,先看窗口状态栏的红色报错文字,再检查models/目录是否完整。

进阶玩法:两个常见实际问题的解法

Mouth Mask:说话口型不穿帮

源脸和你本人的嘴型差很多时,整脸替换后口型对不上原画面。打开 Mouth Mask(GUI 开关或--mouth-mask),程序会把下半张脸的嘴部区域留给你自己,只换其余部分——说话时口型自然一致。

Many Faces + Map Faces:群里每人换不同的脸

群像场景里,不加参数时每个人都会变成同一张脸。加--many-faces处理画面里每一张脸;再加--map-faces,程序先用特征向量聚类把目标里的人自动分组(类似按头像把人分到不同群),然后你做"谁换谁"的绑定:

python run.py -s face.jpg -t group.mp4 --many-faces --map-faces

跑完,群里每个人对应自己绑定的脸。

红线与下一步

实时换脸能力很强,以下四件事不能碰:

  • 只换自己的脸,或已明确取得本人同意的脸
  • 公开发布时标注"AI 合成 / deepfake"
  • 不用于诈骗、冒充、诽谤等任何欺骗目的
  • 不处理战争画面、隐私场景等敏感素材

程序自身也内置了 opennsfw2 内容过滤(GUI 勾选 NSFW 或--nsfw-filter),会自动拦截不当素材。

现在就可以动手:python run.py跑起来,选一张自己的正脸照片,点 Live,等 10–30 秒,你的第一段实时换脸预览就会出现在屏幕上。想继续深入,从 README.md 的完整参数列表和 models/instructions.txt 的模型说明开始看。

【免费下载链接】Deep-Live-Camreal time face swap and one-click video deepfake with only a single image项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进