“DeepFaceLab进阶教程”的版本间的差异
(未显示同一用户的16个中间版本) | |||
第2行: | 第2行: | ||
[[人工智能与影视背景知识|背景知识]] | [[DeepFaceLab]] | [[人工智能与影视研究整理|研究整理]] | [[人工智能与影视背景知识|背景知识]] | [[DeepFaceLab]] | [[人工智能与影视研究整理|研究整理]] | ||
− | [[DeepFaceLab|DFL入门教程]] | [[DeepFaceLab进阶教程|DFL进阶教程]] | [[DeepFaceLab经验|DFL经验]] [[DeepFaceLab问题整理|DFL问题整理]] | + | [[DeepFaceLab|DFL入门教程]] | [[DeepFaceLab进阶教程|DFL进阶教程]] | [[DeepFaceLab经验|DFL经验]] | [[DeepFaceLab框架|DFL框架]] | [[DeepFaceLab问题整理|DFL问题整理]] |
== 简介 == | == 简介 == | ||
本页提供DFL的一些进阶操作以及优化效果的方法。 | 本页提供DFL的一些进阶操作以及优化效果的方法。 | ||
+ | |||
+ | 基本流程如下: | ||
+ | |||
+ | [[文件:DFL进阶教程-1.png|600px]] | ||
+ | |||
+ | 视频切帧没有特别需要注意的地方,主要在'''素材的准备'''、'''提取脸部'''、'''训练'''和'''合成'''上会有一些问题。 | ||
== '''素材篇''' == | == '''素材篇''' == | ||
+ | 素材分为src素材和dst素材,dst素材一般是指定好的,所以下面的都是对src素材而言的。 | ||
− | === | + | === 去哪里找 === |
抖音,快手,哔哩哔哩,Youtube,还有高清电影电视剧。如何下载这些视频很容易搜索到。 | 抖音,快手,哔哩哔哩,Youtube,还有高清电影电视剧。如何下载这些视频很容易搜索到。 | ||
− | === | + | === 提取帧 === |
− | + | 使用DFL的脚本提取即可。参数FPS输5~10就足够了。太多的话会导致重复的过多。 | |
− | + | 提取帧有两种格式,JPG和PNG。PNG属于无损格式,但体积较大。JPG体积小,图像质量会有一点损失。 | |
− | === | + | === src素材质性标准 === |
− | + | 要把非目标人脸给删掉,直接从文件夹里删除即可。可以使用sort.bat后更方便地筛选。 | |
− | * '''清晰度''' | + | * '''清晰度''' 尽可能清晰 |
− | * '''光线''' | + | * '''光线''' 特别暗的建议不要留,可以保证一定的复杂度。 |
* '''遮挡''' 最好选脸部没有遮挡的素材 | * '''遮挡''' 最好选脸部没有遮挡的素材 | ||
* '''角度''' 越丰富越好 | * '''角度''' 越丰富越好 | ||
* '''表情''' 越丰富越好,最关键的是眼睛和嘴巴 | * '''表情''' 越丰富越好,最关键的是眼睛和嘴巴 | ||
* '''妆容''' 角色妆容的差别最好不要太大,比如嘴唇颜色,眉毛,素颜or浓妆 | * '''妆容''' 角色妆容的差别最好不要太大,比如嘴唇颜色,眉毛,素颜or浓妆 | ||
− | * '''数量''' | + | * '''数量''' 在满足上述要求的情况下5000到10000就可以 |
+ | |||
+ | === 图片去重 === | ||
+ | 可以使用软件VisiPics,网上下载,先选择文件夹,然后选择阈值等级,进行扫描,最后选中来删除或移动重复图片。 | ||
+ | |||
+ | == '''提取脸部篇''' == | ||
+ | === 提取脸部 === | ||
− | === | + | 提取脸部可以采用两种手段,一种是直接使用DFL的脚本,另一种是使用MVE(machine video editor)软件。 |
− | + | ||
+ | ==== 使用DFL脚本 ==== | ||
+ | |||
+ | 先调用脚本'''data_* faceset extract.bat'''提取脸部。 | ||
+ | |||
+ | 如果是src素材,直接删去data_src/aligned文件夹下出错的图片即可。 | ||
+ | |||
+ | 如果是dst素材,将debug文件夹下不正常的图片删掉,再调用脚本'''data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG.bat'''进行手动重新提取。 | ||
+ | |||
+ | 这里的手动还是属于使用算法提取,并不是手动画人脸的关键点。所以有时候会遇到手动也无法处理的情况。这时候就要用到MVE了。 | ||
+ | |||
+ | ==== 使用MVE ==== | ||
+ | |||
+ | 链接:https://pan.baidu.com/s/1EG_vkC71TVc_CKG-LH3QbA 提取码:9y1u | ||
+ | |||
+ | 教程地址:https://www.bilibili.com/video/BV1uP4y1t7Mj | ||
+ | |||
+ | 建议用这个来处理素材,画关键点和XSeg遮罩。 | ||
+ | |||
+ | === 遮罩处理 === | ||
+ | |||
+ | 何为遮罩(mask)?遮罩就是一个0/1矩阵,目标区域值为1,非目标为0。合成的时候用遮罩可以面部一些不想被替换的地方如眼镜、刘海等。 | ||
+ | |||
+ | DFL的遮罩有两种模式,一种是换脸模型里的多边形mask,另一种是XSeg。多边形mask是在提脸时就写入了图片里的,训练换脸模型时也会进行训练。XSeg则是另外一套相对独立的体系。需要在素材上画遮罩区域,训练XSeg模型,然后进行合成时进行应用。 | ||
+ | |||
+ | 如果是比较精细的换脸,需要使用XSeg遮罩。 | ||
+ | |||
+ | 同样的,XSeg也有两种方式,一种是使用DFL自带的脚本,一种是使用MVE | ||
+ | |||
+ | ==== 使用DFL脚本 ==== | ||
+ | |||
+ | 主要是调用以下脚本进行XSeg的操作 | ||
+ | |||
+ | [[文件:DFL进阶教程-2.png|600px]] | ||
+ | |||
+ | 最上面的两个使用软件自带的模型进行应用。 | ||
+ | 下面的就是字面意思了。如果调用下面的几个,需要按照edit、train、apply的顺序进行操作。也就是先画遮罩、训练XSeg模型、应用XSeg模型的顺序。 | ||
+ | |||
+ | 画XSeg遮罩的时候,只需要挑一些比较关键的画就可以了。 | ||
+ | |||
+ | ==== 使用MVE ==== | ||
+ | |||
+ | 画遮罩也是比较推荐用MVE,因为可以方便地进行预览,不像DFL只能一张一张地看。而且提供了比DFL本身更加方便的方式。 | ||
+ | |||
+ | == '''训练篇''' == | ||
+ | 训练不要从0开始训练,要基于预训练的模型,一个好的预训练模型可以大大节省训练时间,并且在面部表情、注视方向上有奇效。同时,最终效果的第一位是素材,预训练模型的好的迁移性也来源于其素材。 | ||
+ | |||
+ | === 训练参数说明 === | ||
+ | ==== 创建模型时才可以设置的参数 ==== | ||
+ | 1. model architecture:模型结构,有LIAE和DF两种,LIAE对光影的处理比较好,DF在保留SRC的特征上比较好。<br> | ||
+ | 2. face type:只需要知道f是到眉毛的小脸,wf是包括额头的整张脸,head包含整个头部。一般情况下都用f/wf,head很少,几乎见不到head的模型。<br> | ||
+ | 3. resolution:分辨率,也就是模型输出图像的分辨率。<br> | ||
+ | 4. Encoder dimensions:编码器维度。<br> | ||
+ | 5. Decoder dimensions:解码器维度。<br> | ||
+ | 6. AutoEncoder dimensions:中间层维度,中间层是网络中连接编码器和解码器的部分。<br> | ||
+ | 7. Decoder mask dimension:遮罩解码器维度,影响学习到的遮罩质量。<br> | ||
+ | |||
+ | |||
+ | ==== 训练过程中可调整的参数 ==== | ||
+ | |||
+ | 1. Batch Size:这个要根据机器的性能来决定,可以从8开始,往下降或往上升。<br> | ||
+ | 2. Masked Training:建议全程开启,学习的是XSeg遮罩内的内容。<br> | ||
+ | 3. Blur out mask:看到有人说是用来模糊背景,以改善训练效果,不是特别确定。<br> | ||
+ | 4. eyes_mouth_prio:优先训练眼部和嘴部区域,但这个并不能训练眼睛注视方向,只是眼睛和嘴的逼真程度。<br> | ||
+ | 5. Random Warp:随机扭曲,在训练前期启用。<br> | ||
+ | 6. Uniform Yaw:将src和dst按照YAW角排序后输入模型,而不是随机取样,有助于学习不同角度的面部轮廓。<br> | ||
+ | 7. learning rate dropout:这个在模型训练中比较常见,为了防止过拟合,以及能够进入到一个半径小的谷底,建议是先不开训练一段时间,之后再开启来达到更低的loss值。<br> | ||
+ | 8. face style power:一般用0.001训练,逐步往上升,太大容易崩。<br> | ||
+ | 9. color transfer mode:这个颜色转换建议脸部光影颜色复杂的时候不要开,开了容易使人的脸上出现色块,但是看别的地方的教程是推荐开的。<br> | ||
+ | 10. GAN:增加判别器,以使生成的图像更逼真,gan power一般从0.1开始,开GAN的时候其他选项都可以关掉了。<br> | ||
+ | 11. gradient clipping:梯度裁剪,可以全程开启,可以防止崩溃,开GAN之后一定要开启。<br> | ||
+ | 12. pretraining mode:如果已经进入正训就不要再开了。<br> | ||
+ | |||
+ | === 通用训练步骤 === | ||
+ | 有一个思想,先不开lr_dropout训练,loss值稳定之后,打开lr_dropout训练<br> | ||
+ | masked training,gradient clipping全程开启,如果想开color transfer的话也可以一直开着<br> | ||
+ | 第一阶段:开RW,开UY,训练到loss值在0.4-0.6<br> | ||
+ | 第二阶段:开RW,开UY,开lr_dropout,使loss值降到更低<br> | ||
+ | 第三阶段:关RW,关lr_dropout,关UY,开启face style power0.001、eye_mouth_prio<br> | ||
+ | 第四阶段:开lr_dropout,开GAN 0.1,关face style power,关eye_mouth_prio,一直训练直到loss值很低<br> | ||
+ | |||
+ | === 如何预训练 === | ||
+ | 在训练时开启pretrain即可,可以看一下bat文件的数据路径在哪里。注意:预训练的素材不需要是同一个人的,光影越复杂,越清晰越好。有一个比较好的数据集是FFHQ,不过里面大部分是外国人,可以积累自己的预训练数据集。 | ||
+ | |||
+ | 预训练完成后,开始正式训练时,会出现pred那一列与dst一样或近似的情况(应该是src的脸),这时候不用担心,继续训练就好,迭代个几万次就正常了。 | ||
+ | |||
+ | == 合成篇 == |
2022年2月8日 (二) 02:17的最新版本
百科首页 | 3D虚拟世界 | 音乐与人工智能 | 人工智能机器人 | 关于我们 | 网站首页
背景知识 | DeepFaceLab | 研究整理
DFL入门教程 | DFL进阶教程 | DFL经验 | DFL框架 | DFL问题整理
简介
本页提供DFL的一些进阶操作以及优化效果的方法。
基本流程如下:
视频切帧没有特别需要注意的地方,主要在素材的准备、提取脸部、训练和合成上会有一些问题。
素材篇
素材分为src素材和dst素材,dst素材一般是指定好的,所以下面的都是对src素材而言的。
去哪里找
抖音,快手,哔哩哔哩,Youtube,还有高清电影电视剧。如何下载这些视频很容易搜索到。
提取帧
使用DFL的脚本提取即可。参数FPS输5~10就足够了。太多的话会导致重复的过多。
提取帧有两种格式,JPG和PNG。PNG属于无损格式,但体积较大。JPG体积小,图像质量会有一点损失。
src素材质性标准
要把非目标人脸给删掉,直接从文件夹里删除即可。可以使用sort.bat后更方便地筛选。
- 清晰度 尽可能清晰
- 光线 特别暗的建议不要留,可以保证一定的复杂度。
- 遮挡 最好选脸部没有遮挡的素材
- 角度 越丰富越好
- 表情 越丰富越好,最关键的是眼睛和嘴巴
- 妆容 角色妆容的差别最好不要太大,比如嘴唇颜色,眉毛,素颜or浓妆
- 数量 在满足上述要求的情况下5000到10000就可以
图片去重
可以使用软件VisiPics,网上下载,先选择文件夹,然后选择阈值等级,进行扫描,最后选中来删除或移动重复图片。
提取脸部篇
提取脸部
提取脸部可以采用两种手段,一种是直接使用DFL的脚本,另一种是使用MVE(machine video editor)软件。
使用DFL脚本
先调用脚本data_* faceset extract.bat提取脸部。
如果是src素材,直接删去data_src/aligned文件夹下出错的图片即可。
如果是dst素材,将debug文件夹下不正常的图片删掉,再调用脚本data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG.bat进行手动重新提取。
这里的手动还是属于使用算法提取,并不是手动画人脸的关键点。所以有时候会遇到手动也无法处理的情况。这时候就要用到MVE了。
使用MVE
链接:https://pan.baidu.com/s/1EG_vkC71TVc_CKG-LH3QbA 提取码:9y1u
教程地址:https://www.bilibili.com/video/BV1uP4y1t7Mj
建议用这个来处理素材,画关键点和XSeg遮罩。
遮罩处理
何为遮罩(mask)?遮罩就是一个0/1矩阵,目标区域值为1,非目标为0。合成的时候用遮罩可以面部一些不想被替换的地方如眼镜、刘海等。
DFL的遮罩有两种模式,一种是换脸模型里的多边形mask,另一种是XSeg。多边形mask是在提脸时就写入了图片里的,训练换脸模型时也会进行训练。XSeg则是另外一套相对独立的体系。需要在素材上画遮罩区域,训练XSeg模型,然后进行合成时进行应用。
如果是比较精细的换脸,需要使用XSeg遮罩。
同样的,XSeg也有两种方式,一种是使用DFL自带的脚本,一种是使用MVE
使用DFL脚本
主要是调用以下脚本进行XSeg的操作
最上面的两个使用软件自带的模型进行应用。 下面的就是字面意思了。如果调用下面的几个,需要按照edit、train、apply的顺序进行操作。也就是先画遮罩、训练XSeg模型、应用XSeg模型的顺序。
画XSeg遮罩的时候,只需要挑一些比较关键的画就可以了。
使用MVE
画遮罩也是比较推荐用MVE,因为可以方便地进行预览,不像DFL只能一张一张地看。而且提供了比DFL本身更加方便的方式。
训练篇
训练不要从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的脸),这时候不用担心,继续训练就好,迭代个几万次就正常了。