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

教程发布 FANSeg,遮罩
DeepFaceLab
DeepFaceLab DeepFaceLab 2019-12-17 12:13:28
用户等级:0级

一套价值不止699元的遮罩处理攻略

在前面的两部分中,我们已经学会了手动遮罩编辑和使用默认的FANSeg来生成遮罩。这两种方法各有优点,手动遮罩编辑虽然可以做到绝对准确,但实在是太麻烦了。FANSeg只能处理常见的遮挡,有时候也不太精确。那么如何将两者的优点相结合,让程序自动精确的处理任意遮挡呢?你就需要自己训练FANSeg模型了。

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

在FANSeg模型刚刚推出时,很多小伙伴都训练了这个模型。看着预览窗口里奇怪扭曲的头像,好像遮挡物也并没有被消除。小伙伴们纷纷表示,看不懂,不会玩。其实程序是不知道遮挡物到底是应该排除的遮挡物还是“长”在脸上的一个什么东西。FANSeg训练本质上是有监督学习,需要我们告诉程序,哪些是遮挡物,正确的遮罩到底是什么样子的。因此,训练FANSeg模型时,不能使用直接提取的头像,而是需要使用带有“正确”遮罩信息的头像。

说到这里,小伙伴们可能已经想到怎么玩了。对,先手动编辑部分头像照片的遮罩,得到“精确”的遮罩信息。然后把这些“精确”的遮罩拿给FANSeg模型去训练,训练完成后,再用训练好的FANSeg模型去画出其他头像照片的遮罩。做完这一步后,基本上就得到完美的遮罩了。如果不放心或者追求极致,可以再把所有的头像照片过一遍,对有瑕疵的遮罩进行修补。

下面我们用著名的4k试机片《美女吃烤鸭》来说明怎么操作。我们并没有换全部的片子,只剪切了其中的6秒钟(2:47-2:53)。在这6秒钟内,女主角用筷子吃了一瓣糖蒜。我们在这6秒内提取了104张脸部照片。

  1. 先使用遮罩编辑器查看一下默认的遮罩设置。可以看到如遮罩包含了筷子和糖蒜,上半部分的黑边也包含在内。

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

  • 用默认的FANSeg处理一遍所有的头像,再使用遮罩编辑器查看头像遮罩。还不错,筷子被识别了,有些部分的脸识别错误,糖蒜没能被很好的识别,筷子右侧的部分脸消失了。

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

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

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

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

  • 我们编辑11张照片,取整10数的照片( 如10,20,30等 )。将这些照片编辑后保存在\data_dst\confirmed文件夹内。
  • 使用FANSeg训练模型,训练批处理文件为:

@echo off

call _internal\setenv.bat

"%PYTHON_EXECUTABLE%" "%DFL_ROOT%\main.py" train ^

    --training-data-src-dir "%WORKSPACE%\data_dst\confirmed" ^

    --training-data-dst-dir "%WORKSPACE%\data_dst\aligned" ^

    --model-dir "%WORKSPACE%\model" ^

    --model DEV_FANSEG

pause

也就是说src指向编辑好的图片,dst指向其他的头像文件。其实dst是不参与训练的,只是用于评估训练结果,也就是说看看训练好的FANSeg模型在处理DST中的头像时的遮罩效果怎样。这里我们使用了一个小技巧,就是复用了作者的FANSeg模型。训练FANSeg模型并出预览图后,用回车保存退出,可以看到模型文件夹下多出了FANSeg_256_full_face.h5文件,在预览窗口按空格按键,可以进入评估数据。训练几百步后,就会看到,糖蒜已经能够识别了,并且吃糖蒜时,筷子右侧的脸也被识别了。这时就可以保存退出了。

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

  • 将训练好的模型拷贝到_internal\DeepFaceLab\nnlib目录内(请先备份原文件)。这样我们就可以使用训练好的FANSeg模型了。
  • 再使用FANSeg编辑自动编辑一遍遮罩,用遮罩编辑器查看会发现脸部很完整,糖蒜识别准确,两支筷子中间的部分也处理的非常完美。把confirmed中的照片也放回aligned后就可以把这些头像照片拿去训练了。我们特意重头训练了一个非常轻量的SAE模型(ae_dims=256),SRC选择的是默认的钢铁侠。如果打开遮罩训练,在预览窗口按空格可以在第一列和第三列看到在使用的遮罩,就是上一步FANSeg生成的完美遮罩。因为我们已经有了完美遮罩,遮罩训练完全没有意义,因此强烈建议关闭遮罩训练,加快训练时间。关闭前600ms,关闭后430ms

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

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

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

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

  • 换脸时,确保nnlib文件夹下的FANSeg_256_full_face.h5文件是你针对这个DST训练的。遮罩模式选择FAN-dst。嗯,Tony的大蒜吃的还是很准确的。
极致的遮罩处理(三)--如何训练自己的FANSeg模型
极致的遮罩处理(三)–如何训练自己的FANSeg模型
极致的遮罩处理(三)--如何训练自己的FANSeg模型
极致的遮罩处理(三)–如何训练自己的FANSeg模型

对比一同样一张照片使用作者训练的默认FASeg模型。Tony吃大蒜嘴角糊了,并且筷子右边的脸没有替换。

注意:今天作者更新后,训练出来的FANSeg模型文件名不再是FANCHQ 而直接就是FANSeg了 ,小伙伴们使用起来更加方便啦。

相关阅读:

楼主签名:
回帖
回复列表
  • @131:(在3F的FANGAAAA) 我也是这个错误
    0 回复
  • usage: main.py [-h]

                   {extract,dev_extract_vggface2_dataset,dev_extract_umd_csv,dev_apply_celebamaskhq,extract_fanseg,dev_test,sort,util,train,convert,videoed,labelingtool,facesettool}

                   ...

    main.py: error: unrecognized arguments:


    训练模型的时候报这个错,求解

    2 回复
  • qq6213461
    2019-12-27 01:43:36
    emotion我好像懂了
    1 回复

版块列表

本站热帖
01 AI换脸第三步:DeepFaceLab使用教程(2.训练及合成) 4349
02 AI换脸第三步:DeepFaceLab使用教程(1.安装及分解视频) 4162
03 P100真香:DeepFaceColab详细教程 3348
04 选择合适的模型 H64 -H128 -DF -SAE -SAEHD 3158
05 2GB显存畅玩 DeepFaceLab更新至2020.01.08 3114
06 SAEHD不香吗?谈谈SAE与SAEHD 3113
07 极致的遮罩处理(一):DeepFaceLab手动遮罩编辑。 2976
08 DeepFaceLab不同模型的参数含义 2936
09 “增之一分则太长,减之一分则太短”,精细的调整取脸框大小,不做提脸的“登徒子” 2745
10 DeOldify – 一个强大的AI修复老照片(视频)项目 2735
11 图像无损放大工具 Topaz Gigapixel AI v4.4.4 破解版 2638
12 AI换脸第二步:选择合适的DeepFaceLab版本 2539
13 DeepFaceLab新手基础知识:训练期间如何更改参数值? 2449
14 合成必修课:7) convert 合成合成如何从“人皮面具”变成“真实脸部” 2434
15 通过image_denoise_power降噪让换脸更自然 2311
16 合成必修课:7) convert之调整模式详解 2255
17 AI换脸进阶:如何给戴眼镜的面部换脸? 2226
18 DeepFaceLab更新至2019.12.17 2174
19 合成必修课:7) convert 合成暂停和继续 2156
20 这个模型会上头:Avatar模型的使用说明 2111