重新梳理DeepFaceLab(DeepFake)最近动态:简要且全面的信息 您所在的位置:网站首页 deepfacelab提取人脸尺寸 重新梳理DeepFaceLab(DeepFake)最近动态:简要且全面的信息

重新梳理DeepFaceLab(DeepFake)最近动态:简要且全面的信息

2024-02-01 17:34| 来源: 网络整理| 查看: 265

DeepFaceLab相关文章

一:《简单介绍DeepFaceLab(DeepFake)的使用以及容易被忽略的事项》 二:《继续聊聊DeepFaceLab(DeepFake)不断演进的2.0版本》 三:《如何翻译DeepFaceLab(DeepFake)的交互式合成器》 四:《想要提高DeepFaceLab(DeepFake)质量的注意事项和技巧(一)》 五:《想要提高DeepFaceLab(DeepFake)质量的注意事项和技巧(二)》 六:《友情提示DeepFaceLab(DeepFake)目前与RTX3080和3090的兼容问题》 七:《高效使用DeepFaceLab(DeepFake)提高速度和质量的一些方法》 八:《支持DX12的DeepFaceLab(DeepFake)新版本除了CUDA也可以用A卡啦》 九:《简单尝试DeepFaceLab(DeepFake)的新AMP模型》 十:《非常规的DeepFaceLab(DeepFake)小花招和注意事项》 土:《可以提高DeepFaceLab(DeepFake)合成最终视频速度的方法》 王:《偶然看到DeepFaceLab(DeepFake)在2023年的新动向》—《测试通用遮罩》

文章目录 (零)基本概念(一)版本选择(1.1)原版DeepFaceLab(1.2)ICE版DeepFaceLab (二)数据准备(2.1)源脸数据集(data_src)(2.1.1)基本(2.1.2)进阶1:增强脸部(2.1.3)进阶2:角度分布(2.1.4)进阶3:XSeg遮罩(2.1.5)进阶4:识别点/遮罩确认 (2.2)目标脸(data_dst)(2.2.1)基本(2.2.2)进阶1:视频帧降噪(2.2.3)进阶2:XSeg遮罩(2.2.4)进阶3:识别点/遮罩确认 (三)训练模型(3.1)新模型vs复用模型(3.2)模型属性(3.2.1)模型类型(3.2.2)模型架构(3.2.3)模型参数 (3.3)训练参数(3.4)ICE版本新训练参数(3.5)训练过程(3.5.1)命令行窗口(3.5.2)预览窗口 (3.6)阶段阶段(3.6.1)预训练(可选)(3.6.2)泛化/翘曲训练(3.6.3)归一化/常规训练(3.6.4)增强/GAN 训练(可选) (3.7)训练成果 (四)合成(4.1)合成参数(4.2)覆盖模式+遮罩对比 (五)合成的图片转视频(六)总结

(零)基本概念

DeepFaceLab 简称 DFL,可以将某人的面孔作为来源(source,src),替换目标(destination,dst)视频上另一个人的面孔。 由于发展的时间有点长,之前记录的许多方面有变化,决定重新拉通整理下。

(一)版本选择 (1.1)原版DeepFaceLab

伊佩罗夫的原版DFL(GIthub仓库)发布包最后停留在2021年11月20日。 具体Windows的发布包可通过磁力链接下载。 或者:magnet:?xt=urn:btih:e7ffdcb4ada863de9504f2a741f924dcd56ab84a。

NVIDIA RTX 2000系列和更旧的显卡:DeepFaceLab_NVIDIA_up_to_RTX2080Ti_build_11_20_2021.exeNVIDIA RTX 3000系列和更新的显卡:DeepFaceLab_NVIDIA_RTX3000_series_build_11_20_2021.exe其它显卡:DeepFaceLab_DirectX12_build_11_20_2021.exe

如果阅读英文困难,也有许多不错的汉化版本,甚至有整合版,界面版,可以自己搜。

(1.2)ICE版DeepFaceLab

下载,变化,简要情况参考🔗这里,具体信息请参考作者的原发布贴。 简单说就是训练得更好更快,并且支持512的遮罩。 仍在开发中,发布的版本有:DF_ICE_1.31c,DF_ICE_1.601。

(二)数据准备 (2.1)源脸数据集(data_src)

由于来源与目标有时容易混淆,所以暂定前提:让你代替志玲姐出现在影视作品中。 那么你的脸,就是来源 = source = src 。 下面基本的步骤是必须要的,进阶部分能做就做。

(2.1.1)基本

最终是形成你的《多角度,多光影,妆容尽量一致,面部少遮挡 的源脸数据集 (aligned faceset)》。

分辨率一般是[512x512],小了细节可能不够,大了模型分辨率跟不上。 根据需要,源脸数据集可以多次补充合并。 最终的数量如果分布均匀大概2000-4000就够了,当然6000-8000也可以。 少了不像,多了相对训练速度会降低。

(A)简单的办法可以准备你的一段影片data_src.mp4,放入工作目录\DFL_Path\workspace中。 接着提取每一帧图片:2) extract images from video data_src.bat。 (A)更好的方法是提前准备各种照片,不限于普通照片,截取自单段视频的图片,效果不错的Stable-Diffusion生成的照片,你的双胞胎姐弟,长得像你的明星😄???,总之素材多更好。 💡提取的每一帧图片,或者你准备的图片都放在\DFL_Path\workspace\data_src\目录中。

(B)然后从图片中提取脸部数据集:4) data_src faceset extract.bat。 (B)或者使用 快速切脸工具,参考🔗这里。不仅快很多,宁可识别不出也不识别出错,适合源脸。 💡提取的数据集,会放在\DFL_Path\workspace\data_src\aligned\目录中。

(C)检查和去掉错误的,以及不是源脸的图片(比如照片中其它人/路人也被识别提取了)。删掉这些错误脸,只留你自己的脸。 在这里插入图片描述

(D)几千张数据集图片,打包了更方便拷贝和处理:4.2) data_src util faceset pack.bat。 💡打包后大堆脸部图片会变成单个\DFL_Path\workspace\data_src\aligned\faceset.pak文件。

(2.1.2)进阶1:增强脸部

脸部数据集来源比较多的话,可能某些模糊某些清楚,某些平滑某些噪点多。 最好是有选择的增强图片,比如图片清晰但噪点多的仅去噪。 图片不太清晰的可以锐化和恢复脸部。如何优化/优化程度都需要自己权衡。

⚠️不要用AI来"脑补"太多的内容,比如:SD-WEBUI,remini,修复后的图片如果五官移位需要重新识别脸部。 ⚠️也不要修复得人都不像了,或者脸上油光满面——效果请用自己的眼睛(脑袋)来判断。

简单办法用DFL自己的增强命令:4.2) data_src util faceset enhance.bat,效果不算好。

更好的办法是用别的软件优化脸部数据集图片。 1)先保存已识别的面部特征点信息:4.2) data_src util faceset metadata save.bat。 2)用比如 Topaz Photo AI 等软件优化脸部数据集图片。 3)再恢复已识别的面部特征点信息:4.2) data_src util faceset metadata restore.bat。 脸部增强示例

(2.1.3)进阶2:角度分布

通常来说我们正面的照片较多,太仰视俯视,左右侧面比较少。 所以我们需要人为的找到这些角度的照片,并识别为源脸数据集。

以前我们只能通过:4.2) data_src sort.bat 功能,按仰俯排序,左右排序,大概估计角度情况。现在有了 Aligned合并工具,可以按角度二维排序便于添加删除角度。参考🔗这里。很容易看出缺少的角度。 角度分布 (2.1.4)进阶3:XSeg遮罩

如果你的源脸数据集,每张脸都无遮挡(包括额头),那么可以不用XSeg遮罩(跳过本小节内容)。 💡有脸就有遮罩。就算没有/不用XSeg遮罩,也有脸部识别的遮罩(范围)。

但是如果源脸数据集中的图片,有比如麦克风,帽子,眼镜,发型,遮挡了部分脸部,就一定要应用遮罩了。 针对性的画遮罩并训练,效果最好,这部分可以搜其他教程一类。 但是懒人可以不自己画遮罩和训练啊,仅用别人成熟的遮罩,效果也不错,参考:🔗这里。

使用:5.XSeg) data_src trained mask - apply.bat 将遮罩写入你的源脸数据集。

例子截图请看下面,目标脸部分章节。

XSeg遮罩在合成时还有个用法,请参考合成部分章节。

(2.1.5)进阶4:识别点/遮罩确认

检查脸部数据集图片,有时会看到某些脸明显不正确,或者脸是其它人,前面说过删掉它们就好了。

但是有些脸图片看上去正确,其实五官识别差得很远(特征点在脸上的位置不对)。 这种情况更容易出现在极限角度的脸上。 对于源脸,识别点错误必须更正(实在更正不了就删掉)。 如果遮罩有错误,可以把有问题的脸留下,单独去除遮罩:5.XSeg) data_src trained mask - remove.bat 。

可以使用 快速切脸工具导出遮罩和特征点,参考🔗这里。 或者用 MVE工具 检查脸特征点和遮罩情况,编辑不正确的特征点,参考🔗这里。新版🔗这里。

例子截图请看下面,目标脸部分章节。

💖 至此,源脸数据集就准备好了。

(2.2)目标脸(data_dst)

由于来源与目标有时容易混淆,所以暂定前提:让你代替志玲姐出现在影视作品中。 那么志玲姐的脸,就是目标 = destination = dst 下面基本的步骤是必须要的,进阶部分能做就做。

(2.2.1)基本

和源只需要脸部数据集不一样,目标需要保留视频+每一帧图片+脸部数据集,才能最后合成:

准备志玲姐的一段影片data_dst.mp4,放入工作目录\DFL_Path\workspace中。 然后生成每一帧图片:3) extract images from video data_dst FULL FPS.bat 。 💡提取的每一帧图片都放在\DFL_Path\workspace\data_dst\目录中。

提取每帧图像,建议:5) data_dst faceset extract + manual fix.bat 。 先自动提取,最后手动提取自动找不到的脸。 💡提取的数据集,会放在\DFL_Path\workspace\data_dst\aligned\目录中。

得到了图像生成的目标脸数据集 (aligned faceset)后。 同理检查,删掉错误的脸,删掉不想换(不是志玲姐)的脸。 检查完成后也可以打包。

(2.2.2)进阶1:视频帧降噪

将视频转为每一帧的图片后,提取目标脸部之前,最好根据实际情况降噪。 执行:3.optional) denoise data_dst images.bat,根据目标视频的情况,选择降噪强度(默认7)。 呃,图是用别人的,就当她是志玲姐吧。 不同的降噪级别

(2.2.3)进阶2:XSeg遮罩

如果你的目标脸数据集,每张脸都无遮挡(包括额头),那么可以不用XSeg遮罩(跳过本小节内容)。

和源脸同理,如果目标脸数据集也有被遮挡的部分,最好也应用遮罩。 使用:5.XSeg) data_dst trained mask - apply.bat 将遮罩写入你的目标脸数据集。

面部识别范围有话筒遮挡: 在这里插入图片描述

遮罩完美排除多余的部分: 在这里插入图片描述

(2.2.4)进阶3:识别点/遮罩确认

和源脸同理,可以进行同样的检查。 问题是目标帧也许很多很多,逐一检查几万张太痛苦了, 而且稍微有错误的影响没有源那么大(视频剪辑cut掉嘛)。所以……😄

PS:下图不是dst,只是用志玲姐举例: 看上去识别点和遮罩都挺正常的。MVE参考🔗这里。 在这里插入图片描述

新版MVE(0.8.2),彩色识别点(Landmark):参考🔗这里。 在这里插入图片描述

💖 至此,目标脸视频+视频帧图片+脸数据集就准备好了。

(三)训练模型

训练啥,训练的对象当然是模型(model),输入数据是源和目标。 参考资料:🔗这个网站,以及🔗这个帖子,还有🔗这个帖子。

根据模型类型不同,训练命令为:6) train XX模型类型.bat 这样。

(3.1)新模型vs复用模型

也就是说有了 源脸数据集+目标脸数据集,就可以训练模型了。 我们可以选择:

从0开始训练自己模型——慢,但所有参数都可以自己设置。或者复用自己之前的模型/别人的模型or预训练模型——节省时间,参考🔗论坛。 如果不想花钱买,也可以用别人免费共享的模型,比如🔗这里。 (3.2)模型属性

模型属性是新建模型时需要确定的参数,后期不能更改。 如果你复用了模型,则可以直接跳过整个模型部分的参数设置。

(3.2.1)模型类型

之前的各种老模型都被移除了, 原版到目前为止保留三种类型:

Quick96:Predefined model; useful for testing. DF-UD, Full Face, Resolution: 96, Batch size: 4 简单尝试快速出结果,因为有训练数据,但分辨率太低,量变引起质变,最终效果不怎么好。

SAEHD:Sparse Auto Encoder HD. The standard model and trainer for most deepfakes. 正常都用这个,”别人的模型“大多也是这个类型。

AMP:Amplifier. Destination facial expressions are amplified to the source. 用于实时的DFLive效果比较好。

Mulan:DF-ICE版本提供的新的独创训练架构-木兰,有多种算法,ICE-V3,V4,V7。 就是速度更快,对高分辨率、新40显卡支持更好,细节学习比对抗网络更强,支持多层遮罩合成(不过我没试过呀)。 具体请看ICE版发布原帖吧。

(3.2.2)模型架构

假设我们选了SAEHD,下一步就需要选择架构。 如果看别人的模型,会经常看到df-ud,df-u,liae-u等等名称,这就是架构和架构的附加参数。

DF:Strict face interpretation without morphing. Most accurate and true to source data. Works best when the source and destination have similarly shaped faces and color. Placement of facial features (eyes, mouth, nose, etc.) can differ between source and destination. Works better on frontal shots; possible worse result on profiles. Source faceset must have ample coverage of destination pitch, yaw, and color ranges. 极简描述:更像源脸。

LIAE:Lenient face interpretation with some morphing. Adapts more to destination face. Will adapt to faces with dissimilar shape and color. Placement of facial features may be slightly morphed to fit destination face. Possible better result on extreme angles and missing data. More replication of destination color and lighting conditions. 极简描述:光影更自然。

选择模型架构的同时需要确定架构参数。 模型可以带或不带以下几个选项:

U:Increases similarity to source face. Requires more VRAM. 提升生成脸细节一致性。 可能导致训练不稳定或收敛速度慢。可能会破坏图像的全局颜色和对比度的一致性。 架构画面略显普通,缺少灵魂(好严重的指控)。

D:Improve performance by effectively doubling the resolution using the same computation cost. Requires longer training and recommended use of a pretrained model. Resolution must be changed by multiples of 32 (other variants: 16). 源于"depth_to_space" 深度换尺寸算法, 提高解码图像分辨率,减少参数量和计算量,提高模型的效率和性能。利用深度维上的信息,增强图像细节和质量。 增加了整体训练时间,可能影响图像的连续性和完整性,图像上下帧不一致,帧闪烁和跳跃。

T:Increases similarity to source face. 为啥没有任何信息说明呢。

(3.2.3)模型参数

模型分辨率:[128] Resolution ( 64-640 ?:help ) : More resolution requires more VRAM and time to train. Value will be adjusted to multiple of 16 and 32 for -d archi. 更大的分辨率需要更多的显存,也需要更长时间来训练。分辨率决定上限,但不是绝对的分辨率越高就越清晰。 默认的128确实有点小,但是太大我们的显卡又难以承受,需要根据自己显卡来定分辨率。

人脸类型:[f] Face type ( h/mf/f/wf/head ?:help ) : 1)head:脑袋,包括头发到脖子,使用3D的标记点,需要XSeg应用到源和目标脸数据集。 2)wf:whole face,整脸,包括额头到下巴以下。 3)f:Full Face,全脸,从眉毛上方到下巴.。 4)mf:Mid Face(旧类型),中脸,覆盖眉毛到下巴,比hf多30%脸颊区域。 5)h:Half Face(旧类型),半脸,覆盖眼睛到嘴巴,较少的脸颊区域。 脸部大小对比

自动编码器维度:[256] AutoEncoder dimensions ( 32-1024 ?:help ) : All face information will packed to AE dims. If amount of AE dims are not enough, then for example closed eyes will not be recognized. More dims are better, but require more VRAM. You can fine-tune model size to fit your GPU. 根据你的显卡显存大小设置这些参数,用默认也可以。

编码器维度:[64] Encoder dimensions ( 16-256 ?:help ) : More dims help to recognize more facial features and achieve sharper result, but require more VRAM. You can fine-tune model size to fit your GPU.

解码器维度:[64] Decoder dimensions ( 16-256 ?:help ) : More dims help to recognize more facial features and achieve sharper result, but require more VRAM. You can fine-tune model size to fit your GPU.

解码遮罩维度:[22] Decoder mask dimensions ( 16-256 ?:help ) : Typical mask dimensions = decoder dimensions / 3. If you manually cut out obstacles from the dst mask, you can increase this parameter to achieve better quality.

(3.3)训练参数

训练参数是每次训练前可以修改的。 界面显示保存啥的就略过吧。

随机翻转SRC脸:[n] Random flip SRC ( y/n /?:help ) : Random horizontal flip SRC faceset. Covers more angles, but the face may look less naturally. 不要开启,特别是脸部不对称,比如一边有痣,或者金城武的鼻子。

随机翻转DST脸:[y] Random flip DST ( y/n /?:help ) : Random horizontal flip DST faceset. Makes generalization of src->dst better, if src random flip is not enabled. 通常都开启。

批量大小:[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. . 批量大小是DeepFaceLab中最重要的选项之一,因为它决定了每次迭代可以处理的图像数量。较大的批大小将导致更好的模型泛化和更快的训练(更少的迭代)。非常低的批量大小 (>[Z] Masked Hist-Match:遮罩或非遮罩的直方图匹配[Q,A] His-Match Threshold:直方图匹配阈值[W,S] Erode Mask Modifier:扩大或缩小遮罩区域.[E,D] Blur Mask Modifier:羽化(模糊)遮罩边缘[R,F] Motion Blur Power:运动模糊强度(小心场景切换).[U,J] Output Face Scale:脸部大小调节.[X,] Mask mode:见遮罩模式>>>[C] Color Transfer Mode:见色彩转换模式.>>>[V] Show Alpha Mask:显示透明遮罩(图像确认遮罩设置情况).[N] Sharpen Mode:锐化模式.[Y,H] Blur/Sharpen Amount:模糊/锐化强度.[T,G] Super Resolution Power:超分辨率强度[I,K] Image Denoise Power:画面降噪强度[O,L] Bicubic Degrade Power:双三次减弱强度.[P,;] Color Degrade Power:色彩减弱强度.

覆盖方式(Overlay Mode):

[`] Original: 显示原始的dst视频帧图像.[1] Overlay: 直接覆盖(叠加).[2] Hist-Match: 使用直方图匹配进行叠加.[3] Seamless: 使用 OpenCV Poisson 无缝克隆技术混合人脸.[4] Seamless Hist-Match: 结合 Seamless 和 Hist-Match.[5] Raw-RGB: 覆盖整个学习的面部区域(正方形)无遮罩.[6] Raw-Predicted: 只输出预测(学习)的人脸, 像人脸数据集一样的方形图像.

遮罩模式(Mask_Mode):

dst: 默认生成的目标遮罩learned-prd: 在训练中基于源学习的遮罩learned-dst: 在训练中基于目标学习的遮罩learned-prd*learned-dst: 使用最小面积的组合已学习的遮罩组合learned-prd+learned-dst: 使用最大面积的组合已学习的遮罩组合XSeg-prd: 基于源的 XSeg 遮罩(需要 XSeg 模型)XSeg-dst: 基于目标的 XSeg 遮罩(需要 XSeg 模型)XSeg-prd*XSeg-dst: 使用最小面积的 XSeg 遮罩组合(需要 XSeg 模型)learned-prdlearned-dstXSeg-prd*XSeg-dst: 使用最小面积的遮罩组合(需要 XSeg 模型)full: 遮罩扩展到脸部边界(正方形),类似于无遮罩。

颜色转换模式(Color Transfer Mode):

none:无色彩转换rct:Reinhard色彩转换(遮罩)lct:线性色彩转换mkl:Monge-Kantorovitch 线性 色彩转换mkl-m:MKL带遮罩idt:Iterative Distribution Transfer(迭代分布转换)idt-m:IDT带遮罩sot-m:Sliced Optimal Transport 带遮罩mix-m:RCT/LCT/SOT混合屏蔽(可能是) (4.2)覆盖模式+遮罩对比

下面用个例子对比看看(其它参数比如侵蚀/羽化/色彩转换有调节)。

Mode: original: 显示原始的dst视频帧图像(志玲姐). 请添加图片描述

Mode: overlay: 直接覆盖(叠加) Mask: full:无遮罩,整个正方形区域都用(经常有人问为什么有个方形的框,因为没遮罩,就没范围) 请添加图片描述

Mode: overlay: 直接覆盖(叠加) Mask: learned-prd*learned-dst: 使用最小面积的组合已学习的遮罩组合(手指反而被脸部遮挡) 请添加图片描述

Mode: overlay: 直接覆盖(叠加) Mask: XSeg-prd*XSeg-dst:使用最小面积的 XSeg 遮罩组合(需要 XSeg 模型)(手指遮挡脸部正常) 请添加图片描述

(五)合成的图片转视频

这部分没什么变化。

确保 合成后视频帧图片+ 目标视频(data_dst.mp4) 位置正确。 执行:8) merged to mp4.bat。建议输入个超高的码率,便于后期用视频软件处理。

需要原始的目标视频,是因为要它的音频和码率。。。

⚠️千万不要用8) merged to mp4 lossless.bat。视频质量会出奇的低,各种色块,不知道是什么bug。 除非你参考《可以提高DeepFaceLab(DeepFake)合成最终视频速度的方法》里面的内容修改了lossless的源代码。 既然改了代码,就强烈建议用N卡的nvenc方式,真的快很多倍啊。

合成完毕,输出的视频叫result.mp4。 恭喜你,现在志玲姐的影视片段,由你来主演了。

后面就是PR,AE,Vegas的事儿了。

(六)总结

所有的辅助软件都在开始(人脸数据集素材)阶段起作用。

素材准备最最重要。完全正确的脸部识别+遮罩,将大幅增加合成的自然度,还可以降低训练时间。

记得复用模型,换dst可直接训练,甚至0训练直接合成。

单个模型是单个src的模型,复用模型但换src是需要更多训练的。 如果是liae模型就删除xx_SAEHD_inter_AB.npy文件再训练新src。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有