如何使用faceswap自带的Sort和Alignments工具对Extract结果进行筛选处理

in Archives with 0 comment

按照deepfakes/faceswap gui详细使用教程(Extract/提取篇)将素材源提取以后,我们将在预设的“Output Dir”路径文件夹下得到一系列的人脸图片,在预设的“Input Dir”路径文件夹下得到一个名为“alignments.fsa”的对齐文件。

虽然faceswap的Extract模块在人脸提取方面的功能十分强大,但依然无法100%保证达到我们的需求,例如:素材源中有多个不同个体的人脸全部被识别和提取出来,误把不是人脸的区域识别和提取出来等等...此时我们需要人工干预进行二次筛选,删掉不想要的人脸图片。下图中就有很多“坏”人脸需要手动删除。

faceswap sort demo.jpg

这里我们借助faceswap自带的Sort工具,Sort工具需要进行大量的运算因而可能占用较多的内存,理论的内存需求为:(n^2*24)/1.8 bytes,n为待处理人脸图片的数量,对于当今动辄16G、32G乃至更多内存的主机配置来说,内存方面已经基本不存在瓶颈。

Sort工具使用方法

Sort工具位于faceswap的Tools选项卡下

Data参数配置

faceswap sort data参数设置.jpg

将“Input”设置为Extract模块中的“Output Dir”;

将“Output”留空,这样Sort结果默认被存入“Input”路径。

Sort Settings参数配置

faceswap sort settings参数设置.jpg

保持默认参数即可,注意Sort by选择Face。

Output参数配置

faceswap sort output参数设置.jpg

保持默认参数即可,注意Final Process选择Rename,Keep一定不能勾选。

Setting-Backend参数配置

根据你的硬件情况选择Cpu或Gpu,其他保持默认,无需勾选Log Changes。

Gpu将大大提高Sort工具分类效率。

执行Sort工具

点击最下方的“Sort”按钮,faceswap将开始人脸分类。

faceswap Sort工具首次运行需要从github上下载一些东西,国内机器此时可以挂全局代理提高一下效率。

等待Sort工具执行完毕,我们打开之前提取出的人脸图片文件夹,你会发现人脸照片被重新命名排序,所有相似的人脸被归集到一起,另外一些误识别或质量很差的“坏”结果也被归集到一起。

相似人脸图片归集排序.jpg

误识别和质量很差人脸图片归集排序.jpg

此时我们可以根据需要删除重复的图片或者质量很差的图片,比如下图中红色方框内的3张图片

删除质量很差的人脸图片.jpg

Alignments工具使用方法

虽然我们删除了不需要的图片,但对齐文件(alignments.fsa)中仍然保留有它们的特征点信息和遮罩信息,此外,对齐文件中的人脸图片名称也与重新命名排序后的图片名称不一致,因此我们需要使用faceswap自带的Alignments工具对对齐文件进行同步处理。

Alignments工具位于faceswap的Tools选项卡下

Alignments工具参数配置

alignments工具参数配置.jpg

我们只需要进行以下三处设置,其余保持默认设置:

1、将Job设为“Remove-Faces”

2、选择Alignments File

3、设置Faces Folder

执行Alignments工具

点击最下方的“Alignments”按钮,faceswap的Alignments工具将开始同步处理。

这个过程非常快,我们只需要查看人脸图片目录的文件名是否变化即可判断Alignments工具是否成功执行,此外,旧的对齐文件也会被备份。

至此,我们终于得到了Train模块所需的人物A的人脸图片素材和对齐文件。

按照同样的方法对B文件夹下的图片进行提取和筛选处理,我们将得到人物B的人脸图片素材和对齐文件。

接着按照:

deepfakes/faceswap gui详细使用教程(Training/训练篇)

即可展开模型的训练了~

注意事项

关于Sort工具提示Failed Return Code:1

这个大家多点几次Sort按钮重试就可以了,还可以尝试着把backend在cpu和gpu之间切换。

关于Alignments工具使用无效

如果你在使用Sort工具对人脸图片进行分类重新排序后,没有删除任何图片就执行Alignments工具,那么无法恢复原来的图片名称,对齐文件也不会被备份。因此,从某种意义上来说,执行了Sort工具以后,删除一些图片是必不可少的步骤。

关于GPU用户在使用Sort工具时报错

大概率是cudNN启动异常导致的,往上翻应该有“Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR”这样的报错信息。

Extract模块和Train模块都有单独的“Allow Growth”参数设置,开启后可解决此问题。但Sort工具没有单独设置的选项,因此我们只能通过环境变量来强制开启“Allow Growth”,具体方法是:

在打开faceswap gui之前,也就是执行python faceswap.py gui之前,先运行以下命令(Ubuntu系统):

export TF_FORCE_GPU_ALLOW_GROWTH=true

至于Windows系统,理论上在高级系统设置里添加环境变量可以强制tensorflow开启Allow Growth,但未经验证。

Comments are closed.