在开始训练模型之前,我们需要先了解,我们目前现有几个模型,SAEHD、AMP、Quick96,这几个是比较稳定的模型,当然还有最新的木兰模型。木兰模型的使用,需要用在dfl 开源代码上二次开发的软件去使用。
术语介绍
- SAEHD:高清自动编码器,至少显存在6GB以上。最常用的模型,有多种架构变体;一般来讲,src、dst有一些相似之处时,交换人脸、特别是一般的脸/头形状,可以自由地重复使用、预训练,一般可以提供快速的、较好的效果,但一些架构会因相似性差、光线、颜色将导致人脸替换效果差。
- AMP:新模型类型,更倾向保留源数据(src)形状,同样,显存至少6GB以上。具有可调整的变形因子,后期更考验合成技术、经验。与SAEHD不同的是,它没有不同的架构可供选择,并且在重复使用时,不太通用,需要更长的训练时间,也没有预训练的选项,但可以提供好的效果,结果看起来更像src。
- Quick96:测试模型,适用于显存 2-4GB。固定参数:96*96像素分辨率、(全脸)FullFace类型、batch-size:4、SAEHD的DF-UD架构,用于快速测试效果。
训练模型步骤顺序(仅供参考)
大致模型概况介绍了,我的建议选择是尽量用SAEHD模型,关于模型架构变体,可以看下文,如果你急于尝鲜想迫不及待训练个模型玩玩,那可以参考下面的方法。我相信大家希望有更快的捷径走,我依旧推荐,你先自己训练一个,然后,有了一定基础,在使用模型复用(通俗来说,万能模型等等)
新手训练模型 参考方法1
模型参数 | 阶段1 | 阶段2 | 阶段3 | 阶段4 | 阶段5 | 阶段6 | 阶段7 | 阶段8 | 阶段9 |
[n]Flip SRC faces randomly | off | off | off | off | off | off | off | off | off |
[y]Flip DST faces randomly | on | on | on | on | on | on | on | on | on |
[8]batch size | 4~8 | 8~16 | 8~16 | 8~16 | 8~16 | 8~16 | |||
Masked training23 | on | on | on | on | on | on | on | on | on |
[n]Eyes and mouth priority | off | off | off | off | on | ||||
[n]Uniform yaw distribution of samples | off | off | on | off | |||||
[n]Blur out mask4 | off | off | off | off | on | on | |||
[y]Place models and optimizer on GPU5 | on | on | on | on | on | on | on | on | on |
[y]Use AdaBelief optimizer | on | on | on | on | on | on | on | on | on |
[n]Use learning rate dropout | off | off | off | off | off | ||||
[y]Enable random warp of samples | on | on | on | on | off | off | off | off | |
[0.0]Random hue/saturation/light intensity | off | off | off | off | 0.01 | 0.01 | off | ||
[0.0]GAN power | off | off | off | off | off | off | off | ||
[0.0]true face6 | off | off | off | off | 0.01 | 0.01 | off | ||
[0.0]Background style power | off | off | off | off | 0.01 | 0.01 | |||
[none]Color transfer for src faceset | none | none | none | none | rct/lct | rct/lct | rct/lct | rct/lct | |
[n]Enable gradient clipping | on | on | on | on | on | on | on | on | on |
[n]Enable pretraining mode | off | off | off | off | off | off | off | off | off |
防止模型崩溃,每个阶段备份一次。结合预览图和损失值来看 | loss<0.3/不降反升 | loss极慢/不降反升 | loss<0.3/不降反升 | loss<0.1/不降反升 | loss极慢/不降反升 | loss极慢/不降反升 | loss极慢/不降反升 | 2~3W迭代 |
新手训练模型 参考方法2
模型参数 | 阶段1 | 阶段2 | 阶段3 | 阶段4 | 阶段5 |
[n]Flip SRC faces randomly | 视素材 | 视素材 | 视素材 | 视素材 | 视素材 |
[y]Flip DST faces randomly | 视素材 | 视素材 | 视素材 | 视素材 | 视素材 |
[8]batch size(视机器配置) | 4~8 | 8~16 | 8~16 | 8~16 | |
Masked training | on | on | on | on | on |
[n]Eyes and mouth priority | 视素材 | 视素材 | 视素材 | 视素材 | 视素材 |
[n]Uniform yaw distribution of samples | on | on | off | off | |
[n]Blur out mask | on | on | off | off | |
[y]Place models and optimizer on GPU | on | on | on | on | on |
[y]Use AdaBelief optimizer | on | on | on | on | on |
[n]Use learning rate dropout | off | on | on | on | |
[y]Enable random warp of samples | on | on | on | off | |
[0.0]Random hue/saturation/light intensity | off | off | off | off | off |
[0.0]GAN power | off | off | off | off | |
[0.0]true face | off | off | off | off | off |
[0.0]Background style power | off | off | off | off | off |
[none]Color transfer for src faceset | rct/lct | rct/lct | rct/lct | rct/lct | rct/lct |
[n]Enable gradient clipping | on | on | on | on | on |
[n]Enable pretraining mode | off | off | off | off | off |
迭代次数7 | 500K+ | 500K | 500K | 500K+ | 200~300K |
这里,火星泰二师兄多提一句,为啥两个训练方法差很多,提示说的很明白,并没有固定的顺序,当然也不是完全瞎搞,大致思路,就是把形先学习了,在填细节,细节有很多。最终看预览图,毕竟咋们这个弄得都是机器视觉类,从研究角度来说,那就看loss值,尤其你会代码的话,可以解开很多模型参数,分析loss值对应效果。
模型参数中文解释
- SAEHD模型参数设置8
- Resolution:像素分辨率,模型分辨率越高,模型学习的人脸越详细
- Face type:脸型,一般就选择wf
- AE architecture:模型架构
- AutoEncoder dimensions:自解码器,影响模型学习人脸的整体能力,直接默认
- Encoder dimensions:编码器,影响编码器学习人脸的能力,直接默认
- Decoder dimensions:解码器,影响解码器重现人脸的能力,直接默认
- Decoder mask dimensions:遮罩解码器
- SAEHD训练参数设置9
- Autobackup every N hour:自动备份,单位小时,
- Write preview history:创建预览历史记录
- Target iteration:预设迭代次数
- Flip SRC faces randomly:随机翻转src人脸,视情况开
- Flip DST faces randomly:随机翻转dst人脸,视情况开
- Batch_size:涉及算法,总的来说,bz数值选择适中。建议最小值4
- Eyes and mouth priority:眼睛和嘴巴(包括牙齿)优化,提供清晰度和细节水平;没有闭眼和张嘴的素材,则关闭
- Uniform yaw distribution of samples:轮廓面优化,预训练默认打开
- Blur out mask:羽化遮罩蒙版,要配合XSeg训练一起用,否则就是关闭
- Place models and optimizer on GPU:模型、优化器在gpu上运行,提高了性能,但增加了显卡的负载。
- Use AdaBelief optimizer:adabelief优化器,提高模型准确性和训练面部质量
- Use learning rate dropout:学习率衰减,加速人脸训练,减少亚像素人脸抖动,在一定程度上也可以减少灯光闪烁
- Enable random warp of samples:是否启用随机扭曲样本,开始训练模型的时候,就开启
- Random hue/saturation/light intensity:随机色调/饱和度/光强,建议值0.05
- GAN power:额外的训练方式,获得脸部细节,建议0.01
- GAN patch size=模型分辨率/8
- GAN dimensions:提高效果,获得锐利的边缘,建议16
- true face:合成后的脸看起来更像src,同时会带来脸更加锐利。会改变照明和颜色匹配,建议0.001或者0.01
- Face style power:开启时,先备份模型,从0.001-0.1开始,根据你的需要增加或减少。改善照明和颜色匹配
- Background style power:同Face style power
- Color transfer for src faceset:src和dst颜色匹配,让合成后的肤色、色调和dst相似
- rct/lct/mkl/idt/sot sot开启在训练期间性能受影响,其余在合并的时候对性能有影响
- Enable gradient clipping:此功能降低模型崩溃的几率,无论什么时候都开启
- Enable pretraining mode:在启用随机人脸数据集初始预训练模型的时候,使用。在训练到50万到100万此迭代之后,关闭。此功能在训练实际的dst、src时,节省时间。减少人脸清晰显示的时间
- 颜色变化表示与上一步操作发生变化 ↩︎
- 仅WF、Head的脸型有 ↩︎
- 这部分针对遮罩训练 ↩︎
- 这部分针对遮罩训练 ↩︎
- 显卡不是特别行,就选择off,把一部分内容放到cpu上运算 ↩︎
- 只有DF架构才有 ↩︎
- 迭代次数并不是标准答案,完全凭对预览效果 ↩︎
- 模型参数,一旦设置,在训练无法更改 ↩︎
- 训练参数,可以在每次开启训练前修改 ↩︎
随着软件的开发,某些模型可能会有更多选项可用或不可用,如果你使用的是最新版本并注意到缺少某些选项,请通过评论告诉我,我会尝试以尽快更新。
火星提示:先打好基础,不要急于求成。等有了基础,更多的理解的时候,自然而然有更多的方法思路涌现。老规矩,上付费阅读部分,这部分主要针对想要对模型参数、训练参数意义更深入理解,以及如何更好使用现有模型快速制作更多的实时换脸(直播换脸)的方法。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容