ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

Deep-Live-Cam 实时换脸上手指南:一张照片,5 分钟跑通本地 Deepfake 工具

Deep-Live-Cam 实时换脸上手指南:一张照片,5 分钟跑通本地 Deepfake 工具

Deep-Live-Cam 实时换脸上手指南:一张照片,5 分钟跑通本地 Deepfake 工具

【免费下载链接】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 是一款开源的实时换脸工具:丢给它一张正脸照片,就能在摄像头画面或视频里把脸实时替换掉,全程在本机运行,不经过任何在线服务,不花一分钱。新手按这篇走完,能拿到自己的实时换脸预览;想批量处理视频的人,能直接抄走完整的命令行参数。

5 分钟出画面:最短启动路径

不用先懂原理,按顺序敲下面这 6 行:

git clone --depth 1 https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam cd Deep-Live-Cam python -m venv venv source venv/bin/activate # Windows 改用 venv\Scripts\activate pip install -r requirements.txt python run.py

主窗口弹出来后,选源脸照片 → 选摄像头 → 按Live,等 10–30 秒,换脸预览就出现了。哪一行报错,就跳到下文对应的"安装四步"或"报错速查"一节找解法。

跑之前先自查:这台机器够不够

必选项,缺一个就跑不起来:

  • Python 版本在 3.11–3.14 之间(官方推荐 3.14),python --version可查
  • 装了 git 和 pip(克隆仓库、装依赖要用)
  • 装了 ffmpeg,且终端里ffprobe -version能打印版本号——视频模式依赖它处理画面和音轨
  • 仅 Windows:装好 Visual Studio 2022 运行库

可选项,只影响快慢,不影响能不能跑:

  • 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
  • 一样都不装:不加任何参数,程序会自动挑当前环境里最快的后端

没有独显的纯 CPU 机器也出得了画面,480p–720p 勉强实时,看预览没问题;有显卡则更顺滑。

安装四步:每步都有"算装好了"的标准

第 1 步:克隆仓库 + 建虚拟环境。上一条命令块里的前 4 行就干完了这件事——虚拟环境的作用是把依赖装进隔离空间,不污染系统 Python。 ✅ 怎么算装好了:终端提示符前面多了(venv)。

第 2 步:装依赖。执行pip install -r requirements.txt,包比较多时耐心等待。 ✅ 怎么算装好了:pip list里能同时看到opencv-python、onnxruntime、insightface。

第 3 步:备模型。两个核心文件要放进models/目录:inswapper_128_fp16.onnx(负责换脸合成)和gfpgan-1024.onnx(负责五官细节增强),合计约 300MB。首次启动会自动下载;等不及就提前手动下载好丢进去,文件名以 models/instructions.txt 为准。 ✅ 怎么算装好了:ls models/能列出这两个 .onnx 文件,或首次启动只是在下模型进度条。

第 4 步:启动。执行python run.py。 ✅ 怎么算装好了:出现主窗口,界面里有源脸选择、摄像头列表和 Live 按钮。

窗口模式:摄像头实时预览

操作顺序是固定的三步:选源脸 → 选摄像头 → 按 Live。

  1. 执行python run.py打开主窗口;
  2. 挑一张源脸照片。三个硬性要求:正脸、光线均匀、脸上无遮挡——口罩、贴纸、逆光都会拖垮检测效果,人脸在照片里占比越大越稳;
  3. 在窗口里选一台摄像头,推理后端程序自己挑,不用管;
  4. 按Live,首次加载要等 10–30 秒,预览一出现换脸就生效;想换人,直接重新选一张源照片;
  5. 推流:用 OBS 对预览窗口做窗口捕获即可。

窗口模式常用参数:

参数干什么什么时候用
--live-mirror预览按前置相机视角镜像推出去的画面方向反了
--live-resizable允许拖动调整预览窗口大小想按推流版式放大或缩小预览
--max-memory限制内存上限,单位 GB内存吃紧、预览开始掉帧
--det-size人脸检测输入尺寸,160 / 320 / 640 三档,默认 640画面里脸偏小、或机器性能不够时调低
--nsfw-filter启用内置 opennsfw2 内容过滤希望自动拦截不当素材

命令行模式:一条命令批量出片

命令行有个隐藏开关:只要带上-s,程序就不再弹窗口,直接进入无界面模式。

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

参数逐个说:

  • -s/--source:源脸照片,同时是"切到命令行模式"的开关
  • -t/--target:目标图片或视频
  • -o/--output:手动指定输出位置
  • --keep-audio:保留原片音轨(默认本来就是开的,写上更保险)
  • --keep-fps:保持原始帧率
  • --many-faces:画面里每张脸都处理,默认只换一张
  • --map-faces:配合--many-faces,把目标里的人聚类分组后手动绑定"谁换谁"
  • --frame-processor:指定帧处理器,可选face_swapper、face_enhancer等
  • --video-encoder:输出编码器,libx264/libx265/libvpx-vp9
  • --video-quality:输出质量 0–51,默认 18,数字越小体积越小、质量越低

⚠️结果文件在哪,新手最容易懵:成品不会直接躺在当前目录,而是存进以目标视频命名的文件夹——clip.mp4的换脸结果就在源视频旁边的clip.mp4/目录里。找不到输出,先去那儿翻。

进阶调优:三个高频痛点的解法

口型对不上

现象:源脸和画面里的人嘴型不同,整脸替换后一开口就穿帮。原因:全脸替换把嘴也一起换掉了,动作不再跟原画面同步。解法:开--mouth-mask(窗口模式里叫 Mouth Mask 开关),程序保留原画面里的嘴,只替换脸上其余区域,说话时口型自然跟着原画面走。

群像里所有人变成同一张脸

现象:目标视频里有多个人,却都被换成了源脸。原因:默认行为是把源脸应用到识别到的第一张目标脸上。解法:--many-faces让程序逐张处理每一张脸,再叠--map-faces:程序先用人脸身份向量(可以理解为每张脸的"指纹")把目标里的人自动聚类,你再手动绑定"谁对应谁",群里每人各得一张自己的脸。

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

换完脸偏糊

现象:放大看五官,细节发软。原因:换脸生成是 128×128 小尺寸,放大回原帧后纹理自然损失。解法:窗口模式打开 Face Enhancer 开关,或命令行加--frame-processor face_swapper face_enhancer,GFPGAN 会把糊掉的五官细节补回来。

报错速查:卡住了先翻这里

报_tkinter错、窗口打不开?macOS 缺 tkinter 图形库。执行brew reinstall python-tk@3.14,重开终端再跑一次。

提示找不到 ffmpeg?没装,或装了但不在 PATH 里。装好后用ffprobe -version验证,能打印版本号才算数。

两个 .onnx 模型一直下载或提示缺失?首次启动会自动拉取约 300MB 的模型,等它下完即可;等不及就手动把inswapper_128_fp16.onnx和gfpgan-1024.onnx放进models/目录。

有 N 卡却退回 CPU 跑?十有八九是 cuDNN 没进 PATH 或版本不对。对照上文自查清单里 NVIDIA 那一行逐项修,启动时带--execution-provider cuda验证是否命中 GPU。

实时预览明显掉帧?按顺序试:先关 Face Enhancer,再调低--max-memory,最后把--det-size从 640 降到 320 或 160。

它是怎么做到的,源码从哪读

流水线对每一帧跑一遍,一帧内部依次发生四件事:

  1. 检测——insightface 包的 buffalo_l 模型找出画面里所有脸,算出边界框、关键点和身份向量;
  2. 生成——inswapper 模型在 128×128 尺寸下,把源照片的身份"合成"到目标脸的结构上,只换身份,姿态和表情保持原样;
  3. 贴回——用椭圆羽化软掩膜做 alpha 混合,把新脸贴回原帧,避免硬边方块露馅;
  4. 增强(可选)——GFPGAN 把糊掉的五官细节补回来。

全程本地完成,没有任何在线环节。想深入读代码,直接对这五处:

模块职责相对路径
人脸检测与分析找脸、算身份向量和关键点modules/face_analyser.py
换脸合成生成新脸、椭圆掩膜贴回原帧modules/processors/frame/face_swapper.py
人脸增强GFPGAN 补回五官细节modules/processors/frame/face_enhancer.py
视频输入输出抽帧、编码、音轨还原modules/video_capture.py
命令行入口参数解析、整条流水线调度modules/core.py

四条使用底线

  • 只换自己的脸,或事先明确取得本人同意
  • 公开发布时标注"AI 合成 / deepfake"
  • 不用于诈骗、冒充、诽谤等任何欺骗目的
  • 不碰战争画面、隐私场景等敏感素材,内置的 opennsfw2 过滤也会拦这类内容

现在就去跑

回到文首那 6 行命令,python run.py跑起来,选一张自己的正脸照片,按 Live——10–30 秒后你的第一段实时换脸预览就在屏幕上了。想继续深入,从这三处顺着读:README.md 里的完整参数列表、models/instructions.txt 的模型文件说明、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),仅供参考

RELATED READING

延伸阅读

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