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 均可 |
| Python | 3.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.txtWindows 用户改用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 模型,耗时不短。利用这段时间搞懂程序对每一帧做了什么——下面四步对每帧都跑一遍:
- 检测:buffalo_l 模型包在目标帧里找脸,算出边界框、关键点和身份向量(可以理解成这张脸的"指纹")
- 生成:inswapper 模型以 128×128 尺寸,把你照片的身份合成进目标脸的结构上。换的只有身份,姿态和表情保持原样
- 贴回:椭圆羽化软掩膜做 alpha 混合,把新脸贴回原帧,避免硬方形边界露馅
- 增强(可选):GFPGAN 把换脸后糊掉的五官细节补回来,用的就是前面放的 gfpgan-1024.onnx
想读源码时,直接对号入座:
| 模块 | 职责 | 源码路径 |
|---|---|---|
| 人脸检测与分析 | 找脸、特征向量、106 点关键点 | modules/face_analyser.py |
| 换脸执行 | 合成新脸、椭圆掩膜贴回 | modules/processors/frame/face_swapper.py |
| 人脸增强 | GFPGAN 提升清晰度 | modules/processors/frame/face_enhancer.py |
| GPU 加速算子 | 模糊/缩放/锐化走 GPU | modules/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 占用和预览窗口都在画面里,可对照自己的机器建立预期:
高频故障对照表:
| 症状 | 原因 | 解法 |
|---|---|---|
打不开窗口,报_tkinter | macOS 缺 tkinter | brew 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),仅供参考