deepfakes/faceswap gui详细使用教程(Training/训练篇)

in Archives with 0 comment

本教程基于faceswap gui,对于Windows和Ubuntu平台都是适用的。

在本文中,我们将详细介绍faceswap train的工作流程。

在此之前,你可能需要参考:

deepfakes/faceswap gui详细使用教程(Extract/提取篇)

提取出用于训练的人脸素材和对齐文件。

D9提供用于演示的AI训练素材资源包下载:

faceswap人脸图片素材包

Training基本原理

机器学习是一个相对复杂的概念,但了解一些神经网络基本的运作原理,将有利于我们成功的完成人脸转换。想要了解faceswap Train模块更多详细信息的朋友可以参考:

deepfakes/faceswap Train模块工作原理详细介绍

当然,抛开那些复杂的概念和晦涩难懂的术语,按照本文的推荐设置进行模型训练,也能取得不错的效果。下面就让我们开始吧~

Train/训练

准备工作

根据上一篇教程进行操作,我们现在已经有了两个充满提取人脸图片的文件夹和两个对齐文件,此时我们再新建一个名为“model”的文件夹,用于存放训练模型文件。

Faces、Model、Trainer、Training参数设置

faceswap Train模块Faces等参数设置.jpg

Input A:选择提取的人脸图片文件夹A,这是被换脸的人物,在本演示中,为trump人脸文件夹;

Alignments A:在素材源文件夹A中找到对齐文件,注意不要错选成带时间后缀的备份文件;

Input B:选择提取的人脸图片文件夹B,B的脸预期被换到A上,在本演示中,为cage人脸文件夹;

Alignments B:在素材源文件夹B中找到对齐文件,注意不要错选成带时间后缀的备份文件;

Model Dir:选择刚刚我们创建的用于存放训练模型文件的文件夹;

Trainer:选择“Dlight”,想要了解更多训练插件的信息,请参考:

deepfakes/faceswap Train(训练)插件对比及配置优化

Allow Growth:使用GPU训练时才会显示,开启后避免TensorFlow在启动时耗光所有显存,从而可以设置相对更大的“Batch Size”,仅支持N卡。在显存够用以及训练不报“Could not create cudnn handle”相关错误的情况下,不建议开启。

Batch Size:由默认的64改为8;

如果你是使用CPU进行训练,可以保留默认值64,当训练报错,请尝试逐渐减小此值,例如48、32、16、12等等;

如果你是使用GPU进行训练,根据GPU的显存大小,在TensorFlow可以成功启动训练模型不报错的情况下,可以稍微调大Batch Size以提高训练效率;

Batch Size的值不宜小于6,对于某些中低端显卡,可以考虑配置训练插件的Low Memory模式以及开启gpu节省显存选项。

详细了解Batch Size,请参考:

deepfakes/faceswap Train模块工作原理详细介绍

其他默认参数说明

faceswap gui gpu Train模块参数设置.jpg

No Logs:关闭日志选项,日志可供TensorBoard或faceswpa gui进行数据分析,一般来说,我们没有必要关闭它;

Warp To Landmarks:提供一种不同的神经网络重建人脸方法,要求有对齐文件,其结果好坏存在不确定性。大家可以尝试开启或关闭,对比结果后,选择是否开启此选项。

No Flip:默认允许人脸图片的翻转以提供给神经网络更多的数据,但人脸是非对称的,尤其是部分侧脸的图片,可能会起到反作用,通常来说,在一个模型训练的前期,此选项应保留默认设置,不要勾选,在训练的后期,可以根据需要进行勾选以禁止图片翻转。

No Augment Color:除非有特殊需求,否认建议保留默认设置,不要勾选,具体效果看下图(注意脸部颜色):

faceswap Train模块No Augment Color参数效果对比.jpg

VRAM Savings:使用GPU训练时才会出现的选项,用于节省显存,但会影响训练效率,仅支持N卡

如果你的显卡支持在Batch Size为6~8时正常训练,尽量不要开启这里的选项。

Memory Saving Gradients:显存不足时优先开启此项,开启MSG后最高可节省50%的显存,对应增加20%的训练时间;

Optimizer Savings:将部分运算从GPU转到CPU进行计算,从而节省显存,这是显存不足时你的第二个选择;

Ping Pong:将训练模型分成两半依次分别进行训练,最高可以节省40%的显存,但训练时间会翻倍。

注:以上的三个选项可以独立开启的关闭,其效果是可以叠加的。

Save Interval:每隔多少次迭代进行保存;

因为保存训练模型需要一定时间,在此期间训练是中止的,考虑到效率,不建议将此值设置过低,当然过高的阈值也会导致问题,因此这里建议保留默认值,每隔100次迭代进行一次保存。

Snapshot Interval :有时候faceswap软件跑飞了(比如over all loss突然大幅增大)会导致我们保存错误的训练模型,这时候如果有出错之前的模型快照,我们就可以从快照恢复正常训练,而无需从头开始。

Preview Scale、Preview和Write Image:我们使用的是faceswap gui,保留默认参数就能获得很好的训练进度预览体验。

Timelapse:可以让我们观察预设文件夹中前14张人脸图片的实时训练进度,每次迭代都会更新,一定程度上影响了训练效率,一般我们用不到。

执行Train/训练

配置完上述参数以后,点击最下方的“Train”按钮,faceswap将开始训练模型。

faceswap ubuntu gpu训练演示.jpg

训练的过程耗时较久,根据硬件性能不同,大约需要48小时到2周时间。

对于用于演示的trump和cage图片,由于素材较少,因此训练时间不会太久,但Loss值可能无法迭代到太理想的值。

Train/训练目标

训练何时可以终止呢?

当preview窗口中展示的人脸转换效果图片已经符合你的预期,即可终止训练,进行最终的Convert/转换了。

一般来说,当Loss值降到0.02以下时,会得到令人满意的转换效果。下图为Loss值为0.04时的效果预览:

faceswap loss值为0.04时的效果预览.jpg

注意事项

启动训练时报错“CUDNN_STATUS_INTERNAL_ERROR”

请尝试开启Allow Growth选项后再试

loss值突然大幅增加

软件跑飞了,请使用snapshot恢复正常训练。

避免软件跑飞,注意显卡不要超频,科学计算和3D渲染模式需求不同,更注重计算结果的可靠性和稳定性,因此显卡超频只会起到反作用。

更多相关教程:

deepfakes/faceswap gui详细使用教程(Extract/提取篇)

deepfakes/faceswap gui详细使用教程(Convert/转换篇)

Comments are closed.