这篇教程是博主花了两天摸索试错辛辛苦苦得出的,转载请注明出处,谢谢!
注:由于博主电脑上DFL已经删除了接近半年时间,很多东西忘得差不多了。评论区的评论可能不会再回复了,如果给您造成麻烦,十分抱歉。
博主学生一枚,近日要做一个News Presentation,然后我就想到了去年的Deepfakes(虽然不算News了),二话不多说,网上搜教程安装,但是!!!Faceswap和FakeApp硬件要求都太高了(穷),于是只能安装没有图形界面的FaceFaceLab(不过还别说挺好用的)
RAM:≥512MB(运存越大结果越好)
独立显卡(可以没有,有的话就更好了)
系统:Win 7以上 64位(硬性要求)
MacBook Air A1370(2010款)
CPU:Inter(R) Core(TM) i5-2467M CPU @ 1.60GHz 1.60Ghz
无独立显卡
RAM:4GB
系统:Windows 7 x64
VMware
CPU:Inter(R) Core(TM) i5-2467M CPU @ 1.60GHz 1.60Ghz
无独立显卡
RAM:2GB
系统:Windows 7 x64
1. 下载DeepFaceLab
https://rutracker.org/forum/viewtopic.php?p=75318742(可能要,下载比较慢,有迅雷会员会快很多,网页是俄文的,需要翻译软件,实在下不动就问度娘吧)
进入网页点击磁力链下载,有两种类型的文件(共4个):
a). DeepFaceLabOpenCLSSE(不需要NVIDIA显卡版本)
b). DeepFaceLabCUDAx.xSSE/AVX(需要NVIDIA显卡及其驱动)
有NVIDIA显卡就安装 b). 类型,没有的话就安装 a). 类型。由于硬件限制,以下教程仅介绍 a). 类型,b). 类型与a).类型安装过程差不多,但需要安装CUDA和CUDNN(NVIDIA显卡)
2. 解压缩
3. 了解文件结构
DeepFaceLab文件夹下有2个文件夹、1~9的批处理文件、两个txt文本文件和两个PDF文件,其中,“_internal”是核心文件,“workspace”顾名思义是你的工作空间,需要替换Face的视频需要放在这,输出的文件也是在这里;批处理文件相当于你的操作台,不需用1~9全部点完,根据个人需求操作即可,对其中出现的英文可以右键 标记 选取 右键(相当于复制)翻译,参考PDF文件以便了解全面;txt文本文件一个是更新日志,另外一个是一个简单的说明文档;PDF文件是操作教程以及一些说明,一个俄文一个英文。
4. 尝试替换Face
“workspace”里有两个示例视频,推荐先拿这两个练练手,src是你想要提取的Face,dst是被替换Face的视频,推荐批处理文件的点击流程(不要同时执行!):
2):将视频转换为多个jpg/png文件
→3.2):同上
→4):这一部分是识别data_src视频的人脸,MANUAL是手动识别(不推荐),MT和S3FD是自动识别,没有哪个好哪个坏,MT和S3FD是适应不同场景的,不了解的话随便选一个,all GPU是使用所有的CPU/GPU,best GPU是使用一个CPU/GPU,debug会在workspace中data_src/dst输出一些方便debug的文件
→5):同上
→6):在这之前你需要前往“workspace/data_src/aligned”中将不是人脸、过于模糊的图片、模糊的半张脸删除;前往“workspace/data_dst/aligned”中只需将不是人脸的图片删除即可(不然会有一些奇怪的东西出现,比如示例视频如果不删掉裤裆部分的图片那么。。。)当然如果你想快一点的话可以打开“data_src/dst check result.bat”,它会打开一个软件方便你删除。然后选择你需要训练的模式,不同模式有对RAM有不同要求,一般情况下选H128(RAM ≥4GB),并且“batch_size : 8”(也可以改成其它2的倍数,越大越好,但是需要的RAM就越多),其他默认(之后会介绍train中的参数),一般情况下需要训练一天,loss值降低到0.2左右。
→7):将Face贴上去,之前选的什么训练模式就需要用什么来转换。
→8):输出视频,输出mov需要QuickTime(基本就是按照数字顺序下来)
5. 前往“workspace”
找到名为“result”的视频文件,这就是最终的换脸结果。
1) clear workspace(清理data_src文件夹、data_dst文件夹、model文件夹)
2) extract images from video data_src(将data_src视频转换为一帧一帧图片,放在data_src文件夹中)
3.1) cut video (drop video on me)(截取视频,没用过)
3.2) extract images from video data_dst FULL FPS(将data_dst视频转换为一帧一帧图片)
4) data_src extract faces MANUAL(手动提取Face,会打开一个窗口,左上角有说怎么用(英文))
4) data_src extract faces MT ...(MT模式提取data_src文件夹中的Face)
4) data_src extract faces S3FD ...(S3FD模式提取data_src文件夹中的Face)
4.1) data_src check result(打开一个软件,方便你处理data_src中的图片)
4.2.x) data_src sort by xxxx(将data_src中的文件按照一定模式排序)
5) , 5.1) , 5.2.x)与上面一样,不过对象换成data_dst
6) train xxxxx(按xxxxx模式训练,训练会储存在model中,可以重复使用,但是最好专人专用model,即一个model最好由一个人的src生成,可以有多个dst)
7) convert xxxxx(将src的face覆盖到dst上,结果保存在“workspace/data_dst/merged”中(还是图片))
8) convert to xxx(将上一步生成的图片合成视频,并将data_dst视频的音频也放进去,输出在“workspace/result”)
9) util convert aligned PNG to JPG (drop folder on me)(字面意思,将PNG转换为JPG)
注意,manual_ru.pdf中都有讲解
1. DF(RAM 5GB+)
面部分辨率128,智能排除背景。
2. H64(RAM 2GB+)
面部分辨率64 ,适合RAM较少的人。
3. H128(RAM 3GB+)
面部分辨率128,相当于H64的进阶版(适合新手),当然,你也可以在RAM 2GB的电脑上使用这个模式,只要你选择使用"lightweight autoencoder"(轻量级编码器),但是速度有点令人绝望。
4. LIAEF128(RAM 5GB+)
面部分辨率128 ,与DF差不多。
5. SAE(512 MB+)
最新的也是最好的模式,但参数有点多,不适合新手。
Q1:ValueError: No training data provided.
A1:没有脸部数据,可能是你用其它软件截的脸,这是不行的,DFL仅支持自己截的脸。你可以将其它软件截的脸让DFL再截一遍就可以用了
Q2:ImportError: DLL load failed.
A2:博主也被这个问题困扰了很久,后来发现虚拟机中可以正常运行,于是花了九牛二虎之力找到了解决办法:首先检查Microsoft Visual C++ distributed 2015 X64装了没有,如果装了就找度娘下载api-ms-win-downlevel-shlwapi-l1-1-0.dll(32位)和ieshims.dll复制到DFL的“_internal\python-3.6.8\Lib\site-packages\cv2”中,然后问题解决!
Q3:为什么我换的脸是模糊的
A3:运存过少,训练时间不够,src人脸过少,loss值太高(0.5以上都有点糊)以及"pixel_loss = True"(就是模糊的开关)都会导致这种情况,虽然512MB可以运行,但是结果肯定是不尽人意的,推荐运存2GB以上,训练时间一般10h以上,loss值推荐0.2左右。
Q4:为什么训练时loss值显示的是nan,而且马上就报错
A4:这个我也不太清楚,可能是运存太低,解决办法就是“Use lightweight autoencoder? (Y / n,:? Help skip: n):”选择y(轻量编码器,速度快35%,输出结果目前看来差不多)。
Q5:为什么loss值降到一定就不降了
A5:一般来说降到0.2左右训练就很成功了(一般需要10+h,Iter100000+,而我的电脑需要训练一个星期才能达到目标效果),但是也有特殊情况,降到1左右不再降的可能是脸差的太厉害了,比如讲一个男人的脸贴一个女人身上,当然也有可能是时间不够。
Q6:src需要多少个照片训练比较好
A6:700~3000个左右,推荐1500个最好,太少的话即使loss降到0.1也是糊的,太多的话加重运算负担。
用记事本或Notebook++打开你出错的.bat文件,将里面的"@echo off"改为"@echo on"(打开回显),再用命令提示符(“cmd”)运行这个.bat文件,你会看到完整的报错信息,一般百度报错信息的最后一条即可找到解决方案。如:问度娘“DeepFaceLab ImportError: DLL load failed.”。
如果你有什么不懂得地方,你可以选择在评论去留言,或者访问DeepFakes中文站
最近又出现了了DeepFakes中文网,有兴趣的话可以看看,内容方便更加详细,几乎是手把手的教程了,不过好像是刚建立的网站,访问量与评论不是很多。
这篇教程是博主花了两天摸索试错辛辛苦苦得出的,转载请注明出处,谢谢!