前言

应朋友要求,研究下deepfacelab的环境搭建和使用步骤,记录下中间的问题和过程。

1、deepfacelab核心库

1
git clone --depth=1 https://github.com/iperov/DeepFaceLab

2、成熟的deepfacelab安装项目包

win10环境,软件磁力连接(迅雷复制下载):

1
magnet:?xt=urn:btih:3384316e126920d7e1cbd2acb16b9513a57b2645&dn=DeepFaceLab&tr=udp%3a%2f%2ftracker.coppersurfer.tk%3a6969%2fannounce

3、安装前的准备

1、如果用的步骤3中的成熟项目包只需要依赖python3
2、如果用的步骤2中的核心库自行搭建的话,需要安装如下清单

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
numpy
h5py
Keras
opencv-python
tensorflow-gpu
plaidml
plaidml-keras
scikit-image
tqdm
ffmpeg-python

nvidia-CUDA

4、执行如下步骤

本着快速应用的地步,优先选择步骤3的完整项目包

目录名 说明
_internal 完整项目工程包自带的第三方工具
worksapce 工作区
worksapce_iron 测试的钢铁侠和马斯克视频换脸工作区
*.bat 运行脚本
changelog.html 修改说明
步骤.txt 运行脚本的顺序,自增给朋友说明的

4.1 在workspace目录下准备好2份视频,分别命名data_dst.mp4、data_src.mp4

name 说明
data_dst.mp4 需要被换脸的视频
data_src.mp4 可以提取脸的源视频

4.2 在workspace下检查工作目录,没有就参考如下截图创建空目录

workspace目录: data_dst目录: data_src目录:

5、开始工作

脚本中间的具体参数很好理解,这个工程也有完整的中文版,实在不熟悉的可以网上找下翻译好的中文完整工具包下载,这里不做过多说明,只简单告诉步骤
注意bat脚本因为带有空格和序号等符号,双击执行即可,cmd下不好执行

原理流程如下:

graph LR;
A(目标或源视频转成图片)-->B(目标或源视频转成的图片提取脸部)-->C(训练模型)-->D(人脸替换)-->E(合成视频)

5.1 把源视频拆分成图片

执行脚本

1
2) extract images from video data_src.bat

参考结果:

5.2 把目标视频拆分成图片

执行脚本

1
3) extract images from video data_dst FULL FPS.bat

参考结果:

5.3 从源图片中提取人脸,也叫切脸

执行脚本

1
4) data_src extract faces extract.bat
参数 说明 备注
h half face 新版本参数,本文介绍的下载版本不带这个参数
mf mid-half-face 新版本参数,本文介绍的下载版本不带这个参数
f full-face 全脸
wf whole-face 带额全脸
head 连头发一起换 越大越消耗GPU运算

示例图如下:

参考结果:

5.4 从目标图片中提取人脸

执行脚本

1
5) data_dst extract faces extract.bat

参考结果:

5.5 训练模型,耗时,不会自己结束

执行脚本

1
6) train Quick96.bat
  • 1、SAEHD模型做出来的视频质量更好,但是要求的配置更高。
  • 2、退出后再次点击train Quick96.bat 可以继续训练,进度不会丢失

如下是几个小时训练的进度,分别是低于1000,1000 ~ 2000,2000 ~ 3000 3个阶段的,建议更多时间训练高于万次或者自己满意为止

列序号 介绍
1、3列 是分别提取src和dst视频的原图
2、4列 是根据切脸参数提取的模型数据
5列 是替换后的demo效果

900次训练:

1000次训练:

2000次训练:

3000次训练:

最后生成自己训练的模型文件:如下图

5.6 图片换脸

执行脚本

1
7) merge Quick96.bat

5.7 把图片合成视频

执行脚本

1
8) merged to mp4.bat

参考结果: