条件建议:
DeepFaceLab有以下三种类型:
DeepFaceLabCUDA9.2SSE –——适用于GTX 1080 Ti的NVIDIA GTX系列视频卡
DeepFaceLabCUDA10.1AVX ——用于NVIDIA RTX系列视频卡和与AVX兼容的CPU
DeepFaceLabOpenCLSSE ———适用于AMD或Intel 64位CPU
安装CUDA9.2
将DeepFaceLab与NVIDIA GTX系列视频卡一起使用时,必须安装CUDA9.2。
如果安装了CUDA9.2以外的任何软件,请卸载并安装CUDA9.2。
从以下NVIDIA网站下载安装程序并进行安装。
https://developer.nvidia.com/cuda-92-download-archive
下载DeepFaceLab
可以从此页面上的“ DOWNLOAD HERE”下载,但是如果您未注册并登录,则不会显示下载链接;如果尚未注册,请从“ Register”注册并登录。
https://mrdeepfakes.com/forums/thread-deepfacelab-explained-and-usage-tutorial
截至2019年9月11日,“ build_06_02_2019”和“ build_06_20_2019”之后发布了“ build_08_30_2019”和“ build_09_08_2019”,但是在最近的两个版本中人脸合成的质量有所下降。具体来说,可以在组合面中清楚地看到正方形边缘,如果在转换时使用“覆盖”,则其周围会出现黑色条纹。目前,“ build_06_02_2019”或“ build_06_20_2019”可以制作质量最高的视频。
下载DeepFaceLabCUDA9.2SSE_build_06_02_2019的链接
视频制作流程
1.准备材料
准备要用作素材的视频最好长度为1-3分钟。这里需要两种类型的材料:移植脸和目标脸。
data_src –“移植脸”
data_dst –“目标脸”
例如,在“将尼古拉斯·凯奇的脸移植到唐纳德·特朗普”的情况下,尼古拉斯·凯奇的视频是data_src,而唐纳德·特朗普的视频是data_dst。
如上例所示,将准备好的材料重命名为data_src和data_dst,并将它们放置在工作空间文件夹中。
必须小心使用所使用的材料。在某些情况下,需要事先使用视频编辑软件进行编辑。
・视频中有多张面孔
在以下过程中,仅将人的脸部部分导出为图像,但是将导出视频中被识别为所有脸部的内容,因此,请确保在视频中仅出现一个人的脸部。
・以足够大的尺寸拍摄人脸
用作素材的视频(尤其是data_src)需要在某种程度上显示人脸。具体地说,面部的图像是256 x 256像素的正方形,因此希望视频中人脸的大小处于此大小。(训练时的分辨率最大为128 x 128像素,因此此级别可能不错)
因此,当使用电影作为素材时,仅需提取将要拍摄的人的面部捕捉到一定大小的片段,并将其连接到单个视频即可。另外,如果另一个人的脸在同一屏幕上反映出来,则也需要进行诸如应用马赛克的处理,以使它不被识别为脸。
2.导出素材视频的所有帧图像
执行“ 2)从视频data_src.bat“ 中提取图像,并将data_src的视频导出为图像。由于data_src用于人脸移植,即图像仅用于学习,因此无需导出所有帧。您可以选择要导出的帧频。如果材质很短,则可能要导出所有框架。
执行 “ 3.2)从视频data_dst FULL FPS.bat” 中提取图像,并导出包含全帧图像的data_dst视频。由于这是人脸移植的一面,因此当人脸最终移植到电影中时需要所有帧,因此会自动写出所有帧。
在此过程中,系统将要求您选择导出为具有Alpha通道(透明度)的PNG的选项。data_dst视频中有一个透明部分,以后当您使用视频编辑软件合成DeepFaceLab创建的视频时,请将其设置为y。通常n也是可以的。
每个导出的图像都将导出到工作空间文件夹中的“ data_src”和“ data_dst”文件夹。
3.仅提取脸部
从上一过程中导出的图像中仅提取面部部分,并将其导出为图像。
运行 “ 4)data_src提取面部S3FD最佳GPU.bat ”,仅从data_src图像中提取面部。
执行 “ 5)data_dst提取人脸S3FD best GPU.bat ”以仅从data_dst图像中提取人脸部分。
导出的图像将导出到“ data_src”和“ data_dst”文件夹中名为“ aligned”的文件夹中。
4.删除错误检测的图像
尽管在前面的过程中仅提取了面部部分,但不幸的是始终存在一些错误检测。如果在学习过程中输入了这些内容,则会对它们产生不利影响,应删除它们。通常,将诸如“耳朵”,“处于愚蠢状态的手”或“家具图案”之类的意外面孔识别为面孔。
当执行“ 4.2.2)按相似的histogram.bat排序的data_src” 时,data_src文件夹中对齐的图像按直方图排序。我们不会在这里解释直方图,但是这样做会按照相似的图像进行排序,从而更容易找到假阳性图像。排序后,打开文件夹并删除错误检测的图像。
类似地,对data_dst执行“ 5.2)通过类似的直方图对data_dst进行排序”,并在排序后删除错误检测到的面部图像。
5.训练
这是基本的机器学习。使用“ 6)train H64.bat”或“ 6)train H128.bat”进行学习。
6)train H64.bat
以64 x 64像素学习。这对于面部朝前的场景就足够了。建议使用vRAM2GB或更高版本。
6)train H128.bat
以128 x 128像素学习。自然地,这比“ 6)train H64.bat”的质量更高,因此它的质量更高,但学习时间更长。这似乎更适合比西方人宽容的亚洲人。建议使用RAM3GB或更高版本。
当执行“ 6)train H64.bat”或“ 6)train H128.bat”时,将首先询问以下选项:
Model first run. Enter model options as default for each run.
Write preview history? (y/n ?:help skip:n) :
如果设置为y,将保存预览屏幕,但由于不必要,它始终设置为n。
Target iteration (skip:unlimited/default) :
目标迭代(跳过:无限制/默认): 由于它是无限学习的,请按Enter跳过
Batch_size (?:help skip:0) :
批次大小越大,模型的准确性越高,但是学习速度越慢。如果批次大小太大,则train可能无法启动。在我的环境(GTX 1080 Ti)中,当批次大小为64时,train无法启动。通常,批量大小为32。
Feed faces to network sorted by yaw? (y/n ?:help skip:n) :
与data_dst相比,data_src图像很少时,设置y似乎是一件好事。通常是n。
Flip faces randomly? (y/n ?:help skip:y) :
通过反转垂直轴上的图像,我们将尝试从相反侧看时将其覆盖,但是由于人脸不是完全对称的,因此通常应将其设置为n。如果仅从左侧或右侧查看材料,这可能会很有用。
Use lightweight autoencoder(y/n ?:help skip:n) :
使用轻型编码器的选项。使用较少的vRAM,但会降低质量。如果vRAM为4GB或更小,则必须选择y。如果vRAM大于4GB,则设置为n。
Use pixel loss? (y/n, ?:help skip: n/default ) : ?
不建议打开像素损失,因为这会增加模型损坏的风险。通常设置为n。
开始训练
选择以上选项后,将出现“tain预览”窗口,tain将开始。选择“训练预览”窗口时,可以执行以下操作。
P键 –刷新预览并刷新预览。即使您不按任何按钮,预览也会每15分钟自动更新一次。
S键 –按S键保存tain。即使您不按任何按钮,它也会每15分钟自动保存一次。
Enter键 –保存tain并退出。如果要稍后重新启动Train,请执行“ 6)train H64.bat”或“ 6)train H128.bat”,Train将自动从上次保存的位置重新启动。
根据机器的规格和材料,大约需要几个小时到几十个小时。
6.导出面部移植图像(转换)
完成训练后,我们将使用学习的模型将人脸移植到data_dst视频中。
对于使用“ 6)火车H64.bat”训练的模型,请使用“ 7)convert H64.bat”;对于使用“ 6)火车H128.bat”训练的模型,请使用“ 7)convert H128.bat” 。
运行时,将要求您提供以下选项:
转换时的选项
Choose mode: (1) overlay, (2) hist match, (3) hist match bw, (4) seamless, (5) raw. Default – 4 :
根据模式,有以下差异。请阅读原始页面以获取详细信息。
这是一种转换模式,(1)我认为叠加将以最舒适的感觉完成。输入1,然后按Enter。
Mask mode: (1) learned, (2) dst . Default – 1 :
通常(1)学到没有问题。输入1,然后按Enter。
Choose erode mask modifier [-200…200] (skip:0):
通常0是可以的,因此请按Enter跳过。
Choose blur mask modifier [-200…200] (skip:0) :
移植面部时是边界的模糊,但是即使模糊较弱或模糊太强也很奇怪,因此通常中间的0很好,因此请按Enter跳过。
Choose output face scale modifier [-50…50] (skip:0) :
您可以在移植面部时调整尺寸。通常,0是可以的,因此请按Enter跳过。显然,如果data_src和data_dst的表面尺寸不同,则可能需要对其进行调整。
Apply color transfer to predicted face? Choose mode ( rct/lct skip:None ) :
当我们移植面部时,他/她纠正肤色的差异。输入rct或lct并按Enter。如果将其设置为“无”,则皮肤颜色将不同且不自然。
Apply super resolution? (y/n ?:help skip:n) :
通常n是可以的。如果data_dst的视频质量较低,则y似乎不错。
Degrade color power of final image [0…100] (skip:0) :
增加值会增加移植后脸部的鲜艳度。但是,灰度基本上会变差,因此0通常更好。使用Enter跳过。
Export png with alpha channel? (y/n skip:n) :
使用alpha通道(透明)将图像导出为png的选项。data_dst视频中有一个透明部分,以后当您使用视频编辑软件合成DeepFaceLab创建的视频时,请将其设置为y。
通常n是可以的,因此请输入skip。
选择选项后,将开始导出将面部移植到data_dst的图像。在“ data_dst”文件夹中自动创建图像,并创建“合并”文件夹。
7.使导出的图像成为视频
您所要做的就是将上一过程中导出的图像连接到视频。
执行“ 8)转换为mp4.bat ”。可以使用Enter跳过选项。
使用Alpha通道时,执行“ 8)转换为mov(无损+ alpha).bat”或“ 8)转换为mp4(无损+ alpha).bat”
视频将在“工作区”文件夹中作为result.mp4输出。
最后
现在,您可以使用DeepFaceLab制作电影。