【老鸟进阶】Deepfacelab 如何让融合更自然,值得收藏
单一光影的SRC由于只需学习一种光影情形,通常模型收敛速度快,但这就像你只学了一门数学就去期末考,学的是挺快,但考试要考9门课,除了数学其他都考不好。很简单,合成时按W(遮罩腐蚀,erode,即向内缩小遮罩)和E(模糊遮罩边缘,blur,即羽化边缘),这两个具体数值不定,根据你实际图片大小自行调节。这样模型看到模糊的dst就生成模糊的src,看见清晰的dst就生成清晰的dst。而无论是人脸特征点勾
玩DFL也有一阵时间了或多或少接触过一些好用的软件 这里就简单总结一下个人用过的好用的吧
有了这些工具可谓事半功倍!
deepfacelab常用工具合集,小白变高手
下载地址:
链接:https://pan.baidu.com/s/12WB7odewviDhDoDQtVXFgQ?pwd=w8pj
提取码:w8pj
--来自百度网盘超级会员V2的分享
花几千米收来的多个deepfacelab模型(模型+遮罩+说明)
下载地址:
链接:https://pan.baidu.com/s/1Xes3VlY2jSCHmYEl3Qoo3A?pwd=xlet
提取码:xlet
--来自百度网盘超级会员V2的分享
面具感篇
想必大家初学阶段都遇到过这问题,训练时看着生成的图挺自然,但一旦合成到原图上,就说不出的不协调。
不协调的原因有很多,大致可以概括为以下几类
1. 边缘割裂
2. 色彩不统一
3. 遮挡物异常
4. 脸型五官不相似
5. 清晰度不统一
6. 表情僵硬,眼神痴呆、口型不对
本篇主要讲解边缘割裂和色彩不统一怎么解决,也就是大家常说的面具感
面具感样例
图1的病情比较严重,既有边缘割裂,又有颜色差异
图2的病情相对较好,颜色差异不大,但边缘还是能看到明显的分割线
边缘割裂的产生原因
生成得到的脸是正方形的,带花花绿绿的背景,合成时通过遮罩抠出人脸部分,贴合到原画面上。
而无论是人脸特征点勾勒而成的遮罩,还是Xseg应用得到的遮罩,边缘都是比较锐利的,这就造成图像的突变,形成边缘割裂
边缘割裂的解法
很简单,合成时按W(遮罩腐蚀,erode,即向内缩小遮罩)和E(模糊遮罩边缘,blur,即羽化边缘),这两个具体数值不定,根据你实际图片大小自行调节。我通常W和E都调到100左右
色差的产生原因
色差是由于你的src数据中,光影和色调不够丰富,导致无论什么颜色的dst,都会生成固定颜色的src。若你的模型是DF结构,这个情况尤为严重。LIAE结构的模型这个症状相对较轻。
色差的解法
色差不能完全消除,只能通过手段减轻。具体方法有
1. 准备更多光影条件的下的SRC素材。很多人以为SRC光影越单一越好,这是完全错误的。单一光影的SRC由于只需学习一种光影情形,通常模型收敛速度快,但这就像你只学了一门数学就去期末考,学的是挺快,但考试要考9门课,除了数学其他都考不好。真实情况是SRC光影越丰富越好。
2. 如果素材光影确实不够丰富,那推荐使用LIAE结构的模型,不要使用DF结构的模型。具体原因以后讲解,比较深奥。
3. 训练时打开color transfer(色彩转移)这个选项,使用lct或rct
4. (不太稳定的做法)训练时打开face_style_power(脸部风格强度),用个0.1即可。 但这个参数打开后,容易导致模型突然崩溃,速成练废了,不建议萌新开启。如果开启,记得备份模型
5. 合成时,融合模式选1overlay(直接覆盖),通常前面工作做的好的话,直接覆盖效果就不错了
6. 合成时,按C切换颜色调整模式,挑一个颜色更自然的模式使用。通常是rct或lct
结语
本文只讲了面具感产生的原因和解决方法,离自然的融合还有很多路要走,我会陆续更新其他进阶教程。
大家的鼓励是我最大的动力
清晰度篇
当你注意到清晰度问题时,恭喜你已经是个老鸟了。
本篇就来讲讲清晰度相关的进阶教程
清晰度通常有以下几种情况导致看上去违和
1. 视频清晰、SRC脸模糊 (常见)
2. 视频模糊、SRC脸清晰 (偶尔)
3. 视频DST人脸时而清晰时而模糊,换的SRC一直清晰 (少见)
我就分开讲讲这三种情况都该如何优化
1. 视频清晰、SRC脸模糊
这是最常见的情况,也是新手都会遇到过着情况。挑了一个清晰的视频做换脸,结果换上去的脸比周围背景明显模糊一大截。
然后许多人错误的以为加大模型分辨率就可以变清晰,吭哧吭哧又训练一个高分辨率模型,一换发现还是这么糊。
别急,先来分析下产生这问题的原因
以1920*1080p的视频为例,如下图,通常人脸大小只有250左右,理论上用256分辨率的模型已经足够满足人脸清晰度要求
但为什么你用256模型合成出来就感到模糊呢?
原因是你的256模型没有训练出它的极限清晰度。一个256极限清晰度的模型要比512垃圾清晰度的模型要好得多
就像你打游戏,256级满技能满装备的土豪,能吊打512级没技能没装备的玩家
那怎么才能训练出模型的极限清晰度呢?
1. 训练数据要足够清晰,减少模糊素材比例。如果没有高清素材,可以提取人脸后,用Topaz系列软件来提升清晰度.
2. 训练足够充分
3. 训练充分后把随机扭曲(random warp)关闭
4. 训练充分后开GAN 0.01-0.1(一定要开启自动备份和梯度裁剪,以免模型跑崩)
除了训练时尽量压榨出模型潜力,在合成阶段也有两个个手段可以提升脸部清晰度
1. 合成时按T,可以调用软件自带的超分辨率模型来提升人脸清晰度
2. 清晰度实在提不上去,换个思路,可以把dst视频弄模糊一点。合成阶段有个背景图片降噪功能,可以把dst背景视频给弄模糊,从而提高融合自然度。
按上述处理完后,基本可以实现清晰人脸。
如果你视频中的人脸特别大,那就挑战更高分辨率的模型吧。高分辨率模型的训练技巧以后讲解。
2. 视频模糊、SRC脸清晰
这个通常是SRC训练特别好,比dst视频清晰太多出现的问题。属于幸福的烦恼
也很容易解决。几个方法
1. 找同款但高清的dst视频(哈哈)
2. 在SRC训练数据中,加入一些模糊的SRC。这样模型看到模糊的dst就生成模糊的src,看见清晰的dst就生成清晰的dst
3. 视频DST人脸时而清晰时而模糊,换的SRC一直清晰
产生这个现象的原因是dst视频中人脸在不停变动。静止时比较清晰,动起来就有运动模糊,看上去自然会糊。 但SRC一股脑全生成清晰的图,不带运动模糊,看上去就不自然
解决方法很简单
1.合成时按R调节运动模糊强度。(如果一个画面有多个人脸,合成时会全片无法开启运动模糊。请提前确保aligned_dst中,每一帧至多只有一个人脸,将多余的非目标人脸删除)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)