--------------------DFL2.0 官方使用手册翻译:------------------------
2.0主要新增功能():
2个模型大类: SAEHD 和 Quick 96
支持多GPU
比DFL 1.0 更快的提脸、训练、合成速度
提供人脸素材加强脚本
训练支持GAN(一种AI技术),以还原更多细节
新增TrueFace参数 - (只支持 DF 模型架构) - 让SRC和DST表情更相似,减少死鱼脸
合成阶段附带输出遮罩图片, 方便后期导入其他软件编辑
带交互界面的合成脚本(1.0的合成需要手动填参数,非常反人类,这个2.0做的很人性化)
提脸使用s3fd算法,并支持手动模式
模型分辨率可选择为任意16或32倍数
多种模型架构 (两种核心框架DF, LIAE,以及 -U, -D ,-UD 三种附加后缀,这个下文详细展开)
使用Xseg遮罩模型,提供自带画遮罩的工具。
2.0硬件要求:
dfl2.0最新版已经支持英伟达显卡和AMD显卡,但AMD显卡效率不行,买电脑还是推荐英伟达显卡,
需要显卡CUDA Compute Capability 3.0以上
DeepFaceLab 2.0由几个.bat文件组成,这些文件用于执行创建Deepfake的各种任务/步骤,它们与两个子文件夹一起位于主文件夹中:
_internal - 相关源代码
workspace - 放置你的模型、视频、人脸数据的地方
下面是一些术语解释
Dataset (faceset) - 是一组从图片帧(从视频中提取)或照片已提取的图像。
DFL 2.0中使用了两个数据集,分别是data_dst和data_src:
- "data_dst" “ data_dst”是一个文件夹,其中包含从data_dst.mp4文件提取的帧-这是我们要换脸的目标视频。 它还包含2个文件夹,这些文件夹是在从提取的帧中提取人脸后创建的:“aligned”包含人脸图像(内嵌了人脸特征点数据,用于生成原始遮罩)
“aligned_debug”包含原始帧,这些帧画出了人脸特征点,用于标识检验人脸提取是否正确(并且不参与训练或合成过程)。清理完数据集后,可以将其删除以节省空间。 - "data_src" 是一个文件夹,用于保存从data_src.mp4文件提取的帧(可以是采访,电影,预告片等),也可以在其中放散装图片-就是您要在换到视频上的人。
“aligned”包含人脸图像(内嵌了人脸特征点数据,用于生成原始遮罩)
“aligned_debug”包含原始帧,这些帧画出了人脸特征点,用于标识检验人脸提取是否正确(并且不参与训练或合成过程)。清理完数据集后,可以将其删除以节省空间。
为方便国内朋友理解,我举个例子:我要做一个马保国替换叶问中甄子丹的换脸视频。 那么马保国就是data_src,叶问就是data_dst
但是,在提取脸部之前,必须先从以下对象中提取脸部:
-对于data_dst,您应该准备目标(目标)视频并将其命名为data_dst.mp4
-对于data_src,您应该准备源视频(如上例所示)并将其命名为data_src.mp4,或者准备jpg或png格式的图像。
从视频中提取帧的过程也称为提取,因此在本指南的其余部分中,我将这两个过程都称为“面部提取”和“帧提取”。
如开头所述,所有这些数据都存储在“ workspace”文件夹中。data_dst.mp4和data_src.mp4放在workspace文件夹目录;data_src文件夹和data_dst文件夹用于放置分解视频得到的原始画面帧或散装图片。运行面部提取后,会在其中自动生成存储人脸的“ aligned”文件夹
- 工作区清理:
1) Clear Workspace -删除workspace下所有内容。别手贱点他。
- 从src视频中提取画面 (data_src.mp4):
2) Extract images from video data_src - 从data_src.mp4视频中提取帧并将其放入自动创建的“ data_src”文件夹中,可用选项:-FPS-跳过视频的默认帧速率,输入其他帧速率的数值(例如,输入5将仅以每秒5帧的速度呈现视频,这意味着将提取较少的帧)
-JPG / PNG-选择提取帧的格式,jpg较小,通常质量足够好,因此建议使用,png较大,不能提供明显更高的质量,但是可以选择。
- 视频切割 (可选环节):
3) cut video (drop video on me) - 通过将视频拖放到该.bat文件中,可以快速将视频剪切为所需的长度。 如果您没有视频编辑软件并且想快速剪切视频,则很有用,可以选择以下选项:
从时间开始-视频开始
结束时间-视频结束
音轨-保留默认设置
比特率-让我们更改视频的比特率(质量)-最好保留默认设置
- 从目标视频中提取画面(data_dst.mp4):
3) extract images from video data_dst FULL FPS - 从data_dst.mp4视频文件中提取帧并将其放入自动创建的“ data_dst”文件夹中,可用选项:
- JPG/PNG - 同2)
- 提取Data_src中的人脸:
准备源数据集的第一步是对齐人脸(把人脸都摆正了),并从位于“ data_src”文件夹中的提取帧中生成512x512面部图像。
有2个选项:
4) data_src faceset extract MANUAL - 手动提取器,用法请参见5.1。
4) data_src faceset extract - 使用S3FD算法的自动提取
S3FD和MANUAL提取器的可用选项包括:
-根据要训练的模型的面部类型选择提取的覆盖区域:
a) full face (简称F脸,额头部分有些许被裁到)
b) whole face (简称WF脸,范围更大,整个额头都取了,兼容WF和F脸模型)
c) head (不常用,给高玩做avatar用,萌新用不到)
-选择用于面部提取/对齐过程的GPU(或cpu)
-选择是否生成“ aligned_debug”文件夹
- Data_src 整理:
完成此操作后,下一步是清理错误faceset /数据集/不正确对齐的faces,有关详细信息,请检查以下帖子: https://mrdeepfakes.com/forums/thread-gu...y-facesets
4.1) data_src view aligned result - 不常用
4.2) data_src sort - 给图片排序,方便你筛选错误图片
[0] blur 模糊程度
[1] face yaw direction 俯仰角度
[2] face pitch direction 左右角度
[3] face rect size in source image 人脸在原图中的大小
[4] histogram similarity 颜色直方图相似度
[5] histogram dissimilarity 颜色直方图不相似度
[6] brightness 亮度
[7] hue 颜色色相
[8] amount of black pixels 黑色像素的数量(常用于筛选异常人脸提取结果)
[9] original filename 源文件名字
[10] one face in image 是否是画面中唯一人脸
[11] absolute pixel difference 绝对的像素差异
[12] best faces 筛选最佳的人脸
[13] best faces faster 更快的筛选最佳的人脸
4.2) data_src util add landmarks debug images -重新生成debug文件夹
4.2) data_src util faceset enhance - 用AI算法提升素材清晰度
另一个可选的提升SRC的素材的方法,可用DFDNET ,谷歌colab连接如下:
https://colab.research.google.com/github...7-E-vRSYar
4.2) data_src util faceset metadata restore and 4.2) data_src util faceset metadata save - 让我们从源面集/数据集中保存和还原嵌入的对齐数据,以便在提取某些面部图像(例如将它们锐化,编辑眼镜,皮肤瑕疵,颜色校正)后可以对其进行编辑,而不会丢失对齐数据。如果不按此步骤编辑“已对齐”文件夹中的任何图像,则将不会再使用对齐数据和这些图片进行训练,因此,在保持名称相同的情况下,不允许翻转/旋转,仅是简单的编辑,例如彩色 。
4.2) data_src util faceset pack and 4.2) data_src util faceset unpack - 将“ aligned”文件夹中的所有面孔打包/解压缩到一个文件中。 主要用于准备自定义的预训练数据集或更易于共享为一个文件。
4.2.other) data_src util recover original filename - 将面部图像的名称恢复为原始顺序/文件名(排序后)。 可选,无论SRC face文件名如何,训练和合成都能正确运行。
- Data_dst 数据准备:
这里的步骤与源数据集几乎相同,除了少数例外,让我们从面部提取/对齐过程开始。
我们仍然有Manual和S3FD提取方法,但是还有一种结合了这两种方法和一种特殊的手动提取模式,始终会生成“ aligned_debug”文件夹。
5) data_dst faceset extract MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG - 从“ aligned_debug”文件夹中删除的帧进行手动重新提取。 有关更多信息,请参见5. Data_dst清理。 以下步骤5.1中的用法。
5) data_dst faceset extract MANUAL - 纯手动模式
5) data_dst faceset extract manual fix - 半自动,机器识别不了的会切手动
5) data_dst faceset extract - 纯自动提取
选项和src的一样,不重复说了
5.1 手动人脸提取的操作说明:
启动手动提取器或重新提取器后,将打开一个窗口,您可以在其中手动找到要提取/重新提取的脸部:
-使用鼠标定位脸部
-使用鼠标滚轮更改搜索区域的大小
-确保所有或至少是大多数地标(在某些情况下,取决于角度,照明或当前障碍物,可能无法精确对齐所有地标,因此,请尝试找到一个最能覆盖所有可见位并且是“ t太不对准)落在重要的部位,例如眼睛,嘴巴,鼻子,眉毛上,并正确遵循面部形状,向上箭头指示您面部的“向上”或“顶部”在哪里
-使用键A更改精度模式,现在地标不会对检测到的面部“粘”太多,但您可能能够更正确地定位地标
-用户<和>键(或,和。)来回移动,以确认检测到鼠标左键单击并移至下一个或按Enter
-鼠标右键,用于检测无法检测到的正面或非人脸(需要应用xseg进行正确的遮罩)
-q跳过剩余的面孔并退出提取器(到达最后一张面孔并确认时也会关闭)
5.2 Data_dst 数据整理:
对齐data_dst面后,我们必须清理它们,类似于我们使用源faceset / dataset进行处理时,我们将选择一些排序方法,由于它们的工作方式与src完全相同,因此我将不作解释。
但是清理目标数据集与源数据集有所不同,因为我们要使所有存在的帧的所有面对齐(包括可以在XSeg编辑器中标记的受遮挡的面),然后训练XSeg模型以将其遮盖 -有效地使障碍物在学到的面孔上清晰可见,更多的是在下面的XSeg阶段。
这块做法和data_src类似,区别在于,最后合成时是根据dst中aligned文件数量来合成。删掉的dst人脸数据对应的画面就不会换脸
5.3: XSeg model 的训练和使用(画遮罩).
这章比较复杂,晚点翻译。萌新先不要使用遮罩。不用遮罩正常也能训练
- 训练:
有两种模式可以选择:
SAEHD (6GB ): 高质量模型,至少6GB显存
特点/设置
- 最高640x640分辨率,
- 可支持half face, mid-half face, full face, whole face and head face 5中人脸尺寸类型
- 8种模型结构: DF, LIAE, 每种4 个变种 - regular, -U, -D and -UD
- 可调节的批大小(batchsize)
- 可调节的模型各层维度大小
- Auto Backup feature 自动备份
- Preview History预览图存档
- Adjustable Target Iteration 目标迭代次数
- Random Flip (yaw) 随机水平翻转
- Uniform Yaw 按角度顺序来训练
- Eye Priority 眼神训练优先
- Masked Training 带遮罩训练
- GPU Optimizer 优化器放GPU上
- Learning Dropout 学习率自动下降
- Random Warp 随机扭曲
- GAN Training Power 使用GAN
- True Face Training Power 提高人脸相似度
- Face and Background Style Power 提高颜色相似度
- Color Transfer modes 变对素材变色
- Gradient Clipping 梯度裁剪
- Pretrain Mode 使用预训练模式
Quick96 (2-4GB): 低配电脑可用
特点:
- 96x96 分辨率
- 只支持Full Face
- Batch size 4
- 默认DF-UD结构
6) train SAEHD
6) train Quick96
由于Quick96不可调节,因此您将看到命令窗口弹出并仅询问一个问题-CPU或GPU(如果您有更多问题,它将选择其中之一或同时进行训练)。
但是,SAEHD将为您提供更多调整选项。
在这两种情况下,首先都会出现一个命令行窗口,您可以在其中输入模型设置。 初次使用时,您将可以访问以下说明的所有设置,在使用已经受过训练的模型进行训练并在“模型”文件夹中显示该模型时,您还将收到提示,您可以在其中选择要训练的模型( (如果您的“模型”文件夹中存在多个模型文件)。
您还将始终提示您选择要在其上运行培训器的GPU或CPU。
启动后将看到的第二件事是预览窗口,如下所示:
【必看】DFL官方使用说明【已汉化】
这是所有功能的更详细说明,以便在开始训练新模型时将其呈现给用户:
请注意,由于这些模型的工作方式,其中一些已锁定,一旦开始训练就无法更改,例如,稍后无法更改的示例如下:
- model resolution 模型分辨率
- model architecture 模型结构
- models dimensions (dims settings) 模型维度参数
- face type 人脸类型
Autobackup every N hour ( 0..24 ?:help ) : 自动备份频率,0不备份
Target iteration : 将在达到一定的迭代次数后停止训练,例如,如果要将模型训练为仅进行100.000次迭代,则应输入值100000。将其保留为0将使其运行,直到您手动将其停止为止。 默认值为0(禁用)。
Flip faces randomly ( y/n ?:help ) : 基本不开。在您没有要交换到目标的人脸(源数据集)的所有必要角度的情况下的有用选项。 例如,如果您有一个目标/目标视频,人物直视向右,而您的源只具有直视向左的脸,则应启用此功能,但请记住,由于没有人脸对称,结果看起来可能不太像 src以及来源面部的特征(例如美容标记,疤痕,痣等)都会被镜像。 默认值为n(禁用)。
Batch_size ( ?:help ) : 批处理大小设置会影响每次迭代中相互比较的面孔数。 最低值是2,您可以提高到GPU允许的最大值,受GPU影响。 模型分辨率,尺寸越高,启用的功能越多,将需要更多的显存,因此可能需要较小的批处理大小。 建议不要使用低于4的值。批量越大,质量越好,但训练时间越长(迭代时间越长)。 对于初始阶段,可以将其设置为较低的值以加快初始训练的速度,然后将其升高。 最佳值为6-12。 如何猜测要使用的批量大小? 您可以使用试错法,也可以通过查看DFL 2.0电子表格来了解其他人在他们的GPU上可以实现什么,以帮助自己:[url = https://mrdeepfakes.com/forums/thread-dfl-2- 0-user-model-settings-spreadsheet] https://mrdeepfakes.com/forums/t ... ettings-spreadsheet
Resolution ( 64-640 ?:help ) : 在这里,您可以设置模型的分辨率,请记住,在训练过程中不能更改此选项。 它会影响交换的面部的分辨率,模型的分辨率越高-学习的面部越详细,但训练的负担也将越来越长。 分辨率可以从64x64增至640x640,其增量为:
16(对于常规和-U体系结构变体)
32(用于-D和-UD体系结构变体)
更高的分辨率可能需要增加模型尺寸(尺寸)。
Face type ( h/mf/f/wf/head ?:help ) :此选项使您可以设置要训练的脸部区域,共有5个选项-半脸,半脸,全脸,全脸和头部:
a)H半脸-仅从嘴巴到眉毛训练,但在某些情况下可以割破脸部的顶部或底部(眉毛,下巴,嘴巴)。
b)MF中半脸-旨在解决此问题,方法是遮盖脸部比半脸大30%,这应该可以防止大多数不希望的割伤的发生,但仍然可以发生。
c)F全脸-覆盖除额头以外的大部分脸部区域,有时会割掉一点下巴,但是这种情况很少发生-当SRC和/或DST的额头覆盖头发时,最推荐使用此方法。
d)WF整脸-扩大该区域以覆盖几乎整个脸部,包括额头,甚至一点点头发,但是当我们要交换整个脸部(不包括头发)时,应使用此模式。该脸部类型的另一个选项是masked_training,它使您可以优先确定学习脸部的整个脸部的优先级,然后(禁用之后)让模型学习像额头一样的脸部其余部分。
e)头-用于交换整个头,不适合长发的对象,如果源面组/数据集来自单个源并且SRC和DST都短发或不变,则效果最好形状取决于角度。此脸型的最低建议分辨率为224。
【必看】DFL官方使用说明【已汉化】
whole face案例
AE architecture (df/liae/df-u/liae-u/df-d/liae-d/df-ud/liae-ud ?:help ) : 此选项使您可以在2种主要的体系结构DF和LIAE及其-U,-D和-UD变体之间进行选择。
DF和LIAE体系结构是基础体系结构,两者均提供高质量和良好的性能。
DF-U,DF-UD,LIAE-U和LIAE-UD是其他体系结构变体。
DF: 此模型体系结构提供了更直接的人脸交换,不使人脸变形,但要求源和目标/目标人脸/头部具有相似的人脸形状。
该模型在正面拍摄时效果最好,并且要求您的源数据集具有所有所需的角度,在侧面轮廓上可能会产生较差的结果。
LIAE: 当涉及源和目标/目标之间的面部/头部形状相似性时,此模型体系结构没有那么严格,但是该模型确实使面部变形,因此建议使实际面部特征(眼睛,鼻子,嘴巴,整体面部结构)相似 在源和目标/目标之间。 该模型与源头镜头的源相似性较差,但可以更好地处理侧面轮廓,并且在源源面集/数据集方面更宽容,通常可以产生更精致的人脸替换,并具有更好的颜色/照明匹配度。
-U: 此变体旨在提高训练结果面与SRC数据集的相似性/相似性。
-D: 此变体旨在提高性能,让您以两倍的分辨率训练模型,而无需额外的计算成本(VRAM使用)和类似的性能,例如以与128分辨率相同的VRAM使用和速度(迭代时间)训练256分辨率模型
-UD: 结合U和D
接下来的4个选项控制模型神经网络的尺寸,这些尺寸会影响模型的学习能力,对其进行修改可能会对所学面孔的性能和质量产生重大影响,因此应将其保留为默认值。
AutoEncoder dimensions ( 32-1024 ?:help ) : 自动编码器中间层维度大小
Encoder dimensions ( 16-256 ?:help ) : 编码器尺寸设置会影响模型学习面孔总体结构的能力。
Decoder dimensions ( 16-256 ?:help ) : 解码器尺寸设置会影响模型学习细节的能力。
Decoder mask dimensions ( 16-256 ?:help ) : 遮罩解码器的尺寸设置会影响学习到的遮罩的质量。
更改每个设置时的性能变化可能会对性能产生不同的影响,如果没有大量的培训,就无法衡量每个参数对性能和质量的影响。 每个设置为某个默认值,该默认值应提供最佳结果,并在训练速度和质量之间取得良好的折衷。
同样,在更改一个参数时,也应更改其他参数,以保持它们之间的关系相似(例如,如果将“编码器”和“解码器”的尺寸从64降低到48,则还可以将“自动编码器”的尺寸从256降低到192-240)。 随意尝试各种设置。
如果要获得最佳结果,请将其保留为默认值,或者对于高分辨率型号,将其略微提高。
Eyes priority ( y/n ?:help ) : 试图通过强制神经网络训练优先级更高的眼睛来解决眼睛训练问题。
请记住,它不能保证正确的眼睛方向,它只会影响眼睛的细节和周围区域。 示例(之前和之后):
Place models and optimizer on GPU ( y/n ?:help ) : 启用GPU优化器会将所有负载都放在GPU上,这将大大提高性能(迭代时间),但会导致更高的VRAM使用率,禁用此功能会将优化器的某些工作分担给CPU,从而减少了GPU和VRAM使用率的负载,从而使您可以实现 批处理量更大或以更高的迭代时间为代价运行更苛刻的模型。 如果您收到OOM(内存不足)错误,并且不想减小批量大小或禁用某些功能,则应禁用此功能,这样一来,一些工作将被卸载到CPU上,而某些数据将从GPU VRAM转移到系统RAM中- 您将能够以较低速度为代价运行模型而不会出现OOM错误。 默认值为y(启用)。
Use learning rate dropout ( y/n/cpu ?:help ) : LRD被用于加速面部的培训,并减少相比,如果没有启用它,使用它较少的迭代子像素抖动:
-在禁用RW之前和运行其他选项之后一次。
-禁用RW之后(也是LRD)第二次使用其他选项(均匀偏航,样式效果,真面,眼睛优先),但在启用GAN之后。
此选项会影响VRAM的使用,因此,如果遇到OOM错误,则可以在CPU上运行它,但需要花费20%的迭代时间或降低批处理大小。
有关LRD的详细说明以及在培训期间启用主要功能的顺序,请参阅FAQ问题8(此主题的第3个帖子):
"When should I enable or disable random warp, GAN, True Face, Style Power, Color Transfer and Learning Rate Dropout?".
Enable random warp of samples ( y/n ?:help ) : 随机扭曲用于概括模型,以便它可以正确学习所有基本形状,面部特征,面部结构,表情等,但是只要启用该模型,学习精细细节就可能会遇到麻烦-因为它 建议您只要您的脸部仍在改善中(通过查看减少的损耗值和预览窗口)就启用此功能,一旦对脸部进行了全面训练并想要获得更多详细信息,则应禁用它并进行数千次迭代 应该会开始看到更多详细信息,并且禁用此功能后,您将继续进行培训。 默认值为y(启用)。
Uniform_yaw ( y/n ?:help ) : 有助于训练轮廓脸部,迫使模型根据其偏航角在所有面孔上均匀地训练,并优先考虑轮廓脸部,可能会导致正面脸部的训练速度变慢,这在预训练期间默认启用,可与随机变形类似地使用(在开始时 (训练过程)或在禁用或禁用RW后启用(当您对面部进行或多或少的训练,并且您希望轮廓脸部看起来更好且更少模糊时)。 当您的源数据集没有很多轮廓照片时很有用。 可以帮助降低损失值。 默认值为n(禁用)。
GAN power ( 0.0 .. 10.0 ?:help ) : GAN代表Generative Adversarial Network,在DFL 2.0的情况下,它是作为获得更详细/更清晰面孔的一种额外培训方式而实施的。 此选项的调整范围是0.0到10.0,只有在模型或多或少地完成训练后(禁用样本随机扭曲并启用LRD之后),才应启用该选项。 建议从低值0.1开始,该值在大多数情况下也是建议值,一旦启用,就不应禁用它,请确保对模型进行备份,以防不满意结果。
默认值为0.0(禁用)。
用GAN训练0.1的面部进行40k迭代之前/之后的示例:
【必看】DFL官方使用说明【已汉化】
'True face' power. ( 0.0000 .. 1.0 ?:help ) : 使用可变功率设置的真实面部训练,让您将模型鉴别器设置为更高或更低的值,这样做是为了使最终面孔看起来更像src,而对于GAN,只有在禁用了随机扭曲后,才应启用此功能 并且模型训练有素。 在启用此功能之前,请考虑进行备份。 切勿使用较高的值,典型值为0.01,但可以使用较低的值,例如0.001。 设置越高,结果面将越像源数据集中的面,这可能导致颜色匹配问题,并导致出现伪影,因此重要的是不要使用高值。 它对性能的影响很小,可能会导致OOM错误发生。 默认值为0.0(禁用)。
【必看】DFL官方使用说明【已汉化】
Face style power ( 0.0..100.0 ?:help ) and Background style power ( 0.0..100.0 ?:help ) : 此设置控制图像的面部或背景部分的样式转移,用于将目标/目标面孔(data_dst)的样式转移到最终学习的面孔,这样可以提高质量和合并后最终结果的外观,但是 高值可能导致学习的人脸看起来更像data_dst,而不是data_src。 它将从DST传输一些颜色/照明信息到结果脸部。 建议不要使用大于10的值。从0.001-0.01之类的小值开始。 此功能对性能有很大影响,使用它会增加迭代时间,并且可能需要您减小批处理大小,禁用gpu优化器或在CPU上运行LRD。 在启用此功能之前,请考虑进行备份。 默认值为0.0(禁用)。
Color transfer for src faceset ( none/rct/lct/mkl/idt/sot ?:help ) : 此功能用于将data_src的颜色与data_dst进行匹配,以使最终结果具有与data_dst相似的肤色/色调,并且训练后的最终结果不会在人脸移动时改变颜色(如果脸部不同,可能会发生这种情况 角度是从包含不同光照条件或颜色分级不同的各种光源获取的。 有以下几种选择:
- rct (reinhard color transfer)(我常用,滚石注): 基于: https://www.cs.tau.ac.il/~turkel/imagepa...ansfer.pdf
- lct (linear color transfer): 使用线性变换将目标图像的颜色分布与源图像的颜色分布匹配。
- mkl (Monge-Kantorovitch linear): 基于: http://www.mee.tcd.ie/~sigmedia/pmwiki/u...tie07b.pdf
- idt (Iterative Distribution Transfer): 基于: http://citeseerx.ist.psu.edu/viewdoc/dow...1&type=pdf
- sot (sliced optimal transfer): based on: https://dcoeurjo.github.io/OTColorTransfer/
Enable gradient clipping ( y/n ?:help ) : 梯度裁剪。实现此功能是为了防止在使用DFL 2.0的各种功能时可能发生的所谓的模型崩溃/损坏。 它对性能的影响很小,因此,如果您真的不想使用它,则必须启用自动备份,因为崩溃后的模型无法恢复,必须将其废弃,并且必须从头开始进行培训。 默认值为n(禁用),但是由于对性能的影响非常低,并且如果保持启用状态,可以防止模型崩溃而节省大量时间。 使用Style Powers时最容易发生模型崩溃,因此强烈建议您启用渐变裁剪或备份(也可以手动进行)。
Enable pretraining mode ( y/n ?:help ) : 启用预训练过程,该过程使用随机人脸数据集对模型进行初始训练,将其训练约200k-400k次迭代后,可以在开始使用要训练的实际data_src和data_dst进行训练时使用此类模型,因为您可以节省时间不必每次都从0开始全面训练(模型将“知道”面孔的外观,从而加快初始训练阶段)。可以随时启用pretrain选项,但建议在开始时仅对模型进行一次预训练。您还可以使用自己的自定义面集进行预训练,您要做的就是创建一个(可以是data_src或data_dst),然后使用4.2)data_src(或dst)util faceset pack .bat文件打包成一个文件,然后将其重命名为faceset.pak并替换(备份旧的)“ ... \ _ internal \ pretrain_CelebA”文件夹中的文件。默认值为n(禁用)。但是,如果要节省一些时间,可以去论坛找别人训练好的模型。
Shared models: https://mrdeepfakes.com/forums/thread-df...d-requests
要使用共享的预训练模型,只需下载它,将所有文件直接放入模型文件夹中,开始训练,在选择要训练的模型(如果在模型文件夹中有更多内容)和用于训练的设备后2秒钟内按任意键 (GPU / CPU)来覆盖模型设置,并确保禁用预训练选项,以便您开始正确的训练;如果您启用了预训练选项,则模型将继续进行预训练。 请注意,该模型会将迭代计数恢复为0,这是预训练模型的正常行为。
- Merging合成:
训练完模型后,该将学习的人脸合并到原始帧上以形成最终视频了(转换)。
为此,我们有2个对应于2种可用型号的转换脚本:
7) merge SAEHD
7) merge Quick96
选择其中任何一个后,命令行窗口将出现,并带有多个提示。
第一个将询问您是否要使用带交互界面的转化器,默认值为y(启用),除非你受虐狂,不然就好好开着吧,边调参数边预览
Use interactive merger? ( y/n ) :
第二个将询问您要使用哪种模型:
Choose one of saved models, or enter a name to create a new model.
[r] : rename
[d] : delete
[0] : df192 - latest
:
第3个会问您要在合并(转换)过程中使用哪个GPU / GPU:
Choose one or several GPU idxs (separated by comma).
[CPU] : CPU
[0] : GeForce GTX 1070 8GB
[0] Which GPU indexes to choose? :
按Enter将使用默认值(0)。
完成之后,您将看到一个带有当前设置的命令行窗口以及一个预览窗口,其中显示了操作交互式转换器/合并程序所需的所有控件。
这是命令行窗口和转换器预览窗口的快速浏览:
【必看】DFL官方使用说明【已汉化】
Converter具有许多选项,可用于更改遮罩类型,大小,羽化/模糊,还可以添加其他颜色转移并进一步锐化/增强最终训练的脸部。
这是解释的所有合并/转换器功能的列表:
- Main overlay modes:
- original: 显示原始画面而没有换脸
- overlay: 简单地将学习到的脸覆盖在框架上 (推荐用这个,滚石注)
- hist-match: 根据直方图叠加学习的面部和试图以使其匹配(具有2种模式:正常模式和可通过Z切换的蒙版)
- seamless: 使用opencv泊松无缝克隆功能在原始帧的头部上方融合新学习的面部
- seamless hist match: 结合了直方图匹配和无缝匹配。
- raw-rgb: 覆盖原始学习过的脸部而没有任何遮罩
注意:无缝模式可能导致闪烁。
- Hist match threshold:在直方图匹配和无缝直方图覆盖模式下控制直方图匹配的强度。
Q - 增加值
A - 减小值 - Erode mask: 控制遮罩的大小。
W - 增加遮罩腐蚀(较小的遮罩)
S - 减少遮罩腐蚀(较大的遮罩) - Blur mask: 使遮罩边缘模糊/羽化,以实现更平滑的过渡
E - 增加值
D - 减小值 - Motion blur: 动态模糊。输入初始参数(转换器模式,模型,GPU / CPU)后,合并将加载所有帧和data_dst对齐的数据,同时,它会计算用于创建此设置控制的运动模糊效果的运动矢量,让您 将其添加到人脸移动的地方,但是即使移动很小,高值也可能使人脸模糊。 该选项仅在“ data_dst / aligned”文件夹中存在一组面孔时才有效-如果在清理过程中某些面孔带有_1前缀(即使只有一个人的面孔),效果将不起作用,同样 如果有一个可以反射目标人员面部的镜子,在这种情况下,您将无法使用运动模糊,并且添加该模糊的唯一方法是分别训练每组面部。
R - 增加motion blur
F - 减少motion blur - Super resolution: 超分辨率使用与data_src数据集/面部设置增强器类似的算法,它可以为牙齿,眼睛等区域添加更多定义,并增强所学面部的细节/纹理。
T - 增加细节 the enhancement effect
G - 减少细节 - Blur/sharpen: 使用方块或高斯方法模糊或锐化所学的面部。
Y - sharpens the face
H - blurs the face
N - box/gaussian mode switch - Face scale: 缩放人脸
U - scales learned face down
J - scales learned face up - Mask modes: 6种遮罩计算方式,效果自己试一遍就知道了
dst: uses masks derived from the shape of the landmarks generated during data_dst faceset/dataset extraction.
learned-prd: uses masks learned during training. Keep shape of SRC faces.
learned-dst: uses masks learned during training. Keep shape of DST faces.
learned-prd*dst: combines both masks, smaller size of both.
learned-prd dst: combines both masks, bigger size of both.
XSeg-prd: uses XSeg model to mask using data from source faces.
XSeg-dst: uses XSeg model to mask using data from destination faces.
XSeg-prd*dst: combines both masks, smaller size of both.
learned-prddstXSeg-dst*prd: combines all 4 mask modes, smaller size of all.
- Color transfer modes: 与训练过程中的颜色转移类似,您可以使用此功能将学习到的脸部的肤色与原始帧更好地匹配,以实现更加无缝和逼真的脸部交换。 有8种不同的模式:
RCT
LCT
MKL
MKL-M
IDT
IDT-M
SOT - M
MIX-M - Image degrade modes: 您可以使用3种设置来影响原始帧的外观(不影响换面):
Denoise - denoises image making it slightly blurry (I - increases effect, K - decrease effect)
Bicubic - blurs the image using bicubic method (O - increases effect, L - decrease effect)
Color - decreases color bit depth (P - increases effect, ; - decrease effect)
附加控件::
TAB button - 在主预览窗口和帮助屏幕之间切换。
请记住,您只能在主预览窗口中更改参数,按帮助屏幕上的任何其他按钮都不会更改它们。
-/_ and =/ buttons are used to scale the preview window.
Use caps lock to change the increment from 1 to 10 (affects all numerical values).
要保存/覆盖当前一帧中所有下一帧的设置 shift /
要保存/覆盖当前一帧中所有先前帧的设置 shift M
要开始合并所有帧,请按 shift >
要返回第一帧,请按 shift <
要仅转换下一帧,请按 >
要返回上一帧,请按 <
- 把转化好的帧合成为视频
合并/转换所有面部之后,“ data_dst”文件夹中将有一个名为“ merged”的文件夹,其中包含构成视频的所有帧。
最后一步是将它们转换回视频,并与data_dst.mp4文件中的原始音轨合并。
为此,您将使用提供的4个.bat文件之一,这些文件将使用FFMPEG将所有帧组合成以下格式之一的视频-avi,mp4,lessless mp4或lossless mov:
- 8) merged to avi
- 8) merged to mov lossless 无损mov
- 8) merged to mp4 lossless 无损MP4
- 8) merged to mp4
随风大佬教程整理:
接触这软件,从萌新到技术控一路走来,在浩大的网络中游离,找软件,学技术,解决问题都无个固定的点。虽然此论坛新建,人气还不旺,资源信息量还不大,但相信不久的将来这就是DFL的家,所有关于DFL的都会汇总到此,一直有这样构思想法,今天终于见大大论坛新建,如遇春露。必须给大大的赞
密码1位:1
密码第2位:5
密码4位:2
密码5位:8
密码第8位:7
接触DFL到现在其实不到半年,也是在学AE换脸妆的偶然知道DFL换脸这软件,我玩这软件的目的可能与众多人有点不一样,只是工作上给客户视频加妆容,并不是换脸;如今网络虽然很发达,但要全面的去了解到精通一款软件还真不容易,毕竟网上的教程参差不齐,会让人走很多弯路。而等自己掌握后又懒得再去分享,因为全写出来顶得上一篇论文;
之前在这论坛上发过一篇文章http://dfldata.xyz/forum.php?mod=viewthread&tid=55&extra=;显然关注的人很少,质疑声多于支持,或许是我在这一块的资历尚浅;
其实在12月10日我就可以从头开始到无缝换脸用不到4天50万迭代;当然要达到无缝还要加其它软件去处理;
这块技术我掌握得差不多了,也不会再花大时间去研究,当然学无止境
有时间我会把我的经验写在这论坛里,只有一点,不能转贴到百度贴吧,因为之前我在那边发过一篇技术贴被删了,既然人家不想看,那就不必往那放
网上有的教程我就不详说,说些没有的,等你看懂我的浅论,就能掌握【从头开始到无缝换脸不用4天50万迭代】
一、预训练
1、开始要不要预训练
AS:要,如果你的模型要复用,换人,那就必须要预训练,经我研究发现,这软件人们说的泛化能力其实是没有的,有的只是一种映射,映射前一次训练的样式效果。不管你放再多素材,学习再久,保存出来的模型文件大小都不会变,就是说里面的参数是没有增加的,只是里面函参数的数字位置变换而产生出来的视觉效果;而预训练能保存训练后的映射效果做为起始,所以有预训练的模型复用特别快,直接开始训练得再好,映射不能保存做为起始,换人复用时那些深层映射相当于从头开始;既我之前说的神丹经几次烂飘后就变废丹
2、预训练可以承接
AS:很多人预训练好后,关了预训练,模型成像是从头开始,只是速度更快,其实有个更快的方法就是承接预训练的映射。方法是:假如你预训练的是A模型,新建一个同样参数的B模型,开始就关预训练,等开跑后就退出,然后把B存档文件的【B_SAEHD_data.dat】更名替换A模型的【A_SAEHD_data.dat】;这样就可以承接预训练的映射,这里可以减少很大的训练时间来成像;同样用这个方法可以清除迭代信息
3、预训练多久为好
AS:看你的需求,如果是做为基础模型那就让它一直练,因为这是没头的,练越久效果越好,以后转正常时做的起始越好;也随时可以转正常训练,记住预训练是个映射保存,练得越好,你换人时所花的时间越短;
4、预训练放什么素材
AS:这个也是没头的,放越多素材,里面的映射信息越多,更能适应你后期换人成像的速度,成像速度在于你预训练中的脸型差别与SRC、DST的相近值;所以那些死亡角度、侧脸都放多些不同的脸,这样你正常跑时成像就会很快;
5、预训练怎么开参数
AS:预训练时把蒙版【masked_training: True】打开,其它都关掉;预训练只有一组数据包,不涉及换脸变眼,只是为了成像,所以其它参数根本不需要开,BS开最大,你会发现不需要5W迭代成像已经很清楚了(这个要看你数据集的量);等你什么时候准备正常跑时再把【lr_dropout: y】打开,跑个一段时间就可以用了。这里要注意,开了LRD后,就不要再关,让他一直开着跑,如果你开了又关,你的模型就会卡住不会再往深学习
6、国内外预训练包接用
AS:国内外有很多免费分享的预训练包,如果参数你相中,可以直接换自己人脸预训练集接着用,这样可以让你预训练映射更丰富,成像更快
二、提脸
1、SRC、DST提素材脸
AS:SRC做为源化脸,自然要清晰像素好,视频转PNG格式图片,能保证从大视频提小脸时像素不失真。SRC脸提脸其实可以把它变DST数据来提脸,就是在DST那提脸,提出来后可以用【5.1) 查看目标头像的调试图片 data_dst view aligned_debug results.bat】来查看删除识别不准的脸,再用【5) 目标头像 删除调试图片后手动提取 data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG.bat】把错误的脸手动提取,这样可以保证提脸正确;提好后把【aligned】文件夹放SRC里就可以了;DST提脸同样
2、多人脸素材中准确提脸
AS:有些素材视频的脸很多,会提同时提出多个不同人脸,后期要筛选费很长时间,这里有个方法,把素材视频放PR里加个蒙版,把要提的那张脸用蒙版圈出(不用太准确),再导出视频,放到DFL里提出脸,这样就能只提所要的那张脸,效率和准确度都会大大提高,还省去筛选,软件提脸的速度也会提高50%;提完脸后再把原视频再转一次图片即可。
3、关于提脸的尺寸
AS:如果你做为预训练基础模型用,当然越大越清晰越好,尺寸越大会越耗CPU,不要盲目的追求大,我I5十代1024头像CPU会飘到七八十;再就是根据你的模型来说,一般256源头取320就行,再高也没必要;三是目标视频,如果1080P的视频,里面头像全都只是256左右,你提512也是没必要,图片像素上不去
4、MCLL提脸软件
AS:DFL自带的提脸速度是相当慢,我之前提过用MCLL来提脸,每秒至少30张,而且识别度、准确度更高,这是我一个朋友在某个人脸数据研究院写的一个软件,但未经他同意暂不分享
5、SRC素材脸的数量与筛选
AS:源头像脸的数量也不是越多越好,就好比正脸来说最容易获取,下载到网上分享的头像正脸素材一大堆没必要,会造成合成对像时的颜色差异很大;源头像尽量找一段视频平和光线,角度较多的视频提取出来后,左右翻转复制一份,再用【5.2) 目标头像排序 data_dst sort.bat】排一下,从上下为分界线把一边的脸都删除,保留左侧或者右侧的脸做为素材(为何只留一边?自己想想),再用【VisiPics】软件去掉差别不大的头像。这样合成时人脸就不会突明突暗后期调色不好调;
6、角度不全怎么办
AS:之前一直被这个困扰,但我已经研究出怎么把没有的死亡角度素材给补全,这个有点长留后期解说;DFL换脸技术深论
三、蒙版
1、蒙版什么时候画
AS:源头像蒙版一开始就要画,把干净的脸部画出来,其它的不要,特别是流海。训练达到效果后写入源头像;而目标头像一开始也可以一起画,沿额头、头发的接触边缘来画,这样合成时的衔接就会很好,如果在半额头画就会出现色差分割层。目标头像的蒙版训练达到效果后不要急于写入,如果你一开始训练就写入会出现这种情况,源与目标对脸时源头像有流海被蒙版掉(就是缺额头部分),目标头像露额,会把源头像的头发学进去,会看模糊的头发黑影;所以目标头像的蒙版合成时用就行
2、蒙版模型复用
AS:蒙版模型可以复用,不用自己的从头练,当然,从头练也花不了多少时间,但复用别人分享的蒙版模型会减少很多时间而且效果会更好;蒙版模型是通用的没有尺寸限制,就是256的512也可以用;网上有分享很多好的蒙版模型,直接下载来用,有些都不用画直接训练效果都很好
四、训练
从关了预训开始就算是正式的训练,而这个训练过程没有一个准确标准流程可以走,因为要视情况来调整参数达到最理想的效果;具体分为三个阶段,第一是学习成像阶段,第二调整阶段,第三收敛取真阶段;
第一阶段:学习成像
1、正式训练就会有两组数据,既SRC与DST,开训就把【 masked_training: True】【random_warp: True】开启,其它都关闭(如果SRC素材不全面要把【andom_flip: True】同时开着)
由于只开这两个,LOSS值会下降得很快,成像也会跟着出来,预览图只要关注第五列;三种情况:有些图换得比较准确,有些惨不忍睹,而有些会一片糊;换得准确的是因为SRC与DST对上图,这个基本没问题,惨不忍睹的是SRC缺与DST角度图,这个训练长时间点会改善但都不会太理想;一片糊的是由于模型缺角度导致,这个练时间长点会出来,但会非常非常慢,模型缺角度的问题应该在预训练时就要补全;
2、这样要练多久?看你觉得第五列图大部分图轮廓五观基本准确就行(不要等全部,每张图起跑线都不同,你要等到那些缺图缺角度的都准确那浪费的是自己的时间,除非你补全所缺的角度),也不要太在意清晰度,开着RW就不会太清晰
3、这时候把LRD打开,即【lr_dropout: True】【 masked_training: True】【random_warp: True】开启,其它都关闭,(之前开了【andom_flip: True】的要保留打开)
4、开了LRD后图会变清晰一些,训练一段时间,当看LOSS值下降得很慢或已经陆续有反弹迹象时为止;第一阶段可以结束
5、BS大小推荐为4(尽管你可以开16),经研究对比发现,在这一阶段BS4与BS8同样跑6小时,4的效果比8要好很多,而2效果不理想
第二阶段:调整
1、这时候如果有些眼睛对不上,或脸部侧脸轮廓不清晰的就可把【 masked_training: True】【 eyes_prio】【uniform_yaw】打开,把其它关闭,特别是【lr_dropout: True】【random_warp: True】【andom_flip: True】在这一阶段一定要关
2、有时遇到源脸比目标脸小,预览图上出的效果明显被拉胖的情况,你就要同时把【 true_face_power】打开,值不要太大,不然颜色会差别很大,推荐是0.001;这个可以从一开始就开着,主要看你源脸是否与目标脸轮廓差别很大;3、有些人会喜欢SRC的五观却要DST的轮廓的就可以把【face_style_power: 0.0001】打开调整,这样效果会更像目标轮廓,与【 true_face_power】刚好相反,所以不要一同开着
4、当源脸比目标脸小时,合成时会用到蒙版侵蚀羽化来做来边缘合成的衔接,这时候可以把【bg_style_power: 0.001】打开能学习些边缘背景溶合信息,值不要太大,不然会爆5、颜色调整也可以这时开着,但多数情况由于SRC素材脸颜色不一样的情况,就算怎么训练颜色都不会自然,一般我都是关闭,后期AE或PR调整;开RCT模式会出现有些脸色虽然相近了,但一些红唇会特别的深色,白黑差度非常大
6、上面的参数可以逐个单开调整,也可以全打开一并调整,只是需求与效率问题;
7、这一阶段要注意的是,所有参数只是调整,达不到很精细,比如【 eyes_prio】有些眼睛会大体上对位但不一定能完全正确,【uniform_yaw】轮廓虽然出来了,你会发觉并不是很像SRC人物,主要还是缺SRC的原因;
8、关于LOSS值,当你打开上面的任何一个参数LOSS都会有不同程度突然飘高,这个不用在意,每一项就像是一个层,LOSS值在每一层间,比如(只是比如)123层,LOSS层值是0.39~0.3、029.~2、0.19~0.1,所以不用在乎LOSS的高低,要看LOSS的下降变化,当LOSS值下降得非常慢或有反弹迹象一段时间时,基本就可以停了。当然你要求高或时间充裕可以一直练,软件在某一阶段学不下去时就会自动跳到下一层;在第一阶段也是同样,【 eyes_prio】【uniform_yaw】可以在第一阶段就打开(不建议,因为有些不需要调整的你开着就是浪费GPU的资源),一直跑时间够长LOSS值都会下去;这里要明白一个道理,假如SRC缺角度,就如拿着初中的课本去运用高中的知识你再怎么花时间都不会有理想的效果,这就是有些人就算把LOSS值降得很低而效果却不理想的原因
9、BS大小在这一阶段尽情的开满
第三阶段:收敛取真
1、当调整到自己认为理想时就可以到最后一步,这时你应该文件备份一下,因为GAN是很容易过头,也容易爆
2、把【 masked_training: True】【lr_dropout: True】【gan_power: 0.0001】打开,其它所有都关闭
3、GAN取值很关键,到底应该取多大也没有明确的说法,打个比如,10CM的尺度,每1CM有个刻度,最理想的点在某一个刻度上,GAN的值就像你往前走的步伐尺寸,假如理想点在6刻度上,你GAN开1能到达,开2能快点到达,开3能更快到达,开4速度更快,但却会错过,永远不能到达;而就算你开123虽然能到达但一不留意就会错过;所以取值范围最好以最小步伐让他跑( GAN的值可以小到0.0001),时间虽然长间点,也让关注点有空间;
4、当你打开GAN时,这时LOSS应当在0.1以下;
5、那么要多久算结束?看第五列,头像会慢慢的有所变化,清晰度,阴影感会慢慢的更强,这时头像外围部分会出现彩色格子,会随时时间越来越明显,但只要不在头像之内就不影响,当你觉得清晰度满意了就结束,要是脸部出现马赛克那就表明已经过头了。要是出现彩格就算是爆了
6、BS大小,GAN很占GPU,逐个尝试显卡能承载的最大值
关于蒙版【 masked_training: True】这一项,我上述是全程开着的,把它关闭可以学习蒙版外围的背景,这个要花非常高的时间成本,学背景是合成调蒙版侵蚀羽化时用得上,开启学习背景的时间应该在第二阶段,如果在第一阶段开启会有机率把SRC的流海学到DST里。
四、训练
从关了预训开始就算是正式的训练,而这个训练过程没有一个准确标准流程可以走,因为要视情况来调整参数达到最理想的效果;具体分为三个阶段,第一是学习成像阶段,第二调整阶段,第三收敛取真阶段;第一阶段:学习成像
1、正式训练就会有两组数据,既SRC与DST,开训就把【 masked_training: True】【random_warp: True】开启,其它都关闭(如果SRC素材不全面要把【andom_flip: True】同时开着)
由于只开这两个,LOSS值会下降得很快,成像也会跟着出来,预览图只要关注第五列;三种情况:有些图换得比较准确,有些惨不忍睹,而有些会一片糊;换得准确的是因为SRC与DST对上图,这个基本没问题,惨不忍睹的是SRC缺与DST角度图,这个训练长时间点会改善但都不会太理想;一片糊的是由于模型缺角度导致,这个练时间长点会出来,但会非常非常慢,模型缺角度的问题应该在预训练时就要补全;
2、这样要练多久?看你觉得第五列图大部分图轮廓五观基本准确就行(不要等全部,每张图起跑线都不同,你要等到那些缺图缺角度的都准确那浪费的是自己的时间,除非你补全所缺的角度),也不要太在意清晰度,开着RW就不会太清晰
3、这时候把LRD打开,即【lr_dropout: True】【 masked_training: True】【random_warp: True】开启,其它都关闭,(之前开了【andom_flip: True】的要保留打开)
4、开了LRD后图会变清晰一些,训练一段时间,当看LOSS值下降得很慢或已经陆续有反弹迹象时为止;第一阶段可以结束
5、BS大小推荐为4(尽管你可以开16),经研究对比发现,在这一阶段BS4与BS8同样跑6小时,4的效果比8要好很多,而2效果不理想
第二阶段:调整
1、这时候如果有些眼睛对不上,或脸部侧脸轮廓不清晰的就可把【 masked_training: True】【 eyes_prio】【uniform_yaw】打开,把其它关闭,特别是【lr_dropout: True】【random_warp: True】【andom_flip: True】在这一阶段一定要关
2、有时遇到源脸比目标脸小,预览图上出的效果明显被拉胖的情况,你就要同时把【 true_face_power】打开,值不要太大,不然颜色会差别很大,推荐是0.001;这个可以从一开始就开着,主要看你源脸是否与目标脸轮廓差别很大;3、有些人会喜欢SRC的五观却要DST的轮廓的就可以把【face_style_power: 0.0001】打开调整,这样效果会更像目标轮廓,与【 true_face_power】刚好相反,所以不要一同开着
4、当源脸比目标脸小时,合成时会用到蒙版侵蚀羽化来做来边缘合成的衔接,这时候可以把【bg_style_power: 0.001】打开能学习些边缘背景溶合信息,值不要太大,不然会爆5、颜色调整也可以这时开着,但多数情况由于SRC素材脸颜色不一样的情况,就算怎么训练颜色都不会自然,一般我都是关闭,后期AE或PR调整;开RCT模式会出现有些脸色虽然相近了,但一些红唇会特别的深色,白黑差度非常大
6、上面的参数可以逐个单开调整,也可以全打开一并调整,只是需求与效率问题;
7、这一阶段要注意的是,所有参数只是调整,达不到很精细,比如【 eyes_prio】有些眼睛会大体上对位但不一定能完全正确,【uniform_yaw】轮廓虽然出来了,你会发觉并不是很像SRC人物,主要还是缺SRC的原因;
8、关于LOSS值,当你打开上面的任何一个参数LOSS都会有不同程度突然飘高,这个不用在意,每一项就像是一个层,LOSS值在每一层间,比如(只是比如)123层,LOSS层值是0.39~0.3、029.~2、0.19~0.1,所以不用在乎LOSS的高低,要看LOSS的下降变化,当LOSS值下降得非常慢或有反弹迹象一段时间时,基本就可以停了。当然你要求高或时间充裕可以一直练,软件在某一阶段学不下去时就会自动跳到下一层;在第一阶段也是同样,【 eyes_prio】【uniform_yaw】可以在第一阶段就打开(不建议,因为有些不需要调整的你开着就是浪费GPU的资源),一直跑时间够长LOSS值都会下去;这里要明白一个道理,假如SRC缺角度,就如拿着初中的课本去运用高中的知识你再怎么花时间都不会有理想的效果,这就是有些人就算把LOSS值降得很低而效果却不理想的原因
9、BS大小在这一阶段尽情的开满
第三阶段:收敛取真
1、当调整到自己认为理想时就可以到最后一步,这时你应该文件备份一下,因为GAN是很容易过头,也容易爆
2、把【 masked_training: True】【lr_dropout: True】【gan_power: 0.0001】打开,其它所有都关闭
3、GAN取值很关键,到底应该取多大也没有明确的说法,打个比如,10CM的尺度,每1CM有个刻度,最理想的点在某一个刻度上,GAN的值就像你往前走的步伐尺寸,假如理想点在6刻度上,你GAN开1能到达,开2能快点到达,开3能更快到达,开4速度更快,但却会错过,永远不能到达;而就算你开123虽然能到达但一不留意就会错过;所以取值范围最好以最小步伐让他跑( GAN的值可以小到0.0001),时间虽然长间点,也让关注点有空间;
4、当你打开GAN时,这时LOSS应当在0.1以下;
5、那么要多久算结束?看第五列,头像会慢慢的有所变化,清晰度,阴影感会慢慢的更强,这时头像外围部分会出现彩色格子,会随时时间越来越明显,但只要不在头像之内就不影响,当你觉得清晰度满意了就结束,要是脸部出现马赛克那就表明已经过头了。要是出现彩格就算是爆了
6、BS大小,GAN很占GPU,逐个尝试显卡能承载的最大值
关于蒙版【 masked_training: True】这一项,我上述是全程开着的,把它关闭可以学习蒙版外围的背景,这个要花非常高的时间成本,学背景是合成调蒙版侵蚀羽化时用得上,开启学习背景的时间应该在第二阶段,如果在第一阶段开启会有机率把SRC的流海学到DST里。
用DF结构的话,A当src,B当dst先训练一段时间,然后A和B对换,B当src,A当dst。
这样能把在B上学到的稀有角度迁移到A上去