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 是一个开源实时换脸工具:给它一张正脸照片,摄像头或视频画面里的人就会被换成照片里那张脸,全程本地计算。跟着本文走,大约 15 分钟能跑通安装、摄像头实时换脸和视频批量处理。
环境自查:这台机器能不能跑起来
先对照这张表,缺哪项补哪项:
| 项目 | 要求 |
|---|---|
| 系统 | Windows / macOS / Linux 均可 |
| Python | 3.11–3.14,推荐 3.14 |
| 必装工具 | git、pip、ffmpeg(缺 ffmpeg 程序会直接提示 "ffmpeg is not installed" 并拒绝启动) |
| Windows 额外项 | Visual Studio 2022 运行库 |
| 硬件 | 无独显也能跑,NVIDIA 独显或 Apple M 系列芯片更快 |
纯 CPU 模式下,默认 640×480 的摄像头分辨率基本能跟上实时速度,足够你体验全部功能;下图中无独显 PC 的实测画面(含 CPU 占用与预览窗口)可以当作性能参照:
最小安装路径:4 条命令到主窗口
克隆代码
git clone --depth 1 https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam cd Deep-Live-Cam成功标志:当前目录出现
Deep-Live-Cam文件夹,里面有run.py、requirements.txt、models/、modules/。建虚拟环境并激活
python -m venv venv激活方式:Windows 执行
venv\Scripts\activate,macOS / Linux 执行source venv/bin/activate。成功标志:命令行开头多出
(venv)前缀。依赖装在 venv 里,不会弄脏系统 Python。安装依赖
pip install -r requirements.txt成功标志:结尾出现 "Successfully installed ...",且没有红色 ERROR 行。
启动
python run.py成功标志:主窗口打开——左侧选源脸照片、右侧选目标视频或摄像头,中间一排开关和滑块,底部是 Start 和 Live 两个按钮。
两步可选增强,不做也没关系:
- 模型文件:首次运行会自动下载约 300MB 模型(控制台有进度条),只是头一次启动慢。想手动处理,把
inswapper_128_fp16.onnx(换脸核心)和gfpgan-1024.onnx(细节增强)放进models/目录,下载地址写在 models/instructions.txt。 - GPU 后端:不配置时程序会自动挑当前环境里最好的(cuda > rocm > coreml > openvino > dml > cpu 依次优选);只有自动选择不符合预期时才需要手动加
--execution-provider,各平台做法见文末表格。
平台差异说明:
- Windows:激活命令是
venv\Scripts\activate,提前装好 Visual Studio 2022 运行库。 - macOS:先
brew install python@3.14和brew install python-tk@3.14,再用python3.14 -m venv venv建环境,避免用到系统旧版 Python。 - macOS 若报
_tkinter错误:brew reinstall python-tk@3.14。 - Linux:流程与 macOS 一致,
source venv/bin/activate激活即可。
三个换脸场景,由浅入深
摄像头实时换脸:选照片、选相机、按 Live
目标:你对着摄像头说话时,画面里的人实时变成源照片里的人,预览窗口可被 OBS 捕获推流。
操作:
python run.py打开主窗口,选择一张源人脸照片。照片讲究:正对镜头、光线均匀、无口罩贴纸等遮挡,逆光会拉低检测率,人脸在画面里占比越大越稳。- 在摄像头列表里选你要用的那台相机。用哪块芯片计算由程序自动决定,不用你配。
- 按Live。
验证:首次按下 Live 后,程序加载模型需要 10–30 秒,等预览窗口出现活动画面,换脸就生效了。想换人?重新选一张源照片即可,不必重启程序。
口型不穿帮(Mouth Mask):源脸的嘴型和你的不一样时,整脸替换会让口型对不上。把 GUI 里 Mouth Mask 滑块从 0 往右拖(0 为关闭,数值越大保留区域从嘴向下巴延伸越多),命令行对应--mouth-mask参数。程序只换上半张脸,嘴部区域留给原主人,说话口型自然一致。
推流直播:用 OBS 对预览窗口做窗口捕获即可推出去。预览默认是镜像的(像前置摄像头),推出去的画面方向不对时,启动参数加--live-mirror调正。
视频文件批量换脸:一条命令跑完整段,保留音轨帧率
目标:整段视频一次处理完,输出保留原音轨和原帧率。
操作:终端里直接跑(不想开窗口就用这条):
python run.py -s face.jpg -t clip.mp4 -o out/ --keep-fps-s face.jpg:源脸照片,支持 .png / .jpg / .jpeg / .bmp / .webp-t clip.mp4:目标视频,支持 .mp4 / .mkv-o out/:输出目录;不指定时使用默认输出位置--keep-fps:输出帧率与原片一致,不加的话输出按 30fps 编码
注意两点:保留音轨是默认开启的(--keep-audio默认开),写上更保险;带-s/-t参数时程序走命令行模式,不弹窗口。
也可以走 GUI:选源照片 → 选目标视频 → 按 Start。
验证:状态栏出现 "Video processing succeeded! Total time: xxxs"。成品保存在以目标视频命名的文件夹里,文件名形如"源照片名-目标视频名.mp4",不在原片旁边,别白找。打开成品:画面里的人已换掉,音轨正常,帧率与原片一致。
多人脸映射:群里每个人换不同的脸
目标:群像画面里不同的人物绑定不同的源照片,各换各的,而不是所有脸都换成同一张。
操作:两个开关配合使用:
--many-faces:处理画面里的每一张脸(不配合映射时,全部换成同一张源脸,适合"给一群人统一换脸"的玩法)--map-faces:程序先按身份向量把目标画面里的人自动分组,再逐人绑定"谁换哪张照片"。GUI 里打开 Map faces 开关后会弹出映射窗口,为每个人挑选源照片
python run.py -s face.jpg -t group.mp4 -o out/ --many-faces --map-faces验证:输出视频里每个人对应各自绑定的脸,且同一人在前后帧之间保持稳定。
提示:开启 face mapping 后,视频处理会切换到基于磁盘的流水线(逐帧存盘再回贴),长视频比单脸模式更慢,属正常现象。
原理速览:一帧画面经过的 5 个工位
理解下面这条流水线就够,普通使用完全不用动代码:
- 检测:输入一帧画面,buffalo_l 模型包(首次运行自动下载)输出人脸边界框、106 点关键点、身份向量。身份向量就是用来认人的"指纹",多人映射的分组靠它。
- 合成:拿源脸的身份向量和目标脸的结构,inswapper 模型以 128×128 分辨率合成出新脸。
- 贴回:新脸通过椭圆羽化软掩膜贴回原帧,附带肤色校正,边缘与周围融合,不会出现硬方框。
- 增强(可选):GFPGAN 或 GPEN 模型把换脸过程中糊掉的五官细节补回来,就是 GUI 里的 Face Enhancer。
- 合成输出:ffmpeg 把处理后的帧重新编码成视频,并把原音轨贴回去。
想翻源码时,对照这张表:
| 模块 | 职责 | 仓库路径 |
|---|---|---|
| 人脸检测与分析 | 找脸、106 点关键点、身份向量 | modules/face_analyser.py |
| 换脸执行 | inswapper 合成、椭圆软掩膜贴回、口型遮罩 | modules/processors/frame/face_swapper.py |
| 人脸增强 | GFPGAN/GPEN 模型补细节 | modules/processors/frame/face_enhancer.py |
| 摄像头采集 | 抽帧、测帧率、帧回调 | modules/video_capture.py |
| 视频拼装 | ffmpeg 抽帧、编码、音频恢复 | modules/utilities.py |
| NSFW 内容检查 | 拦截不合规素材 | modules/predicter.py |
| 参数与调度 | 参数解析、后端自动选择、流水线调度 | modules/core.py |
| 模型下载 | 自动下载、断点续传、证书校验 | modules/model_downloader.py |
故障快查:对症状,再找解法
| 症状 | 原因 | 解法 |
|---|---|---|
| 启动即提示 "ffmpeg is not installed" | ffmpeg 没装,或不在 PATH 里 | 装好 ffmpeg,用ffprobe -version验证能输出版本 |
macOS 窗口打不开,报_tkinter错误 | 缺 tkinter 图形库 | brew reinstall python-tk@3.14 |
| 状态栏提示找不到模型 | models/目录为空 | 等首次自动下载(约 300MB)完成,或手动放入inswapper_128_fp16.onnx和gfpgan-1024.onnx |
| 有独显却退回 CPU 跑 | cuDNN 不在 PATH,或 onnxruntime-gpu 版本不对 | 装 CUDA 12.8.0 + cuDNN v8.9.7,pip install onnxruntime-gpu==1.26.0,启动加--execution-provider cuda |
| 预览一片黑窗 | 摄像头被别的程序占用,或模型还在加载 | 关掉占摄像头的程序,等状态栏提示就绪 |
| 预览明显掉帧 | 内存吃紧或增强开着 | 调低--max-memory(默认 16GB,macOS 为 4GB),关掉 Face Enhancer,或调小--det-size(默认 640) |
| 输出帧率和原片对不上 | 没加--keep-fps | 命令里补上--keep-fps |
| 预览方向反了 | 摄像头镜像习惯不同 | 启动参数加--live-mirror |
按芯片选加速后端:
| 平台 | 做法 |
|---|---|
| 无独显 / 核显 | 什么都不加,直接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 支持,直接加--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 |
使用边界:四条红线
- 只换自己的脸,或已明确取得本人同意的脸
- 公开发布时标注"AI 合成 / deepfake"
- 不用于诈骗、冒充、诽谤等任何欺骗目的
- 不处理战争画面、隐私场景等敏感素材;程序内置 NSFW 内容过滤(GUI 开关列表里启用 NSFW 过滤,或命令行加
--nsfw-filter),项目的合规立场写在 README.md 的 Disclaimer 部分
收尾:最短上手路径
跑通git clone和pip install -r requirements.txt两条命令后,python run.py打开窗口,放一张自己的正脸照片,按 Live,10–30 秒内就能看到第一段实时换脸效果。
想深入时翻这几个文件:
- README.md:完整安装、GPU 加速与参数说明
- models/instructions.txt:模型下载地址
- CONTRIBUTING.md:项目协作与质量规范
- modules/core.py:命令行参数与流水线调度入口
【免费下载链接】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),仅供参考