DeepFaceLab 是目前开源社区中使用最广泛的 deepfake 工具之一,它把换脸任务拆解成三个清晰的阶段:从视频中提取并预处理人脸,训练一个人脸转换模型,最后将模型结果合成回视频。和常见的图形界面换脸软件不同,DeepFaceLab 主要通过批处理脚本驱动,这使得它更适合批量操作和参数调优,但也对用户理解流程提出了更高要求。

环境准备与依赖安装
DeepFaceLab 的绝大部分计算都依赖 GPU 完成,因此一张支持 CUDA 的 NVIDIA 显卡几乎算是硬性要求。显存大小直接决定模型复杂度,6GB 以上可以流畅运行 Quick96 和 SAEHD 模型,12GB 以上才能使用更精细的 AMP 或高分辨率模型。CPU 和内存要求相对宽松,但建议至少配备 16GB 内存,因为中后期合成视频时纯 CPU 计算会非常吃力。
软件方面,Windows 用户可以直接下载官方压好的集成包,解压后即可使用。所有程序都集中在 _internal 目录下,而用户的素材和输出则放在 workspace 目录中。下面是运行 DeepFaceLab 时的典型目录结构:
C:DeepFaceLab │ ... ├─_internal // 内置Python环境以及依赖库 │ ├─python_3_9 │ ├─DeepFaceLab │ └─pretrain_faces └─workspace // 所有工作文件 ├─data_src.mp4 // 源视频(被换脸的人) ├─data_dst.mp4 // 目标视频(人脸要被替换) ├─data_src // 源视频抽取后的帧 ├─data_dst // 目标视频抽取后的帧 ├─data_srcaligned // 源视频对齐后的人脸 ├─data_dstaligned // 目标视频对齐后的人脸 └─model // 模型文件保存位置
首次运行前,需要把准备换脸的素材分别命名为 data_src.mp4 和 data_dst.mp4,放到 workspace 目录中。源视频是提供人脸的参考,目标视频是最终应用换脸效果的地方。命名错误或缺少目录会导致后续脚本找不到文件,这是新手最容易踩的坑。
素材提取与预处理
数据准备包含两个步骤:先把视频抽成帧,再对每一帧进行人脸检测、对齐与裁剪。对应的脚本是 2) extract images.bat 和 3) extract faces.bat。抽帧时 DeepFaceLab 默认每帧输出一张 JPG 图片,如果你的视频帧率很高并且场景变化缓慢,可以在脚本配置中降低抽帧频率,既能节省磁盘空间,也能减少后续对齐的时间。
:: 第一步:将data_dst.mp4抽成JPG帧 2) extract images.bat :: 第二步:对抽出的帧进行人脸识别与对齐 3) extract faces.bat
执行 extract faces.bat 时,DeepFaceLab 会弹出命令行参数窗口,可调节人脸检测器(detector)、期望提取的角度范围(angle)等选项。对大多数素材来说,默认值即可工作,但如果源视频里的人脸很小,建议把所需尺寸调高,或者开启 better masks 选项来获得更精密的遮罩。人脸检测器有 S3FD 和 MTCNN 两种,S3FD 在正脸和轻度侧脸下更稳定,MTCNN 则能提取更多极端角度,但误检率也更高。
素材质量和多样性直接决定模型最终效果。源视频中的人脸应该尽量清晰、光线均匀、角度丰富;目标视频则要尽量覆盖换脸场景里出现的各种姿势。如果目标视频有侧面镜头,但源视频里完全没有侧脸,模型在遇到侧脸时就极有可能合成出扭曲的伪脸。因此,在进入训练之前,一定要打开 data_srcaligned 和 data_dstaligned 两个目录,手动删除模糊、遮挡、闭眼或角度过偏的人脸图片。这一步骤虽然繁琐,却能省下大量无效训练时间。
模型选择与训练
DeepFaceLab 提供了多种模型架构,最常用的是 Quick96、SAEHD 和 AMP。Quick96 速度最快,适合在低显存显卡上跑通流程,但输出分辨率只有 96×96,细节不足。SAEHD 是目前大多数高质量换脸视频的选择,它拥有可调节的编码器与解码器维度,支持 128 到 320 不等的分辨率,且能配合定制遮罩处理侧脸和遮挡问题。AMP 在保留表情和眼神上更有优势,但训练耗时更长,对素材质量要求也更高。
5) train SAEHD.bat
运行训练脚本后,DeepFaceLab 会先让你设置编码器维度、解码器维度、采样器随机翻转等参数。编码器和解码器维度的数值越大,模型拟合能力越强,但对显存要求也越高。例如,默认的 256 分辨率搭配 512 维编码器,大约需要 6GB 显存;如果出现内存不足,把 batch size 从默认的 8 降到 4,或者降低分辨率是更直接的解决方案。采样器随机翻转(random flip)能让模型见到的角度翻倍,但也会降低最终输出的对称一致性,一般建议在素材缺少特定角度时开启。
训练过程中按空格键会显示预览窗口,按 P 可以保存当前合成图,按 Tab 切换交替显示不同组的人脸。正常训练时,在几百到几千次迭代后,损失值会从初始几左右逐步下降。当 loss 曲线趋于平缓,预览窗口里的面部轮廓和纹理已经清晰,就可以停止训练了。值得注意的是,停止训练的时间点很关键。训练不足会出现换脸脏、轮廓糊;训练过久则可能导致模型过拟合,输出脸型完全变成源人脸,失去目标身份的特征。尤其是 AMP 模型,建议在损失值下降变缓时立刻保存,不要等到损失值归零。
视频合成与导出
模型训练完成后,需要将模型对每一帧生成的结果贴回原始画面,这一步由 6) merge SAEHD.bat 完成。合成脚本会为每个目标帧生成一张带遮罩的人脸贴图,同时弹出交互式窗口,供你调边缘羽化、颜色迁移、超分模式等参数。如果目标视频里有不少侧脸,打开 true face 增强能减少五官变形;如果肤色差异明显,则打开颜色迁移模式,让换脸后的肤色更贴近目标视频背景光照。
6) merge SAEHD.bat 7) merge video.bat
合成并确认每一帧效果后,最后执行 7) merge video.bat 把贴图帧序列拼成视频。DeepFaceLab 会调用内置的 ffmpeg,将处理过的人脸贴图与原始帧融合,生成 data_dst.mp4 的同名输出文件。如果你希望保留更多画面细节,可以在脚本参数中把码率调得更高;如果只是快速预览,也可以降低分辨率来加快导出速度。导出的视频通常还包含原声音轨,因为换脸不涉及音频,无需额外处理。
不少人在这个阶段会发现导出的视频画面闪烁或边缘发虚。这往往是因为训练时使用的遮罩边缘不够平滑,或者目标帧里同一人脸在不同帧中提取的遮罩差异过大。遇到这种情况,可以回到合成步骤,将羽化效果(erode mask)数值调大,并对目标帧重新生成一批遮罩再进行融合。只要不是角度缺失导致的模型坍塌,这种轻微闪烁一般都能通过参数调整消除。
避坑指南与调优技巧
实战过程中最常见的坑是显存不足。当训练脚本抛出 OOM 错误时,优先降低 batch size,其次降低合成分辨率。两者对模型质量影响最小。如果仍然报错,就该考虑更换更小的模型架构,比如从 SAEHD 切到 Quick96。另一种常见问题是目标视频里存在大量大面积遮挡,例如手碰到脸、眼镜反光等。这时应该在目标人脸提取阶段打开高级遮罩模式,并在训练时使用相应的遮罩训练加权,让模型学会忽略这些遮挡区域。
提高相似度和清晰度也有几个有效手段。第一,尽量使用预训练模型而不是从零训练。DeepFaceLab 官方提供的预训练模型已经掌握了大量人脸共性,能让你花更少的数据量达到更稳定的效果。第二,定期备份 workspacemodel 中的模型文件。训练到中期时如果遇到显卡崩溃或系统重启,模型文件损坏是家常便饭,备份能让你从断点继续训练而不是推倒重来。第三,不要迷信训练轮数。素材干净度远比训练时长重要,相同人脸数据下,筛选掉模糊角落后训练同等的步数,出来的结果往往清晰度和相似度都有明显提升。
如果你是第一次尝试 DeepFaceLab,建议先用一段 10 到 20 秒的短视频跑通整个流程。短视频能让你快速了解每个阶段的耗时、显存变化和输出质量,也不会因为数据量过大而把时间耗在预处理上。等对流程完全熟悉后,再挑战更复杂的素材。记住,DeepFaceLab 的真正难点不是输入命令,而是数据质量管理和训练细节判断,这两点只能靠长期经验积累起来。
DeepFaceLabdeepfake换脸视频换脸修改时间:2026-08-19 07:58:56