极致的遮罩处理(二):在训练中使用FANSeg遮罩

时间:2024-03-26 12:42:38

最近我们仔细研究了DeepfaceLab遮罩部分的代码,发现了更多关于遮罩的秘密。决定将遮罩的部分的写成系列文章。本文是遮罩系列的第二篇文章(上一篇:极致的遮罩处理(一):DeepFaceLab手动遮罩编辑),这篇文章将回答以下问题:

  1. 如何在训练中用FANSeg设置遮罩
  2. 如何快速的手工编辑遮罩

 

在上一篇文章中,我们介绍了手工编辑遮罩的功能。有的小伙伴精修SRC后,发现Loss值有明显降低。但有的小伙伴表示,我有上千张图片,全都精修,这是要疯啊!既然FANSeg处理遮挡的能力这么强,为什么不能用FANSeg来设置遮罩呢?你别说,还真行,但需要先对代码进行修改。

第一步:

先打开_internal\DeepFaceLab\main.py文件,在第91-106行(具体位置和版本有关,大家可在代码内搜索FANSeg字段)有一段用’’’注释掉的代码,大家把注释符号删掉,就可以让这部分代码发挥作用了。

极致的遮罩处理(二):在训练中使用FANSeg遮罩

 

第二步:

由于作者修改了函数接口,还需要修改_internal\DeepFaceLab\mainscripts\Extractor.py文件,找到这个文件的第98行,在TernausNet函数256前面添加字符串参数”FANSeg”:

极致的遮罩处理(二):在训练中使用FANSeg遮罩

 

第三步:

建立一个批处理文件,内容如下。运行这个批处理文件后,data_dst\aligned里面的头像就都用FANSeg编辑一遍了:

@echo off
call _internal\setenv.bat

"%PYTHON_EXECUTABLE%" "%DFL_ROOT%\main.py" extract_fanseg ^
--input-dir "%WORKSPACE%\data_dst\aligned"

pause

 

处理以后,可以再用遮罩编辑工具查看,会发现遮罩的样式发生了改变,眉毛部分处理的非常圆滑,脸部边缘识别准确,大部分手的遮挡也处理的很好。

极致的遮罩处理(二):在训练中使用FANSeg遮罩

 

极致的遮罩处理(二):在训练中使用FANSeg遮罩

极致的遮罩处理(二):在训练中使用FANSeg遮罩

极致的遮罩处理(二):在训练中使用FANSeg遮罩

不知道小伙伴们对这样的效果是否满意?作者提供的FANSeg功能能够很好的处理头发、手、手机、舌头等遮挡。但模型功能多了,每种功能可能就没那么强大,比如上面第二个图中的手部边缘就处理的不够好。小伙伴们可能希望自己的模型能够精确的处理好特定人物和特定遮挡物,同时视频中可能也有一些奇怪的遮挡需要处理,比如“ 糖蒜 ”。在下一篇文章中,我们就将介绍怎样自己训练FANSeg模型,来实现特殊遮挡物的处理。

 

 

相关阅读:

极致的遮罩处理(一):DeepFaceLab手动遮罩编辑

极致的遮罩处理(二):在训练中使用FANSeg遮罩

极致的遮罩处理(三):如何训练自己的FANSeg模型

极致的遮罩处理(四) :停止“练鬼”

极致的遮罩处理(五):后悔药