DeepFaceLab进阶教程

来自人工智能助力教育知识百科
Xuexf讨论 | 贡献2022年2月7日 (一) 06:47的版本 简介
跳转至: 导航搜索
百科首页 | 3D虚拟世界 | 音乐与人工智能 | 人工智能机器人 | 关于我们 | 网站首页
背景知识 | DeepFaceLab | 研究整理
DFL入门教程 | DFL进阶教程 | DFL经验 | DFL问题整理

简介

本页提供DFL的一些进阶操作以及优化效果的方法。

基本流程如下:

DFL进阶教程-1.png

视频切帧没有特别需要注意的地方,主要在素材的准备、提取脸部、训练和合成上会有一些问题。

素材篇

1.去哪里找

抖音,快手,哔哩哔哩,Youtube,还有高清电影电视剧。如何下载这些视频很容易搜索到。

2.剪辑(可选)

主要根据视频中无关情节出现的比例而定,如果是从从电影里提取素材,最好还是剪辑一下,可以用PR、快剪辑等。另外如果是多个视频为了操作方便最好也拼在一起。

从视频中提帧的时候FPS输5~10就足够了。太多的话会导致重复的过多。

3.筛选src素材

首先肯定得把非目标人脸给删掉,直接从文件夹里删除即可。可以使用sort.bat后更方便地筛选。

  • 清晰度 模糊的素材坚决不要
  • 光线 需要保证素材脸部光线均匀,明暗适中,稍微暗一点但是均匀的可以留下。如果出现特别强的光在脸上导致脸部色彩不均匀,最好删掉。如果dst有这种场景的话可以考虑留下。
  • 遮挡 最好选脸部没有遮挡的素材
  • 角度 越丰富越好
  • 表情 越丰富越好,最关键的是眼睛和嘴巴
  • 妆容 角色妆容的差别最好不要太大,比如嘴唇颜色,眉毛,素颜or浓妆
  • 数量 在满足上述要求的情况下5000张精选素材为宜

图片去重

软件VisiPics,网上下载,先选择文件夹,然后选择阈值登记,进行扫描,最后选中来删除或移动重复图片。

素材训练前处理篇

提取脸部

遮罩处理

训练篇

训练不要从0开始训练,要基于预训练的模型,一个好的预训练模型可以大大节省训练时间,并且在面部表情、注视方向上有奇效。同时,最终效果的第一位是素材,预训练模型的好的迁移性也来源于其素材。

训练参数说明

创建模型时才可以设置的参数

1. model architecture:模型结构,有LIAE和DF两种,LIAE对光影的处理比较好,DF在保留SRC的特征上比较好。
2. face type:只需要知道f是到眉毛的小脸,wf是包括额头的整张脸,head包含整个头部。一般情况下都用f/wf,head很少,几乎见不到head的模型。
3. resolution:分辨率,也就是模型输出图像的分辨率。
4. Encoder dimensions:编码器维度。
5. Decoder dimensions:解码器维度。
6. AutoEncoder dimensions:中间层维度,中间层是网络中连接编码器和解码器的部分。
7. Decoder mask dimension:遮罩解码器维度,影响学习到的遮罩质量。


训练过程中可调整的参数

1. Batch Size:这个要根据机器的性能来决定,可以从8开始,往下降或往上升。
2. Masked Training:建议全程开启,学习的是XSeg遮罩内的内容。
3. Blur out mask:看到有人说是用来模糊背景,以改善训练效果,不是特别确定。
4. eyes_mouth_prio:优先训练眼部和嘴部区域,但这个并不能训练眼睛注视方向,只是眼睛和嘴的逼真程度。
5. Random Warp:随机扭曲,在训练前期启用。
6. Uniform Yaw:将src和dst按照YAW角排序后输入模型,而不是随机取样,有助于学习不同角度的面部轮廓。
7. learning rate dropout:这个在模型训练中比较常见,为了防止过拟合,以及能够进入到一个半径小的谷底,建议是先不开训练一段时间,之后再开启来达到更低的loss值。
8. face style power:一般用0.001训练,逐步往上升,太大容易崩。
9. color transfer mode:这个颜色转换建议脸部光影颜色复杂的时候不要开,开了容易使人的脸上出现色块,但是看别的地方的教程是推荐开的。
10. GAN:增加判别器,以使生成的图像更逼真,gan power一般从0.1开始,开GAN的时候其他选项都可以关掉了。
11. gradient clipping:梯度裁剪,可以全程开启,可以防止崩溃,开GAN之后一定要开启。
12. pretraining mode:如果已经进入正训就不要再开了。

通用训练步骤

有一个思想,先不开lr_dropout训练,loss值稳定之后,打开lr_dropout训练
masked training,gradient clipping全程开启,如果想开color transfer的话也可以一直开着
第一阶段:开RW,开UY,训练到loss值在0.4-0.6
第二阶段:开RW,开UY,开lr_dropout,使loss值降到更低
第三阶段:关RW,关lr_dropout,关UY,开启face style power0.001、eye_mouth_prio
第四阶段:开lr_dropout,开GAN 0.1,关face style power,关eye_mouth_prio,一直训练直到loss值很低

如何预训练

在训练时开启pretrain即可,可以看一下bat文件的数据路径在哪里。注意:预训练的素材不需要是同一个人的,光影越复杂,越清晰越好。有一个比较好的数据集是FFHQ,不过里面大部分是外国人,可以积累自己的预训练数据集。

预训练完成后,开始正式训练时,会出现pred那一列与dst一样或近似的情况(应该是src的脸),这时候不用担心,继续训练就好,迭代个几万次就正常了。