1 软件的安装
官方原作者发布的软件以exe结尾,本质上其实就是一个用7z压缩的文件, 大家选择好合适的路径, 然后解压即可.
- 少数小伙伴反应被杀毒软件警报和删除文件, 导致项目文件不全, 从而报错.
- DeepFaceLab3是github上开源的大项目, 经过无数人使用和验证, 肯定是安全的.
- 不排除其他人在投毒的可能性, 这里提供的是官方作者的原版.
- 为软件选择一个合适的路径
- 不要有中文字符
- 不要层级过深, 方便后续操作和查看.
- 再强调一下几个细节.
- A卡用Directx12,不要用rtx3000版
- 更新驱动
2 源视频转图片
- 双击批处理文件源视频转图片 extract images from video data_src.bat
- 跳出黑色窗口,输入10回车,然后输入jpg回车,就会自动开始将视频分解为图片。
- FPS:视频有一个指标叫帧率,常见有24,30,60等,代表一秒钟有几张。第一个参数输
入10指的是一秒钟只取10张;不输入直接回车,默认帧率是30就取30张。因为很多影视剧
画面相对固定,没必要全部取,否则后面会浪费大量提取时间,而且模型训练压力也会加
大。 - Format: 图片格式,主要是jpg和png。png是无损格式,但是JPG能在保证画质的情况下
减少巨量的空间。所以如果不是要求特别变态,一般都用jpg。这样可以减少空间,节省时
间。
- FPS:视频有一个指标叫帧率,常见有24,30,60等,代表一秒钟有几张。第一个参数输
- 处理完成后, 可以看到workplace/data_src下面就会出现很多图片.
3 目标视频转图片
- 双击批处理文件目标视频转图片 extract images from video data_dst FULL FPS.bat
- 因为dst必须一帧不落,所以没有FPS选项,只有图片格式这一个选项
- 处理完成后, 可以看到workplace/data_dst下面就会出现很多图片.
4 提取源头像
- 双击批处理文件提取源头像 data_src faceset extract.bat
- Face type人脸类型 ( h/mf/f/wf/head ?:help )
- 什么是人脸类型呢,就是从原图中截取的人脸框大小。
- h是半脸half face,mf是mid-half-face,f是全脸full-face,wf是整脸whole-face,head是最大的带整个头的人脸。
wf的范围如下人脸越大,最后合成环节的可调节余地越大。但相同模型分辨率下,有效面积就越小。比如256尺寸的wf,有效的人脸范围大概只有二分之一大。
但在显存越来越大的今天,不用担心。h是3年前deepfake刚问世时的人脸类型,当年显存小. - 推荐值:推荐用wf,已经把整个脸都包含进了,而且能兼容f人脸素材。 h和mf太小,在后期合成时没调整余地。head过大,没必要浪费显存。
- 单张图中提取人脸数量上限 Max number of faces from image ( ?:help ) : 0
- 如果你提取的图片中中包含的人脸数量
- 可以尝试将最大值设置3,可以加快提取速度
- 0 – unlimited, 无限制
- 图片大小 Image size ( 256-2048 ?:help ) : 512
- 仅当原图像足够清晰,且不需要增强,才使用高于512的值.
- 图片越大,脸部增强效果越长.
- 一般512足矣.
- 图片质量
- JPEG质量选项,取值范围为1-100,JPEG质量越高,输出文件越大。
- 处理完成后, 可以看到\workspace\data_src\aligned\下面就会出现很多图片.
- 如果src素材比较复杂,就需要做一些筛选。把一些不需要的素材删除:
- 很模糊的可以直接删除
- 不是目标人物的可以直接删除
- 图片残缺的删除
- 脸部有遮挡的删除
- 脸部光照差异特别大的删除
5 提取目标头像
- 双击批处理文件目标头像提取 data_dst faceset extract.bat
- 其他细节和上一步骤类似, 这里略过.
- 提取的头像保存在data_dst/aligned的文件夹里, 提取完之后也要对素材进行一个筛选
- 一般来说文件名后缀_1的都可以删掉. dst的删除核心原则是要换的人脸留下,不要换的统统删掉.
- data_dst/aligned_debug 文件夹简介.
- 打开其中一张图片,可以看到人脸上有三种颜色的线框.
- 红色就是头像截取的区域,蓝色是面部区域,绿色是人脸轮廓,以及五官定位的点。其实就
是人脸的landmark。通过debug你可以直观的看到人脸识别算法识别了哪些区域,有没有
识别正确。
6 训练模型
终于到了训练模型的部分, 这是整个流程中最为耗时的部分. 新版本中主要包含三类模型,分别是Quick96, SAEHD, AMP. 这里我以Quick96为例, 优点是所需配置(显存)低,所需时间相对较短. 缺点是不能自定义,像素比较低,合成效果差一些。
- 双击批处理文件 训练轻量级模型 train Quick96.bat
- 此时便会弹出cmd
- 当你第一次运行时, 或者说项目内不存在模型时, 会让你输入新模型的名称, 然后回车.
- 如果已经存在其他模型, 可以选择已有模型继续训练, 或者新建模型.
- 接下来选择设备, 显然是选择显卡, 输入0, 并回车.
- 此时一切就绪, 等待数秒后, 可以看到cmd的变化, 我们需要这种关注最后一列的数据.
-
[模型保存时间] [迭代次数] [单次迭代时间] [源损失] [目标损失] [16:25:30][#000002][0059ms][4.2341][3.7194] [16:32:20][#006881][0053ms][0.6054][0.3387]
- 目标损失的值越小越好, 但不可能达到0, 一般来说达到0.1x就差不多可以了.
-
- 接下来我们来学习预览窗口.
- 预览窗口怎么生成?
- 不需要手动生成, 前面步骤正常操作, 它会自动弹出.
- 为什么我的预览图没有变化? 只有一, 三列有头像?
- 需要将鼠标光标放到预览窗口上, 再按P键, (因为不同输入法的操作不同, 也可能需要再按回车键), 然后窗口内容才会发生更新.
- 预览窗口的其他操作
- 按 “Enter” 停止训练并保存进度
按 “Space” 可以切换视图
按 “P” 可以刷新预览图
按 “S” 可以保存训练进度
- 按 “Enter” 停止训练并保存进度
- 可以看到随着迭代次数的增加, 损失值越来越小. 但两万次是要远远不够的, 如果从零开始训练模型, 一般而言需要100万次以上才能有较好的效果.
- 预览窗口怎么生成?
- 什么时候停止训练? 两个判断依据
- 目标损失的值越小越好, 但不可能达到0, 一般来说达到0.1x就差不多可以了.
- 通过预览图来判断, 观察第二列是否无限接近第一列,第四列是否无限接近第三列。第五列的表情是否无限接近第四列。所有列的图片是否都足够清
晰。如果符合条件, 按回车或者直接关闭窗口,进入下一步.
7 应用模型
- 点击应用轻量级模型 merge Quick96.bat, 图片-1.
- 输入参数: 图片-2
- 随后弹出图片-3
- 这个界面并没有任何功能上的用处,只显示了这个环节可以使用的快捷键。每个快捷键旁边都有中文注释,可以看个大概,具体的参数含义我会在后面的文章中做一个详细的介绍。点击这个界面,确保输入法为英文,按下键盘上的Tab,就可以进入合成预览界面。
- 这个环节, 或者说这个作用, 类似于Photoshop对人脸图片的处理, 让人脸看起来更加自然. 熟悉Photoshop的同学可以发现 “羽化, 亮化, 锐化, 降噪” 都和PS里的功能很像.
- 本教程这里注意使用了W/S,E/D.
- 可以发现左侧的图片, 脸部很像是直接贴过来的, 割裂感比较严重. 而右侧的图片经过处理后, 看起来显得融洽很多.
- 确认效果OK之后,按下快捷键shift+?(向后应用到所有帧) .
- 也可以通过键盘上的< 和 >进行手动切换,查看前后帧的合成. (大于号和小于号键)
- 然后再按下shift+>(自动合成) 就开始自动合成了。
- 等到进度达到100%, 即可手动关掉cmd窗口.
- 可以发现新增了两个文件夹
8 合成视频
- 双击批处理文件 合成 MP4 视频 merged to mp4.bat
- 输出码率, 将已经换好脸的图片转换成视频,并且会自动读取源视频的配置信息,包括帧率,音轨这些。这个环节只有一个输出码率的参数,一般3就够了.
- 执行完成后,workspace下面多了两个文件,分别是result.mp4 和 result_mask.mp4 。前者就是我们需要的最终视频,后者是遮罩视频,供后期使用。
- 查看结果
9 结语
- 看着很复杂很困难, 其实复杂是真的, 因为有很多细节需要处理(在最基本的流程情况下). 但是并不困难, 教程里已经把每一步需要注意的点都指出来了. 只要按着教程操作, 肯定能成功跑完一遍.
- 但DeepFaceLab 绝不是傻瓜软件, 一个按钮按下去过三秒钟就生成一个完美结果.
- 要想做出好的效果肯定是要花时间研究.
- 后续将会更新更多高级特征和技巧.