继续聊聊DeepFaceLab(DeepFake)不断演进的2.0版本


第一篇: 《简单介绍DeepFaceLab(DeepFake)的使用以及容易被忽略的事项》
本篇: 《继续聊聊DeepFaceLab(DeepFake)不断演进的2.0版本》
第三篇: 《如何翻译DeepFaceLab(DeepFake)的交互式合成器》
第四篇: 《想要提高DeepFaceLab(DeepFake)质量的注意事项和技巧(一)》
第五篇: 《想要提高DeepFaceLab(DeepFake)质量的注意事项和技巧(二)》

PS:作者疯狂更新,本篇也更新了好几次……

很久没有关注,最近困在家又看了下发现变化好大,已经进入2.0时代了。训练的速度和质量都有提高,并且合成也方便了很多。

记得它的作者伊佩罗夫(Iperov)中途差点因为经济原因放弃了项目,如何让中国用户能捐赠的问题上也是困难重重(外国人需本人到现场办理国内银行卡,才能使用微信和支付宝)。

(一)不断改进的DeepFaceLab

不变的是作者的官站:https://github.com/iperov/DeepFaceLab
下载位置(不用MEGA网盘了):俄语网站,或作者Github的 Release
官网推荐的中文链接也变了:DeepFake中文网

1.1 交互式合成器

这个是早就改了的。有图形界面有详细帮助,可以不断的调节参数并实时的预览每一帧的合成最终效果,最终确认并处理全部帧。
PS:名字从转换器(Convertor)变成了合成器(Merger)。

偶然看到有人说新版没办法一次全部合成。
下面右边那个Shift+右尖括号就是处理全部的帧哦。

所有指令都只能在主界面也就是实时预览界面下才生效,帮助界面按了没用,换切来切换去貌似不太方便。不管主界面在哪一帧,命令行窗口都会显示当前帧的合成参数配置值。

有同学说英文看不懂,蛤?可以百度谷歌翻译嘛,或者到上面提到的中文网站,里面可详细了(貌似错误也不少,汗,英文这么难么)。
在这里插入图片描述
其实很多参数自己试一试就明白的,还是简单说一下吧:

重要的合成参数:
1到5:覆盖方式,先考虑3.seamless(无缝)再试试别的呗。
加号+,减号-:缩放实时预览界面大小(帮助界面大小不会变)
Tab:切换主界面也就是实时预览界面,和这个帮助界面。
W,S:遮罩侵蚀,简单说就是遮罩大小(汗)。值越大遮罩范围越小,越平滑,源脸范围越小越不像。值越小,遮罩范围越大,越容易闪烁,源脸越大越像。
E,D:遮罩模糊,就是遮罩边缘模糊,避免生硬。和上面选项同时用。
U,J:源脸部大小缩放,总得大小合适看着才自然嘛。
R,F:运动模糊,一般不用,场景切换的前后两帧千万别开。其它帧如果你觉得运动模糊得不够,可以加一些。

图像降级参数:
I,K:降噪,实测是给背景帧降噪,避免了脸部很平滑,背景却很多噪点。
O,L:降双三次元,一般不用,降低背景帧的平滑程度,总之看上去自然就行。
P,分号;:降色彩,避免脸部鲜艳,背景苍白。降低一些融合更好。
C:颜色转换方式,选个LCT,RCT一类,或者每种自己试试。

处理和预览:
左尖括号<:上一帧。
Shift+左尖括号<:回到第一帧。
右尖括号>:(处理)下一帧(保持下一帧本身的配置)。
Shift+右尖括号>:处理后面全部的帧(保持后续帧本身的配置)。
M:(把当前帧的配置)覆盖到上一帧。
Shift+M:(把当前帧的配置)向前覆盖直到第一帧。
:(把当前帧的配置)覆盖到下一帧。
Shift+:(把当前帧的配置)向后覆盖直到最后一帧。

1.2 仅支持Nvidia显卡和CPU

所以预编译好的Windows版本名字也从CUDA变成了NVIDIA。并且不再提供OpenCL版本和支持了(旧版还可用)。

1.3 简化的模型选项

去掉了一堆以前的模型,只留下SAEHD,Quick96。

SAEHD model ( High Definition Styled AutoEncoder )
以往的H128,H64,DF都可以通过配置SAEHD的参数而覆盖,所以这些模型单独留下来意义也不大,作者就干脆去掉了。

Quick96
一个分辨率为96的全脸快速的模型,用于低端的2GB到4GB现存的显卡,不用配置直接出效果。

1.4 脸集打包

现在可以用pack打成一个包而具体训练效果一样。
unpack是解开包,比如你还需要再调整和编辑脸部。
脸部可能是几千张图片,打包之后拷贝变快了很多。而且作者提供的预训练的海量图片也打包了,总之管理拷贝解压目录都快了很多。

1.5 半脸/中脸/全脸/完整脸

一年前应该只有半脸(half_face)和全脸(full_face)两个Size,虽然看上去怪怪的后来加入了中脸(mid-full face)。大概比半脸多了30%的面积,而完整脸(whole_face)是最近(2020.02.21)才加入的实验性选项,是整个脸部带额头区域。但是需要后期自己动手用视频软件处理遮罩和合成。

1.6 速度/效率/质量/显卡

可以用笔记本上2GB的显卡(MX250)训练BatchSize降低后的SAEHD模型啦。
速度快了很多,同等配置几乎是最早的版本的2倍以上训练速度了。
台式机的1060TI显卡也竟然可以开到BatchSize=12了。
初始化显卡的时间大大缩短,以前要几分钟,现在是秒级别的。
PS:具体的改进大家还是看作者的版本历史文件吧:)

1.7 方便易用

可以自己命名模型
可以选择显卡或CPU,支持多显卡。
自动备份模型和预览。
训练参数可以随时调整,不像以前开始训练后只能调很少的参数。
记录上一次转换的参数。

(二)软件使用

2.1 目录结构

对比第一篇文章里的目录结构,基本结构差不多,但是少了很多模型的训练合成选项:

_internal													#内部目录,源代码,库,软件。
workspace													#工作目录,放源视频和目标视频
1) clear workspace.bat										#清理工作区
2) extract images from video data_src.bat
3) cut video (drop video on me).bat
3) extract images from video data_dst FULL FPS.bat
4) data_src extract full_face MANUAL.bat
4) data_src extract full_face S3FD.bat
4) data_src extract whole_face MANUAL.bat
4) data_src extract whole_face S3FD.bat
4.1) data_src view aligned result.bat
4.2) data_src sort.bat
4.2) data_src util add landmarks debug images.bat
4.2) data_src util faceset enhance.bat
4.2) data_src util faceset metadata restore.bat
4.2) data_src util faceset metadata save.bat
4.2) data_src util faceset pack.bat
4.2) data_src util faceset unpack.bat
4.2) data_src util recover original filename.bat
5) data_dst extract full_face MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG.bat
5) data_dst extract full_face MANUAL.bat
5) data_dst extract full_face S3FD + manual fix.bat
5) data_dst extract full_face S3FD.bat
5) data_dst extract whole_face MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG.bat
5) data_dst extract whole_face MANUAL.bat
5) data_dst extract whole_face S3FD + manual fix.bat
5) data_dst extract whole_face S3FD.bat
5.1) data_dst view aligned results.bat
5.1) data_dst view aligned_debug results.bat
5.2) data_dst sort.bat
5.2) data_dst util faceset pack.bat
5.2) data_dst util faceset unpack.bat
5.2) data_dst util recover original filename.bat
5.3) data_dst mask editor.bat
6) train Quick96.bat
6) train SAEHD.bat
7) merge Quick96.bat
7) merge SAEHD.bat
8) merged to avi.bat
8) merged to mov lossless.bat
8) merged to mp4 lossless.bat
8) merged to mp4.bat
9) util convert aligned PNG to JPG (drop folder on me).bat
10) start EBSynth.bat
changelog.txt

基本上和以前顺序一样:2,3,4,5,6,7,8 是必要的步骤,如果有同名则是二选一,有小数点的是可选的步骤,主要用于脸部的筛选,遮罩的编辑等。

2.2 信息概要

每次训练和合成前,都可以选择模型,并且显示出模型的名称和参数以及迭代次数等信息,比老的版本清晰了许多!

PS:下面的"new"就是模型的名字。

================= Model Summary =================
==                                             ==
==            Model name: new_SAEHD            ==
==                                             ==
==     Current iteration: 2345678              ==
==                                             ==
==--------------- Model Options ---------------==
==                                             ==
==            resolution: 128                  ==
==             face_type: f                    ==
==     models_opt_on_gpu: True                 ==
==                 archi: df                   ==
==               ae_dims: 256                  ==
==                e_dims: 64                   ==
==                d_dims: 64                   ==
==           d_mask_dims: 22                   ==
==            learn_mask: True                 ==
==            lr_dropout: False                ==
==           random_warp: True                 ==
==             gan_power: 0.0                  ==
==       true_face_power: 0.0                  ==
==      face_style_power: 0.0                  ==
==        bg_style_power: 0.0                  ==
==               ct_mode: none                 ==
==              clipgrad: False                ==
==              pretrain: False                ==
==       autobackup_hour: 0                    ==
== write_preview_history: False                ==
==           target_iter: 0                    ==
==           random_flip: False                ==
==            batch_size: 12                   ==
==                                             ==
==---------------- Running On -----------------==
==                                             ==
==          Device index: 0                    ==
==                  Name: GeForce GTX 1080TI   ==
==                  VRAM: 12.00GB              ==
==                                             ==
=================================================

2.3 一些训练参数

用SAEHD模型有很多参数,好些是新增的。
不清楚的参数可以直接回车保持缺省值。

自动备份
可以选择几个小时自动备份模型,0不备份,注意最新的备份编号是01.

[0] Autobackup every N hour ( 0..24 ?:help ) : ?
Autobackup model files with preview every N hour. Latest backup located in model/<>_autobackups/01

随机翻转脸部
关掉可以更自然,但是源脸部集需要覆盖目标脸部集的方向。

[n] Flip faces randomly ( y/n ?:help ) : ?
Predicted face will look more naturally without this option, but src faceset should cover all face directions as dst faceset.

批量大小
值越大越利于神经网络的泛化,但过大会导致内存不足,根据你的显卡来设置吧。

[4] Batch_size ( ?:help ) : ?
Larger batch size is better for NN's generalization, but it can cause Out of Memory error. Tune this value for your videocard manually.

学习遮罩
简单说如果不带遮罩学习,可以减少模型大小,但是合成的时候也不够平滑。

[y] Learn mask ( y/n ?:help ) : ?
Learning mask can help model to recognize face directions. Learn without mask can reduce model size, in this case merger forced to use 'not predicted mask' that is not smooth as predicted.

模型和优化于GPU
简单说放GPU更快,放CPU可以减少显存的使用。

[y] Place models and optimizer on GPU ( y/n ?:help ) : ?
When you train on one GPU, by default model and optimizer weights are placed on GPU to accelerate the process. You can place they on CPU to free up extra VRAM, thus set bigger dimensions.

眼部优先
最好还是打开吧,免得眼睛变成怪物。

[n] Eyes priority (y/n ?:help) : ?
Helps to fix eye problems during training like "alien eyes" and wrong eyes direction ( especially on HD architectures ) by forcing the neural network to train eyes with higher priority.

学习率下降
不知道咋翻译,我猜和以前pixel loss一个意思吧。经过足够的训练后可以打开这个选项,能加速但是我记得以前pixel loss说有模型崩溃的危险(而这里没写)。

补充1:作者日志说pixel loss和dssim loss合并了,提胜训练速度和像素真实性。
补充2:学习率下降,learning rate dropout(LRD)是一种用于训练与坐标系下降有关的简单梯度下降技术。 通过将一些学习率随机设置为零,从经验上帮助优化器积极地探索参数空间。 在每次迭代中仅更新学习率不为0的参数。 随着不同参数的学习率下降,优化器将为当前更新采样一条新的损耗下降路径。 下降路径的不确定性有助于模型避免鞍点和不良的局部极小值。 实验表明学习率下降在加速训练同时防止过度拟合方面特别——术业有专攻,我不太明白,有兴趣的同学请参见来自康奈尔大学发表在科学网的论文

[n] Use learning rate dropout ( y/n ?:help ) : ?
When the face is trained enough, you can enable this option to get extra sharpness for less amount of iterations.

随机扭曲
直接软件翻译了,随机扭曲来概括两个人脸的面部表情。经过足够的训练后你可以在较少的迭代次数下禁用它以获得额外的锐度。

[y] Enable random warp of samples ( y/n ?:help ) : ?
Random warp is required to generalize facial expressions of both faces. When the face is trained enough, you can disable it to get extra sharpness for less amount of iterations.

GAN权重值
以生成性对抗的方式训练网络,加快训练速度,强迫神经网络学习脸部的小细节。您可以随时启用/禁用此选项。典型值为1.0。最好经过足够的训练后启用它,预训练模式下这个值不生效。

[0.0] GAN power ( 0.0 .. 10.0 ?:help ) : ?
Train the network in Generative Adversarial manner. Accelerates the speed of training. Forces the neural network to learn small details of the face. You can enable/disable this option at any time. Typical value is 1.0

'真脸’权重
试验选项,让目标连更像源脸,值越大强度越大。
不过实际测试了一下我觉得效果不太好呢。

[0.0] 'True face' power. ( 0.0000 .. 1.0 ?:help ) : ?
Experimental option. Discriminates result face to be more like src face. Higher value - stronger discrimination. Typical value is 0.01 .

源脸颜色转换
自己试试哪个参数取值更好(也可以合成时候转)。

[none] Color transfer for src faceset ( none/rct/lct/mkl/idt/sot ?:help ) : ?
Change color distribution of src samples close to dst samples. Try all modes to find the best.

启用渐变剪裁
开启减少模型崩溃的可能,但牺牲了训练速度。

[n] Enable gradient clipping ( y/n ?:help ) : ?
Gradient clipping reduces chance of model collapse, sacrificing speed of training.

预训练
用大量的脸预训练模型,之后模型可以更快的正式训练。

[n] Enable pretraining mode ( y/n ?:help ) : ?
Pretrain the model with large amount of various faces. After that, model can be used to train the fakes more quickly.

先仔细选择素材。
首次根据建议选择选项。
足够的训练后(作者没说到底多少次),打开上面某些选项。
再训练一段时间(训练个50万次吧,500K)。
祝玩得开心。

(三)武汉加油,中国加油!

山川异域
风月同天

岂曰无衣
与子同袍

nothing lasts forever
even cold november rain

BTW友情提醒韩国日本意大利和世界各国的朋友:

不要轻视
一次不准
多测几次

Guess you like

Origin blog.csdn.net/ddrfan/article/details/104338685