deepfakes/faceswap Train模块工作原理详细介绍

in Archives with 0 comment

Train/训练的实质

faceswap Train/训练的实质是“教会”神经网络如何重建一张人脸,这通常需要经历两个过程:编码和解码。

编码可以理解为将人脸图片转换为某种矢量的过程,而解码则反过来,将矢量数据通过特定的算法重建为人脸图片。

通过训练,我们试图让神经网络不断寻求更合适的算法,让利用此算法重建的人脸图片与输入的人脸图片更加贴近。

训练结果的评价

对于训练结果的评价通常用到两个参数:Loss和Weights;

Loss是神经网络对由算法重建人脸图片与输入人脸图片相似度的打分,每次计算完Loss后都会更新Weights;

Weights是神经网络下一次迭代算法调整的依据,它指示了某个方向,神经网络通过Loss的变化来判断Weights所指示方向的合理性,从而不断调整Weights,以得到更优的Loss;

转换的过程

faceswap 训练及转换原理.png

通过训练通常我们会得到三种算法:一个“共享”的编码算法,两个分别用于重建人脸A和人脸B的解码算法;训练的过程就是不断优化这三个算法的过程。

faceswap在进行人脸转换时,首先通过对齐文件定位素材源中的人脸,再结合编码算法和解码算法B,将人脸图片A重建为人脸图片B;当开启Swap Model时,则使用解码算法A,将素材源中的人脸图片B重建为人脸图片A。

Batch Size

Batch Size是faceswap训练时的一项重要参数,它代表一次迭代所导入神经网络的样本图片数量,每次迭代的Loss和Weights都基于此批样本图片进行计算;

较高的Batch Size有利于提高训练效率;而较低的Batch Size则有利于不同人脸细节的分辨;

因此,通常训练刚开始时我们建议设置尽可能大的Batch Size以提升训练效率,而在训练的中后期,我们可以将Batch Size调小,以达到更优的训练效果。

训练素材要求

一般来说,A和B至少分别有500个样本图片才能训练出较好的模型,最佳的样本图片数量在1000~10000之间;

过多相似的图片对训练没有帮助,你应该收集尽可能多不同角度、不同表情、不同光照条件下的人脸素材。

Comments are closed.