其他分享
首页 > 其他分享> > AI换脸实战教学(FaceSwap的使用)---------第一步Extration:提取人脸。

AI换脸实战教学(FaceSwap的使用)---------第一步Extration:提取人脸。

作者:互联网

市面上有多款AI换脸的方法,笔者这里节选了Github那年很火的开源项目FaceSwap:

(很早就实践了,但是忘记记录啦hhh,请勿用于不正当用途哦)

做了一篇详细教学,包括配置,参数设置,换脸效果经验之谈。感兴趣的学友可以留言一起交流。

先上成果展示下吧(垃圾显卡跑了2天,有条件好的显卡跑个1周估计效果会好一些):

左边是替换后的效果,别告我侵权,求你了。。没有商业用途。。

 

 

配置部分

ok,为了实现换脸,我们先从安装到配置工具开始(配置好的请直接跳到第一步),以下请按步骤操作:

首先需要下载该项目,这里建议直接下载GUI版软件:https://faceswap.dev/download/

然后是安装:

 

 

 第一页选择安装地址,根据自己喜好。

 第二页需要选择GPU或者CPU版。 有支持的GPU进行训练当然是最好的,如果没有的话只能CPU了(提取,训练过程很慢)

 

{ PS: 如何查询是否支持呢,

GPU版需要保证三个包是匹配的:

tensorflow-GPU, cuda,cudnn

首先,更新显卡驱动:https://www.nvidia.com/Download/index.aspx?lang=en-us

其次,下载与GPU匹配的cuda:https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64

最后,下载与GPU匹配的cudnn:   https://developer.nvidia.com/zh-cn/cudnn

最最后下载tensorflow-GPU

}

 

安装好以后启动,界面如下:

 

(landmark是68个点,提取生成的带landmark和遮罩的文件格式是fsa,不是fsd,懒得重写了,hh)

 

操作部分

第一步:

 

好的,我们开始第一步,  extract的目的是:从视频中的每一帧提取人脸,生成图片集和一个fsa文件(带landmark和mask的数据集),用于模型训练的输入。

什么是landmark?如下图,是指算法识别出的每张图片人脸边界的68个点。

什么是mask?如下图,是指算法识别出的每张脸的脸区,摒弃遮挡/背景/头发等信息。

 

简单来说,提取包括三个阶段:检测、对齐和遮罩生成:

1.1 Data模块:

1.2 plugins对应的设置如下图:

 

1.2.1 遮罩

plugins模块用于首先检测图像中的人脸、读取人脸标志以对齐图像并使用各种遮罩方法创建遮罩。

遮罩算法对比:

1.2.2 归一化

Normalization, 顾名思义,数据集的归一化:归一化可以在光照不理想的情况下更好地找到人脸。不同的归一化方法适用于不同的数据集,实测的话推荐“hist”归一化。选正则选项的话会稍微减慢提取速度,但对齐效果更好。

1.2.3 二次对准

Re Feed:此选项会将稍微调整过的检测到的人脸重新送回对准器,然后平均最终结果。这有助于减少“微抖动”。 如果是用于训练数据集,即第三步Training用,设置其为0,如果是为了转换,设在0-8,反复提取可以实现精益求精用,但是会慢很多),效果也截一个。

下图显示了 re-feed 设置为 8(左)与 re-feed 设置为 0:

1.2.3  旋转图像

Rotate Images:针对 CV2-DNN !,可能会无法识别旋转后的人脸。其他对齐算法选这个会降低速度,毫无收益。

1.3 人脸处理

Min Size:设置一个高于零但比较低的值,用以过滤掉明显太小而不能成为脸的东西。(取决于源视频中人脸的大小,比如都很小,那这个值确保比源视频中的常见脸的尺寸要低,比如一个电影片段,镜头里除了需要提取的主人公的脸,旁边还放有一本书上,书有人脸,这个值就是卡掉书上的这个大小的人脸,确保不算在内)

Filter/nFilter, Ref Threshold:这俩选项用于过滤掉不需要的脸。什么意思呢,就是针对性的要谁的脸(Filter选一张照片),或者针对性的不要谁(Nfilter上传N张你不想要检测到人脸的照片,记住是每个照片必须只有一个人脸,可以传多张,用以屏蔽多个人)。Ref Threshold用于取决于判断的严格度,就是拉到1的话就很松,越低就越严,相当于你想要的监考老师的分数,严的就很难受,分数就低。

PS: Filter/nFilter, Ref Threshold这部分可以不上传图,靠第二步的tools相关功能去筛选不想要的脸,根据官方FAQ的说法,用TOOLS在第二步中处理效率更高,因为如果使用了这个过滤器明显的会降低提取速率。

 

1.4 输出设置

Size: 提取图像的大小,通常 512px 对于大多数模型来说都可以(全头提取图像的大小),这个就是神经网络的输入图片像素,不同算法可能仅支持固定格式的输入图片大小。比如对于“面部”居中,模型可用的图像大小将为 384 像素。使用“传统”居中进行训练时,可用的图像大小为 308 像素。

Extract Every N: 这个选项意思是,多少帧提取一个脸,我举个例子,一般的25fps的视频,有可能25帧每一帧的变化很小,那么就是提取了一堆相似的废物数据集,实际上每12-25提取一次就行(大约是半秒到1秒,也就是你换个表情和表情变化怎么也得半秒,不信的话你自己试试。。。)

Save Interval: 保存间隔,随缘吧,多少帧保存一次。默认就行,默认就是全搞完了一次性存下来。

Debug Landmarks: 在提取的脸上调整landmarks(做事真就这么细?,正常不勾选)

 

1.5 设置,全局设置

Settings: 不解释了,跳过已有的(指当前fsa文件中),跳过已有的脸(指当前fsa文件中),跳过已保存过的脸

Exclude Gpus: 哪个CPU你不想在跑的时候使用, 你如果全勾选了(说明你不想用任何GPU),会变成CPU模式

标签:遮罩,提取,AI,Extration,算法,人脸,GPU,对齐,---------
来源: https://www.cnblogs.com/techs-wenzhe/p/12936809.html