今天的主要来搭建deepFaceLab 的环境,和初识deepFaceLab, 为了方便之后就称它为Lab了.学完本节之后,我们一起来动手把下面这段视频换成你想的女神吧(说实话,这妹子和歌声着实让我心扑通一下),教程并不难,耐心认真的看下去, 为了加深兴趣,老规矩依旧从观看一段赏心悦目的视频开始吧!
原视频链接:https://www.bilibili.com/video/av7243923
为什么选这个视频, 因为他刚好可以把Lab这款换脸的软件优缺点完整的展示出来,后面会说到, 好了不多废话,开始教程
===============华丽的分割线=======================
之前有朋友留言说下载地址的种子没有速度,我重新传网盘了,用这个最新的吧
下载地址:https://pan.baidu.com/s/1pQUA4VYARszPLs8onHeoDQ 密码:0cna
安装软件
1.微软Visual Studio 2015
http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso
1)选择自定义安装
2)勾选C++
一直下一步直到安装完成,大约需要10-20分钟
2.CUDA 9.0
Win10 https://developerhttp://www.360doc.com/content/19/0720/18/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_win10-exe Win7 https://developerhttp://www.360doc.com/content/19/0720/18/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_windows-exe
根据自操作系统选择对应的版本下载安装,安装时 一直下一步即可,建议使用默认路径
3.CuDNN 7.0.5
Win10 https://pan.baidu.com/s/1EcNxiYQ_Zrnpe24d5u7ZPg 密码 md66 Win7 https://pan.baidu.com/s/1RfG45ORk2harzXpefFARbA 密码 ozou下载之后,
解压文件,把3个文件夹(bin, include, lib)
复制到上一步CUDA的安装路径,一般都在
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0
这几个库文件需要复制好后面才不会出错
4.python3.6.0
地址:https://wwwhttp://www.360doc.com/content/19/0720/18/ftp/python/3.6.5/python-3.6.5-amd64.exe
其他的 都选择默认的即可,下一步下一步直到安装完成!
到此Lab的运行环境就算搭建好了, 如果中途出现什么其他的错误请给我留言,或者百度
==========华丽的分割线=========
接下来,我们来认识一下Lab
有N多个批处理 脚本,是不是心虚了?莫慌,其实简单的不要不要的, 比fakeapp faceswap还要方便简单的多的多的多, 我一一解释吧
首先是
一. _internal 目录
这个目录里是工具的核心代码, 如果你不是专业人士研究代码的朋友,可以不用去管他
二.workspace 工作目录
data_dst:这个目录是用来存放按帧分解的目标视频的图片,
dst = destination 目标视频(也就是你想换脸的视频)
data_src:这个目录是用来存放你收集的某女神的图片,
src = source 数据源(也就是你想用这个目录下的女神的脸 去替换目标视频)
model:人工智能训练的模型,存放的目录, 每次训练他都会重新去读取你上次训练的结果,所以这个一定要保存好,训练较长时间的模型,可以很快速的完成对脸部数据的学习.可以合成出相似度极高的视频
data_dst.mp4:
你要替换脸部的目标视频, 必须存在的
data_src.mp4:
收集替换素材图片的方式有2种,
1是百度搜索大量的女神图片,照片,写真等等,放到data_src目录下.
2是通过视频,来分解帧,得到一张一张的图片.
了解了素材的收集方式, 那么就知道了data_src.mp4就是你收集的源视频片段,将按帧分解它,得到素材图片. 所以他不是必须存在的
先就说说AI换脸技术的原理吧
1首先把目标视频分解成一张张的图片存放data_dst目录
2.从data_dst目录中图片中提取人脸 存放到data_dstaligned 目录
3.把data_src目录素材图片提取人脸存放到data_srcaligned 目录
4.开始训练, train XXX.bat让机器学习识别2个目录的脸部特征
5. 当训练一定的时间后,开始替换, convert XX.bat, 人工智能根据学习到的脸部特征 去替换data_dst目标图片(你可以理解为,人工智能帮你把 分解的视频阿冷的脸 一张张的ps成了唐嫣)
6. 最后在将替换后的图片 合成视频
这样就完成了
三.批处理脚本
1) clear workspace.bat
其实稍微有点英文的朋友就可以很清楚的知道, 叫清理工作区, 慎点
会清理训练的model,图片,和人脸
2) extract PNG from video data_src XX FPS.bat
XX代表的帧数,
按X帧 从源视频data_src.MP4 提取png图片,作为素材
可以右键编辑打开看 看
call '_internalev.bat' data_src 1 1代表1帧, 5代表5帧
0代表按帧源视频的帧数提取图片,帧数越大 提取到的图片也就越多
提取到的图片会存放在data_src目录中
3.1) cut video data_dst (edit me).bat
这个脚本是用来剪切目标视频,例如目标视频时间太长,而我只想做1分钟的.
那么就可以用他来剪切
方法右键编辑
我就从视频的30秒开始, 到1分30秒, 就编译
call '_internalcut.bat' data_dst 00:00:30 00:01:00
然后保存, 在双击cut video data_dst (edit me).bat 运行,
目标视频就会变成1分钟的(记住对原来的视频做好备份哦)
3.2) extract PNG from video data_dst FULL FPS.bat
和前面的extract PNG from video data_src XX FPS.bat 一样
分解目标视频data_dst.MP4,为png图片
4) data_src extract faces XX.bat
把data_src目录素材图片提取人脸存放到data_srcaligned 目录
DLIB 和MT 是两种人脸识别的算法.
all/best GPU debug:all多gpu提取, debug调试脸部提取范围
4开头的脚本都是辅助工具, 根据清晰度排序
4.1) data_src check result.bat
4.2.1) data_src sort by blur.bat
根据清晰度排序data_src
4.2.2) data_src sort by similar histogram
根据直方图 排序data_src
4.2.3) data_src sort by similar histogram and blur
根据相似直方图和清晰度 排序data_src
4.2.4) data_src sort by dissimilar histogram
根据不相似直方图排序data_src
4.2.5) data_src sort by face yaw
根据脸型角度排序data_src
4.2.other) data_src sort by brightness
根据亮度排序data_src
4.2.other) data_src sort by hue
根据色调排序data_src
5) data_dst extract faces XX.bat
把data_dst 目录素材图片提取人脸存放到data_dst aligned 目录
DLIB 和MT 是两种人脸识别的算法.
all/best GPU debug:all多gpu提取, debug调试脸部提取范围
manual fix:表示手动调整提取位置
5.1-5.3 辅助排序工具 参考4.1-4.2
6) train XX.bat
开始训练模型,让机器学习识别2个(data_srcaligned, data_dstaligned)的脸部特征
选择训练算法介绍
H64:显存为2gb的用户使用这种算法训练,头像为64分辨率
H128: 显存为3gb以上的用户 使用这种算法 128分辨率, 比H64更清晰更好的处理面部细节
DF: 显存为5gb 以上的用户使用 128分辨率,可以更好的融合目标视频,但是源素材src 不能有混合光线的素材图片 , 比如一张亮度比较高和一张亮度暗的素材
LIAEF128 (5GB+) :
结合DF、IAE研制的新算法。模型试图将src人脸直接变形为dst,在保持src人脸特征的同时,减少src人脸的攻击性变形。模型在闭眼识别方面存在问题。
MIAEF128 (5GB+)
他的本质和LIAEF128 是一样的,但是在MIAEF128 它也试图匹配亮度/颜色特征。
如果有条件的朋友尽量选择这种算法,目前算最好的
7) convert XXX.bat
当训练一定的时间后,开始替换, convert XX.bat, 人工智能根据学习到的脸部特征 去替换data_dst目标图片(你可以理解为,人工智能帮你把 分解的视频阿冷的脸 一张张的ps成了唐嫣)
需要注意的是, 你是用那种训练算法训练的模型,就要使用对应的算法进行替换
例如 使用train MIAEF128 best GPU.bat 进行训练的
就需要使用convert MIAEF128.bat 进行替换
8) converted to XX.bat
把替换好的图片 合成xx格式类型的视频,MP4 avi mov
===============华丽的分割线=============
Batch Size是什么?要设置多大?
Batch Size的意思大概就是一批训练多少个图片素材,一般设置为2的倍数。数字越大越需要更多显存,但是迭代频率会降低;数字越小对显卡要求更低,迭代速度增加。一般情况在Deepfacelab中,是默认设置显卡适配的最大值。
新手建议自动或从大的数值每次减半直到能够正常运行(比如128→64→32→16…),有兴趣研究更好质量的可以从1或2开始不断翻倍数值。
目前有朋友测试过用GPU服务器进行运算,但结果是LAB的MODEL拿下来用不了,原因可能是源卡显存太大。
要训练多久才有好的效果?
说实话,这个不一定,还是建议看预览界面,一般Faceswap的默认算法都是LossA到达0.01左右,Deepfacelab是最低数值到达0.04或者0.03左右
数值越低清晰度越高,但是如果模糊的时候就已经看到有些画面识别错误了,那么在更低的Loss的时候他也是错误的。
Deepfacelab会把重复使用的MODEL折线图放在一起,所以第3次训练开始可以根据前面的曲线来决定什么时候退出以获得更合适的时长和效果。
训练如何停止?
Deepfacelab的停止方式是预览界面中按回车,这两个软件都会在DOS界面里提示。
s:保存当前训练
回车:退出训练
p:更新下一组图训练
好了 篇幅又长了 好好消化一下吧, 动手搭建环境 跑起来吧,
第三节,讲如果调整训练参数,使粗糙的痕迹变得完美!