DeepFaceLab 3.0使用总结

手头刚好有个3080,就选用DFL3.0 1120 RTX30版本。DFL由版本+日期+适配显卡组成。

1 安装

Windows下基本是解压开箱即用。


image.png

主要是安装驱动,下载驱动:

https://www.nvidia.cn/Download/index.aspx?lang=cn

查看CUDA版本:NVIDIA控制面板 - 菜单 - 帮助 - 系统信息 - 组件 - NVCUDA64.DLL。如果需要安装cuda和cudnn,参考:

https://developer.nvidia.com/zh-cn/cuda-downloads
https://developer.nvidia.com/rdp/cudnn-archive # 复制到文件夹

2 使用

2.0 准备视频

源视频的素材可得好好选取准备,越清晰越好!因为清晰的可以变模糊,但模糊的想要清晰可就难了。近景远景正脸侧脸死亡角度白天黑夜喜怒哀乐各种有代表性的,可以用格式工厂之类的进行截取、拼接、转化,最终存为data_src.mp4

目标视频处理比较简单些,看作者的成品想法,最终存为data_dst.mp4。为了换脸丝滑,src和dst尽可能选择表情、角度、光源接近的,src的数据量可以多一些。

2.1 src切图

  • 点击运行2) 源视频转图片 extract images from video data_src.bat
  • 输入自定义帧率,推荐值10,以减少重复图片。
  • 选择格式,有两种,PNG无损清晰,JPG文件小,要求不高的就用JPG吧。
    回车开始切图,40分钟的视频,不到1分钟就切完了,存在workspace\data_src根目录。这些图片只是为了后面切脸,所以切完脸可以删掉。甚至有的第三方切脸软件可以直接从视频开始,那就省略这一步了。

2.2 dst切图

  • 点击运行3) 目标视频转图片 extract images from video data_dst FULL FPS.bat
  • 选择格式,比如JPG。
    回车开始切图,这个根目录下的图片千万别删除,没人脸也别删,因为每一张图最后都是用来合成视频的,所以不需要输入帧率。

2.3 src切脸

点击运行4) 提取源头像 data_src faceset extract.bat。会有参数需要设置,如图:

image.png

  • 选择脸型:有全脸(f)、整脸(wf)、头(head)。wf比f替换面积更大,覆盖额头和胡子,f只替换到眉毛上方一点点。一般选择默认的wf。
  • 设置最多识别几个人,如果视频大部分时间就1个人,那就选1;如果不少时候都是两人同框,且可能都需要,那就选2。
  • 设置图片大小:一般256够了,当然分辨率当然越高越好,但也耗资源。不过如果源视频质量不怎样,就算512也没啥用。
  • 图片质量就默认90。
  • 调试图片也没啥好看的,错切的到时候删掉就是。

设置完毕,回车运行脚本,3080切脸速度大概2张/秒。会生成到workspace\data_src\aligned目录。
如果希望加快切脸速度,可以网上找一些专业提脸软件,速度能提升10倍左右。

接下来是重要的整理工作:
推荐使用第三方软件MVE(Machine Video Editor)进行切图纠错、蒙板管理,很强大,有兴趣的自行研究。

  • 可用VisiPics软件去除掉无意义的重复的图。
  • 点击运行4.2) 源头像排序 data_src sort.bat将图片排序,一般选择5-颜色直方图排序。筛选下,删除掉模糊的、旋转的(基本是因为识别失败)、残缺的、有遮挡的、有黑边裁切的、刘海太大的、不相干人物的、以及光照差异大的。如果是普通的遮挡物且素材奇缺,可以保留着用作遮罩训练。
  • 识别不准的如果很珍贵,可以进行手删补切。就是删除掉debug目录里对应的错图,然后运行手动提取脚本data_src faceset extract MANUAL.bat再来一次,素材多就直接删了吧。
  • 还可以运行排序脚本按1-模糊程度排个序,然后删除,不过也有观点认为适当模糊的其实也可以留着训练,自行探索吧。

如果aligned里有多个人(初始会带着不同的文件名后缀,如_0、_1,一般按照同一张图里头像大小排序的),直接训练会产生混血儿。建议使用颜色直方图做排序,然后把不同的人归类到不同的文件夹备用,或者删除掉不需要换脸的人。这一步可配合人脸筛选工具进行,类似于iphone照片的人物识别归类,会方便许多。

https://github.com/MachineEditor/MachineVideoEditor

2.4 dst切脸

点击运行5) 目标头像提取 data_dst faceset extract.bat。参数如下:

image.png

切完后进行整理。

  • 建议用颜色直方图做排序,归类不同人到不同的文件夹备用,或删除掉不想换脸的,特别模糊看不清的。
  • 极限仰脸/侧脸之类的都看不清谁是谁的,可以干脆删掉不换了。还有一个做法是,复制一份到src的aligned目录用于自己训练自己。或者想办法去src里补充下极限角度素材。
  • 有遮挡的别删,因为也需要换脸。
  • 对于脸部轮廓识别错误的、图片旋转但脸部清晰的,别直接删!需要人工修改下。先在Debug目录删除掉对应的图片,然后运行data_dst extract faces MANUAL RE-EXTRACT DELETED RESULTS DEBUG.bat,会提示发现一张图片,等加载完毕后,移动和滚动鼠标来调整区域,单击鼠标进行解锁或锁定,最后回车确认,就会开始提取,debug目录和aligned都会生成更新图片。

记住一点,这个aligned目录下的所有人脸,最终都是要被src的人脸替换的。比如如果留着多个人,会产生多胞胎。

2.5 处理遮罩(可选)

2.5.1 绘制

有时候dst图片脸上有遮挡物,如果不处理,到时候就直接把src整个糊上去。那会产生奇怪的效果,比如脸上没眼镜却有两个眼镜腿。

  • 运行data_dst mask for XSeg trainer - edit.bat,会跳出界面绘制dst遮罩,就是框框抠抠,这是个细活儿,挺累的。
  • 运行train.bat训练遮罩,设置脸型和batch_size,训练个几十上百万,回车结束。
  • XSeg遮罩训练素材是不区分是src和dst。

2.5.2 使用Xseg模型(推荐)

网上有一些现成的遮罩模型,注意这跟换脸模型不一样,虽然也是放到model目录。有两种使用方式:

  • 训练前先推理遮罩。运行data_src/dst trained mask - apply.bat,将遮罩写入图片并学习非遮罩区域。
  • (推荐)合成merge时,在交互窗口,按X,实时选择遮罩并预览,新手就用这个吧,别训练了,效果略差,但也差不到哪里去。

在别的基础上训练,比直接拿来用好一些。是否重新训练

Xseg模型可复用,手工画完的遮罩图可运行data_dst mask for XSeg trainer - fetch.bat搜集起来,增量训练。不过新手用不到。

2.6 训练

入门或者配置低可使用轻量级的train Quick96.bat,不需要设置参数。这里重点说下重量级的SAEHD

首先,新手务必找个预训练模型(仙丹)来继续训练,会大大减少时间、提升效果!!!

使用仙丹后再训个几万次迭代吧,后期打开LRD和GAN。使用仙丹,分辨率没法改。

  • batch_size默认可能是4,如果是沿用已有模型,启动训练后2秒内回车,可以修改batch_size等,比如16,单次迭代时间应该会变长。
  • 模型架构:DF五官结构保留的更像,LIAE光影处理的更好,-u增加人脸相似度,-d分辨率不错,推荐LIAE。
  • 几个层的宽度,根据配置选择,比如中间瓶颈层为256、编码解码层为64,而遮罩层一般是三分之一解码层宽度。
  • 如果有闭眼、张嘴的素材,可以开启Eyes and mouth priority。
  • 训练没进步了可以开启学习率丢弃(Use learning rate dropout)。
  • Enable random warp of samples可以前期开启,提高训练难度,后期关闭。
  • 配置高可以开一点GAN power ,比如0.1。GAN dimensions大概16。
  • 变色处理:color transfer选RCT和LCT,可弥补光影变化不足,当然最好是收集更多全角度不同光影下的SRC素材。
  • Enable gradient clipping梯度裁剪必须开启!
  • src/dst loss都刷进0.2就差不多了,预览图蓝色和黄色分别代表src和dst。
  • 或者,预览界面第5列足够清晰,且表情接近第4列,就可以回车结束了。
  • masked_training: True。意思是只学习蒙板内的?待确认。

喜欢src的脸型,就打开true_face_power,否则打开face_style_power。不要同时开,一般是0.001。
最后,来自dfldata网站的一组从0开始训练的推荐参数:

# 先开这组参数训练10-60W
face type : WF
random_flip : off # 防止左右脸不一样的翻来翻去
random warp:y
adabelief : on
Eyes and mouth priority : on
color transfer mode: lct

# 再开这个训练10-30W,开了就别关了!
learning rate drop:y

# 再关闭随机扭曲训练10-30W
random warp:n

# 最后开GAN训练10-30W
GAN power: 0.1 # 此时loss比较低了,比如0.1,打开前可以备份下,容易崩

训练效果差一般就是因为src素材缺乏,没好料。

2.7 应用模型

本步骤将图片换脸,以前老版本叫convert吧。

  • 入门可使用merge Quick96.bat,另有SAEHD(高质量)、AMP(实时换脸,用于DeepFaceLive)。
  • 选择交互模式,输入法切换成英文;
  • 线程数根据CPU确定;
  • 显示快捷键后,按Tab切换合成预览界面/帮助;
  • 快捷键修改调整,然后可以按shift+?,将这组参数配置应用到剩余所有帧,再按shift+>,自动合成剩余所有帧,会出现沙漏。过程中可以暂停进行调整,然后继续应用、合成。
  • 按住shift调整,参数每次±5。

各种参数自行试一试,多按一按,就找到感觉了!!!

2.7.1 覆盖模式

1-overlay,2-hist-match,3-hist-match-bw,4-seamless,5-seamless-hist-match,6-raw-rgb,7-raw-rgb-mask,8-raw-mask-only ,9-raw-predicted-only。
其中,4-seamless(泊松克隆)比较适配遮挡的情况,缺点:闪烁、抖动、偏暗。一般推荐2-hist-match的色彩比较接近,配合erode和blur使用。

2.7.2 直方图匹配阈值

Hist match threshold. [0..255] (default – 255): 快捷键QA设定需要的亮度,适当降低该值,可以解决亮斑,比如238。

2.7.3 侵蚀

快捷键WS调整被替换区域,值变大增大遮罩向内收缩程度,有时会出现亮色边。

2.7.4 模糊

Choose blur mask modifier [-200..200]: 快捷键ED设定平滑度,羽化边缘,看起来模糊自然。如果不处理遮挡,hist-match (erode: 100, blur: 100);如果遮挡比较大,seamless (erode: 30, blur:0)。

2.7.5 运动模糊

快捷键RF调节运动模糊程度,前后帧脸部变化越大,模糊程度越大。使用前确保aligned_dst的每一帧只有一个人脸。

2.7.6 超分辨率

快捷键TG调节超分辨率效果,可以让人脸更清晰,可以设定为100。

2.7.7 锐化

快捷键YH调节锐化程度,按N更改锐化模式,选择gaussian模式,按Y增加参数到5。

2.7.8 放大缩小

快捷键UJ调节人脸大小。

2.7.9 背景劣化

有时候人脸不清晰,干脆降低背景画质,大家一起摆烂。其中,快捷键IK调节图片降噪效果(和磨皮差不多),快捷键OL调节双三次插值劣化效果,快捷键P;调节颜色劣化效果。

2.7.10 遮罩与颜色控制区

  • Z 直方图匹配对遮罩区域起效
  • X 遮罩模式,记得是prd-dst效果比较好,多试试
    老版本的还有:
Mask mode: (1) learned, (2) dst, (3) FAN-prd, (4) FAN-dst (5) FAN-prd * dst (6) learned * FAN-prd * FAN-dst help (?) . Default – 1:
一般选2,速度快。其他效果好,但慢,且在使用了Fanseg模型遮罩之后,必须使用FAN模型。
如果要处理遮挡,转换启动后启用动态交互,然后按Tab键盘进入预览窗口,按两次X,切换成Fan-dst。
  • C 颜色转化模式
  • V 查看遮罩范围

2.8 合成视频

设置下码率即可,比如3。

3 经验

3.1 复用模型

也就是使用预训练模型(灵丹)。先将其复制到model文件夹,然后src和dst放自己想要换脸的素材,开启训练后2秒钟内按回车,最后把“是否启用预训练模式 use pretrain mode”改为N。注意,这选项千万不需要Y,否则会调用内置的外国人数据进行训练。然后训练,基本一开始就能看到人影。如果看不到,就按回车结束训练,把预训练模型的.npy文件复制替换到模型文件夹中,重来一次。

预训练模型跟正式训练模型本质上都是模型,只不过预训模型使用了大量素材进行炼丹,学会了很多绘画技法。在其基础上再去专门学习画某个人,速度就快了。也有做法将正训素材也加到预训素材里一起炼丹,普通玩家就别随便炼丹了。

3.2 素材不够

  • DF架构,src和dst素材互换进行训练,学习到dst的极限角度。

3.3 多人切脸

  • 为了避免多人影响切脸,可以用PR蒙板圈出dst脸,并且路径跟踪脸部,然后导出data_dst.mp4,再切图切脸,速度快很多。然后把data_dst根目录的切图给删掉,将没有蒙板的原始视频拷贝成data_dst.mp4,切图即可,不要再切脸了!
  • 合成换脸时,src dst的aligned目录只能有一个人!否则会出现双胞胎、混血儿。先把闲杂人先移走,换好一对脸,把帧图保存下来继续换下一个,最后合成视频。
  • 最好一人一丹,更好是一对一丹,费点事。

4 问题

4.1 报错

大部分是因为驱动太旧、显存太少。如CUDA driver version is insufficient for CUDA runtime versionCould not create cudnn handle,可以升级驱动解决。

4.2 视频抖动

  • 可能是dst切脸轮廓不统一,参考之前的手删补切解决。
  • 侵蚀过大,调到比如50试试。
  • 打开颜色转移CT,比如lct。
  • 试试增加训练时间,或者增加LRD的时间,以稳定像素映射。

4.3 视频闪烁

  • 有可能是dst漏切脸了,导致视频在src和dst两张脸间闪烁,可以去aligned目录检查一下并补充。
  • 视dst切脸的准确程度,也可能造成局部闪烁,手删补切吧。
  • 还可能是dst光影丰富,而src光影不足,可以换成LIAE架构,或者想办法补充src素材吧。

4.4 肤色不统一

  • 训练时间不够
  • 缺少src素材
  • 建议开启颜色转移CT,不停按C看看效果
  • 软件后期

4.5 皮肤太光滑

  • 训练充分后,关闭随机扭曲random warp,开启GAN0.01-0.1,提高清晰度
  • 合成时再加超精细和锐化(box),按T加大超分辨率

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容