DeepFaceLab系列 6: 怎么使用SAEHD模型进行训练?

秉烛夜游

发布时间:

https://bingzhuyeyou.com/

1 前言

之前的完整教程使用的是Quick96作为例子, 因为这个参数较少, 方便新手入门。但有了一定基础后,使用SAEHD能得到更好质量的视频,所以这篇文章就来讲解怎么设置SAEHD的参数。

不输入任何数据, 直接按回车, 表示使用最左侧的默认数据。

  1. 几个小时备份一次 ( 0..24 ?:help ) :
    1. 默认2小时,自己也可以手动保存
  2. [n] 保存预览历史记录 ( y/n ?:help ) :
    1. 每次迭代会保存一张当前训练效果图,方便你查看模型进步效果,来判断是否已经训练到顶峰了。图片保存在model内一个以history结尾的文件夹中.
    2. 推荐值: n 一般人看预览窗口的图就OK了。这个功能给做专业对比测试的用
  3. 目标迭代次数 Target iteration : 0
    1. 到了这个次数就停止训练,选0就一直会训练下去,直到你手动停止。
    2. 推荐值:0
  4. 随机翻转源人脸 Flip SRC faces randomly ( y/n ?:help ) :
    1. 图片随机左右翻转,以增多数据。src图不足时可以开,但更好的方式是增加数据。如果遇到src人脸左右不对称,比如一边有痣,一边没痣,那么开启后会导致练出来的人脸两边都会有若隐若现的痣。不推荐开,增加数据集是王道
    2. 推荐值: n
  5. 随机翻转目标人脸 Flip DST faces randomly ( y/n ?:help ) :
    1. 同上,不推荐开
  6. 批量大小 Batch_size ( ?:help ) :
    1. 批量大小(Batch Size)是指在训练神经网络时,每次参数更新所使用的样本数量。批量大小的选择对模型的训练过程和最终性能有着显著的影响。不同的批量大小会带来不同的影响:
      1. 学习过程的稳定性:小批量通常会导致训练过程中的梯度估计更加噪声,这可以帮助模型逃离局部最小值,但同时也可能导致训练过程更加不稳定。
        大批量可以提供更准确的梯度估计,从而使训练过程更加稳定,但有时也可能陷入局部最小值
      2. 训练时间:使用大批量可以更有效地利用硬件资源(如GPU),通常可以加快每个epoch的训练时间。但这并不意味着总体训练时间一定更短,因为大批量可能需要更多的epoch才能收敛。
        小批量训练可能每个epoch耗时更长,因为每次更新都需要更多的迭代次数。
      3. 内存使用:大批量训练需要更多的内存,这可能限制。
    2. 确定适当的 batch-size 大小没有固定的标准答案,它会根据数据集、模型架构、硬件资源和训练目标等因素而变化。
    3. 最好是结合实际情况进行实验和测试。建议尝试不同的 batch-size,并观察训练过程中的训练速度、收敛性以及模型的效果,从而找到适合你的任务的最佳设置。可以做在你的硬件配置基础上, 做一个2/4/6/8/16的对比测试。或者中庸地选择4或者6。
  7. [256] Resolution ( 64-640 ?:help ) :
    1. 模型生成人脸的分辨率。注意,这个只是尺寸大,并不是更清晰。大尺寸的结果就是训练速度更慢,通常256足够用了。一般人连256都训练不到高清,完全没必要用256以上的分辨率模型。
    2. 推荐值: 128-256,要是16的倍数
  8. [wf] Face type ( h/mf/f/wf/head ?:help ) :
    1. 从原图中截取的人脸框大小。
      1. h是half face,
      2. mf是mid-half-face,
      3. f是full-face,
      4. wf是whole-face,
      5. head是最大的带整个头的人脸。
    2. 推荐值: 推荐用wf
  9. [liae] AE architecture ( ?:help ) :
    1. 模型的核心架构类型。有DF和LIAE两种架构。内容较多,具体区别细节以后单独开教程。这里你只要记住结论DF五官结构保留的更像,LIAE光影处理的更好。除了核心架构外,还有几个附带参数可加,-u增加人脸相似度,-d在相同显存占用量下,牺牲速度换取分辨率. 核心架构和附带参数可组合使用,如 df, liae, df-d, df-ud, liae-ud
    2. DF:此模型架构提供了更直接的人脸交换,不使人脸变形,所以源与目标自己的人脸匹配很重要。该模型在正面拍摄时效果最好,并且要求您的源数据集具有所有所需的角度,否则在侧面轮廓上可能会产生较差的结果。官方推荐的模式,复用后相似度高,适合复用!
      LIAE: 该模型结构可以使面部变形,这种模型与源头镜头的相似性较差,但是可以更好地处理侧面轮廓,并且在数据集方面更宽容,通常可以产生更精致的人脸交换,并具有更好的颜色光线匹配度。
      U: 这个选项是为了提升合成结果与源素材的相似度。
      D:这个版本旨在提高效率。同等配置下,它可以让你以两倍的分辨率训练你的模型,比如之前只能跑128,启用之后可以跑256。如果分辨率相同,单次迭代时间更少,消耗显存更少。但是在质量上可能会有所降低,有待验证。((experimental实验性功能)
      UD:结合了两个变量,以实现最大相似度并提高分辨率/性能。 达到最佳效果吗,可能需要更长的训练。
    3. 推荐值: LIAE系列
  10. [256] AutoEncoder dimensions ( 32-1024 ?:help ) :
    1. 模型最中间一层神经元的数量。越大越好,但是需要的显卡显存越多。
    2. 推荐值:256及以上
  11. [128] Encoder dimensions ( 16-256 ?:help ) :
    1. 越大越好,但是需要的显卡显存越多。
    2. 推荐值:64及以上
  12. [128] Decoder dimensions ( 16-256 ?:help ) :
    1. 越大越好,但是需要的显卡显存越多。
    2. 推荐值:64及以上
  13. [44] Decoder mask dimensions ( 16-256 ?:help ) :
    1. Typical mask dimensions = decoder dimensions / 3.
  14. [n] Masked training ( y/n ?:help ) : ?
    1. 只训练遮罩部分
    2. 只有人脸类型是wf或head时可选。开启后模型只关注于被遮罩划分出来的人脸,不学习遮罩外的无关区域。这个遮罩需要提前用Xseg模型应用得到。不然默认使用人脸关键点围合而成的遮罩,会把头发等其他区域给囊括进来。
    3. 推荐值:y
  15. [n] Eyes and mouth priority ( y/n ?:help )
    1. 眼部嘴部优先训练?
    2. 眼神和嘴巴口型是最难训练的区域,开启这个参数可以让模型重点优化眼部和嘴部。但如果你没有闭眼素材和张嘴素材,开这个参数也没用
    3. 推荐值:n
  16. [n] Uniform yaw distribution of samples ( y/n ?:help ) :
    1. 均匀化样本中各角度的素材?
    2. 一般样本中正脸图片居多,俯仰脸侧脸数量较少,这会导致纯随机选取样本时,这些大角度素材被选中训练的概率较小,模型对它们的学习不足。开启此参数后,会根据人脸角度来挑选素材,让大角度人脸样本得到较好的训练
    3. 推荐值:n 看你的目标视频,如果有很多大角度的话,建议开启.
  17. [n] Blur out mask ( y/n ?:help ) : ?
    1. 在训练样本中,对应用的面罩之外的附近区域进行模糊处理。这样做的结果是,人脸附近的背景变得平滑且在替换人脸时不太显眼。需要src(源)和dst(目标)人脸集中的xseg遮罩。
    2. 推荐值:n
  18. [y] Place models and optimizer on GPU ( y/n ?:help ) : ?
    1. 开启后模型权重会放在GPU上使用,减少GPU和内存通信,从而提高训练速度。显存足够就开启,显存不够就关闭
    2. 推荐值:y
  19. [y] Use AdaBelief optimizer? ( y/n ?:help ) :
    1. 使用最新的adabelief优化器作为训练用的迭代方法。模型收敛到最优状态的速度更快,效果更好。但会占用更多显存
    2. 推荐值:y
  20. Use learning rate dropout ( n/y/cpu ?:help ) :
    1. 学习率可以简单理解每次模型进化的步子大小。步子大了容易扯着蛋,走上歧途。步子小了可以更精准走到正确的地点,但速度就慢。
    2. 推荐值:前期不开,等你感觉画面很久没进步时开启。
  21. [y] Enable random warp of samples ( y/n ?:help ) :
    1. 开扭曲后,给模型增大学习难度,让模型得到更高难度的锻炼,学成后就更牛逼。不开的话容易src和dst互相影响,让生成的src像dst。
    2. 推荐值:y 前期开,后期可关闭
  22. [0.0] Random hue/saturation/light intensity ( 0.0 .. 0.3 ?:help ) : ?
    1. 是否随机调整图像的色调、饱和度和光强度?
    2. 推荐值: N, 也就是0.0
  23. [0.0] GAN power ( 0.0 .. 1.0 ?:help ) :
    1. 机器学习中有个算法叫GAN,能生成细节更丰富的图,眼睫毛都根根分明。但特别耗显存,高配玩家建议开启。开启后模型崩溃的概率会增大,一定要做好自动备份。
    2. 推荐值:低配0 高配0.1
  24. [32] GAN patch size ( 3-640 ?:help ) :
    1. GAN每次去辨别的区域大小,越大效果越好,显存也占用越多。
    2. 这个值越大, 质量越高, 但是需要显存越多.
    3. 推荐值:分辨率/8
  25. [16] GAN dimensions ( 4-512 ?:help ) : ?
    1. GAN网络的尺寸
    2. 尺寸越高,对VRAM的要求就越高。
    3. 典型值为 16
  26. [0.0] Face style power ( 0.0..100.0 ?:help ) :
    1. 用于控制人脸色彩的强度, 让生成的人脸和原本的人脸在明暗色彩上更相似。
    2. 必须搭配XSeg trained mask使用
    3. 初期不开,后期从0.001开始慢慢增加,不要开太大,0.01差不多了,这个很容易崩
    4. 新手不建议开启,使用 即默认的0.0即可
  27. [0.0] Background style power ( 0.0..100.0 ?:help ) : ?
    1. 用于控制背景颜色和样式
    2. 不建议开启 即默认的0.0
  28. [rct] Color transfer for src faceset ( none/rct/lct/mkl/idt/sot ?:help ) :
    1. src素材通常光影不够丰富,开启这个参数后,可以每次对src素材做随机颜色变化,人为营造出各种光影色彩
    2. 推荐值1:尝试所有选项, 找到最合适的选择
    3. 推荐值2: 如果想省事, rct或lct
  29. [y] Enable gradient clipping ( y/n ?:help ) :
    1. 使用梯度剪裁.
    2. 梯度是可以理解为每次模型更新的变化剧烈程度。
    3. 开启此参数后,会把模型剧烈的变化给限制住,能极大避免模型崩溃。不然很可能遇到一次很奇怪的数据,导致模型瞬间爆炸,崩成一片纯色。
    4. 推荐值:y 强烈建议开着,不会多消耗显存
  30. [n] Enable pretraining mode ( y/n ?:help ) :
    1. 使用预训练模式
    2. 软件包在 _internal\pretrain_CelebA\faceset.pak 放了一份综合名人人脸数据,人种、光影、角度很丰富,开启此参数后,src和dst就会使用这份数据做为训练。让模型可以先做个通识教育。为你自己的特定数据学习打下良好基础。
    3. 推荐值:不建议开启

2 参数实例

Running trainer.

选择一个模型, 或者输入一个名称去新建模型
[r] : 重命名
[d] : 删除

[0] : s1 - latest
 : s2
s2

模型第一次运行 Model first run.

可用设备列表:

[CPU] : CPU
  [0] : NVIDIA GeForce RTX 4060 Ti

[0] 选择哪一个设备? : 0
0

[2] 几个小时备份一次 ( 0..24 ?:help ) :
2
[n] 保存预览历史记录 ( y/n ?:help ) :
n
[0] 目标迭代次数 Target iteration :
0
[n] 随机翻转源人脸 Flip SRC faces randomly ( y/n ?:help ) :
n
[n] 随机翻转目标人脸 Flip DST faces randomly ( y/n ?:help ) :
n
[4] 批量大小 Batch_size ( ?:help ) :
4
[256] Resolution ( 64-640 ?:help ) :
256
[wf] Face type ( h/mf/f/wf/head ?:help ) :
wf
[liae] AE architecture ( ?:help ) :
liae
[256] AutoEncoder dimensions ( 32-1024 ?:help ) : 128
128
[128] Encoder dimensions ( 16-256 ?:help ) :
128
[128] Decoder dimensions ( 16-256 ?:help ) :
128
[44] Decoder mask dimensions ( 16-256 ?:help ) :
44
[y] Masked training ( y/n ?:help ) :
y
[n] Eyes and mouth priority ( y/n ?:help ) :
n
[n] Uniform yaw distribution of samples ( y/n ?:help ) :
n
[n] Blur out mask ( y/n ?:help ) :
n
[y] Place models and optimizer on GPU ( y/n ?:help ) :
y
[y] Use AdaBelief optimizer? ( y/n ?:help ) :
y
[n] Use learning rate dropout ( n/y/cpu ?:help ) :
n
[y] Enable random warp of samples ( y/n ?:help ) :
y
[0.0] Random hue/saturation/light intensity ( 0.0 .. 0.3 ?:help ) :
0.0
[0.1] GAN power ( 0.0 .. 5.0 ?:help ) :
0.1
[32] GAN patch size ( 3-640 ?:help ) :
32
[16] GAN dimensions ( 4-512 ?:help ) :
16
[0.0] Face style power ( 0.0..100.0 ?:help ) :
0.0
[0.0] Background style power ( 0.0..100.0 ?:help ) :
0.0
[rct] Color transfer for src faceset ( none/rct/lct/mkl/idt/sot ?:help ) :
rct
[y] Enable gradient clipping ( y/n ?:help ) :
y
[n] Enable pretraining mode ( y/n ?:help ) :
n
Initializing models: 100%|###############################################################| 7/7 [00:04<00:00,  1.41it/s]
Loading samples: 100%|##############################################################| 654/654 [00:01<00:00, 481.56it/s]
Loading samples: 100%|############################################################| 1619/1619 [00:03<00:00, 491.41it/s]
==================== Model Summary ====================
==                                                   ==
==            Model name: s2_SAEHD                   ==
==                                                   ==
==     Current iteration: 0                          ==
==                                                   ==
==------------------ Model Options ------------------==
==                                                   ==
==            resolution: 256                        ==
==             face_type: wf                         ==
==     models_opt_on_gpu: True                       ==
==                 archi: liae                       ==
==               ae_dims: 128                        ==
==                e_dims: 128                        ==
==                d_dims: 128                        ==
==           d_mask_dims: 44                         ==
==       masked_training: True                       ==
==       eyes_mouth_prio: False                      ==
==           uniform_yaw: False                      ==
==         blur_out_mask: False                      ==
==             adabelief: True                       ==
==            lr_dropout: n                          ==
==           random_warp: True                       ==
==      random_hsv_power: 0.0                        ==
==       true_face_power: 0.0                        ==
==      face_style_power: 0.0                        ==
==        bg_style_power: 0.0                        ==
==               ct_mode: rct                        ==
==              clipgrad: True                       ==
==              pretrain: False                      ==
==       autobackup_hour: 2                          ==
== write_preview_history: False                      ==
==           target_iter: 0                          ==
==       random_src_flip: False                      ==
==       random_dst_flip: False                      ==
==            batch_size: 4                          ==
==             gan_power: 0.1                        ==
==        gan_patch_size: 32                         ==
==              gan_dims: 16                         ==
==                                                   ==
==------------------- Running On --------------------==
==                                                   ==
==          Device index: 0                          ==
==                  Name: NVIDIA GeForce RTX 4060 Ti ==
==                  VRAM: 14.23GB                    ==
==                                                   ==
=======================================================
当鼠标光标选中Training preview窗口时
按 "Enter" 停止训练并保存进度
按 "Space" 可以切换视图
按 "P" 可以刷新预览图
按 "S" 可以保存训练进度
https://bingzhuyeyou.com
===================================================
[模型保存时间] [迭代次数] [单次迭代时间] [源损失] [目标损失]

Trying to do the first iteration. If an error occurs, reduce the model parameters.

3 图片参考

如果显卡配置一般,很可能会报错,此时需要你降低参数再试。

image

https://bingzhuyeyou.com/

发表评论

没有账号? 忘记密码?