GITHUB每日最佳:专业级换脸DeepFake——FaceSwap(2024-09-10)

FaceSwap 是一个强大且多用途的图片和视频换脸工具,利用深度学习技术识别并交换人脸。

FaceSwap的开发者遵循严格的道德准则。作者在README.MD中花了大量篇幅强调FaceSwap不能被用于制作不适当的内容、未经同意换脸或用于任何非法、不道德或可疑的目的。它的存在是为了实验和探索人工智能技术、用于电影制作以及其他许多符合道德规范的合理用途。这里笔者也提醒读者,不要用类似技术做非法和不道德的事情。

FaceSwap官网提供的适配换脸案例

FaceSwap是一个Python程序,主要功能包括提取、训练和转换三大部分。本章先对这三部分的原理进行介绍。

提取主要包括检测、对齐和掩码生成三个阶段。检测用于在帧中找到人脸;对齐通过找到人脸的 “地标” 来一致地定向人脸;掩码生成则确定包含人脸的部分并遮挡背景或障碍物区域。提取有两个主要目的,一是为训练生成包含对齐信息和掩码的人脸集,二是为转换生成对齐文件和掩码,以便在转换过程中知道在哪里交换人脸。

检测基于68点人脸“地标”定位人脸

对齐以确保人脸一直头朝上

掩码用于标识人脸在图片中的位置

对齐文件保存了每个帧中找到的所有面部信息,包括位置、68 点地标和各种掩码等,是包含人脸位置和相关信息的 “主文档”。 FaceSwap提供了上述功能的全部操作,甚至还对后续的数据清理、修改和排序提供了支持。

人脸重现的训练通常主要是通过神经网络(NN)学习如何重现人脸,以实现面部交换。其原理包括编码器将输入的人脸编码为向量表示,解码器将向量转换回人脸图像,NN 通过损失值和权重调整不断优化自身表现。

一般人脸重现的推理过程

一般人脸重现的训练过程

而FaceSwap在训练过程中,使用两个数据集(A 集和 B 集)共享编码器并切换解码器,以实现将一个人的脸编码后通过另一个人的解码器输出交换后的脸。

FaceSwap的训练和转化(即推理)流程

训练数据的质量至关重要,需要有足够多且多样化的图像,包括不同角度、表情和光照条件,同时模型的选择也很重要,不同模型有不同特点和配置选项。模型配置设置包括全局设置、损失设置、模型特定设置和训练器设置等,其中全局设置涵盖面部、初始化、优化器、学习率查找器、网络等方面的选项,损失设置控制损失类型和权重,模型特定设置因模型插件而异,训练器设置用于数据增强以帮助神经网络更好地学习人脸。FaceSwap的训练功能针对上述参数提供了配置能力。

FaceSwap 的转化部分相对流程较为简单,本质上就是使用模型对输入文件进行推理,但仍需进行一些设置以获得良好的结果。FaceSwap对这些设置提供了完善的支持。

      

       接下来介绍FaceSwap项目的技术实现。FaceSwap使用tkinter来构建能在桌面运行的GUI。FaceSwap的GUI虽然视觉效果和用户体验都比较有年代感,但其提供的功能非常繁复,基本覆盖了上述介绍中的全部流程的设置。对这些配置项的支持,虽然有助于帮助用户达到换脸效果的上限,但是同时也让新用户望而却步

基于tkinter构建的GUI

繁复的配置项保证了换脸效果的上限

       FaceSwap的模型层则是由Tensorflow支持运行。作为Google主打的开源机器学习框架,Tensorflow虽然没能在大模型时代重现Android的辉煌,但是在设备资源利用率和API扩展性的维度上仍然具有一定优势。在桌面程序上使用Tensorflow仍然是一个不错的选择。

       FaceSwap 是一个强大的图片和视频换脸工具,基本允许用户操作人脸转换的所有细节,极大地提高了换脸效果的上限;相对地,FaceSwap对于新手用户来说也是非常的不友好,使用门槛比较高。总体来说,该项目对于研究DeepFake技术实现有极高的参考价值,也可以作为专业级的视频制作工具来提供强大的换脸能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值