编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

FaceFusion:取代ROOP的下一代AI换脸技术初探! 本视频对

wxchong 2024-07-03 02:39:54 开源技术 35 ℃ 0 评论

下一代AI换脸技术即将面世!

提起AI换脸,人们可能会想到ROOP,但这个曾在GitHub上火爆一时的项目已经停更许久。就在一周前,项目作者发布了新的更新,结果却是停止维护的声明,而且还牵扯到一个不当行为。

项目作者表示,有一个共同开发者利用该项目制作并发布了一个存在问题的视频,这让他无法忍受,于是决定停更。同时,在GitHub上搜索“face swap”,会发现出现了一个名为“FaceFusion”的新项目,短短几天内就获得了5000颗星。

这个项目的介绍也非常霸气:下一代的换脸和脸部增强工具。我很好奇,点开了这个项目,发现项目作者竟然是我之前认识的ROOP大佬。原来,他并不是停止维护项目,而是想将换脸技术带向更加健康的发展方向,并在项目中加入了对于制作内容的控制,以推动换脸技术的变革。所以,这期内容我们来聊聊下一代换脸技术。

首先,安装FaceFusion并不复杂,你只需要复制项目页面中的路径,在电脑上克隆项目,并创建一个虚拟环境。我使用的是Anaconda,注意要安装版本为3.10的Python,避免安装错误。激活虚拟环境后,就可以安装项目的依赖了。这个过程可能需要一些时间,最好在魔法环境中进行。

如果在安装过程中遇到问题,可以在项目文档中寻找解决方法。文档中不仅提供了不同系统环境下的加速推理操作步骤,还列出了常见使用问题。

安装完成后,可以使用以下命令启动项目。首次启动时,需要下载模型文件,需要耐心等待。同样,最好在魔法环境中进行。FaceFusion项目提供了类似于stable diffusion的交互界面。你只需要复制链接,在浏览器中打开即可。

打开页面后,你会看到两个输入区域,分别用于选择源照片和目标照片或视频。

与其他换脸项目类似,FaceFusion也提供了图片和视频两种模式。在目标区域中,你可以上传图片或视频,而在源区域中,你可以选择要替换的照片或视频。只需要上传源和目标,等待片刻,换脸结果就会在右侧显示出来。

如果你想对换脸效果进行精准控制,就需要了解页面中的其他选项。让我们先来看看左侧的这些参数。

首先,我们只上传了一张质量较差的目标照片,并使用了Face Enhancer和Frame Enhancer这两个工具进行增强处理。Face Enhancer可以提高人物脸部的细节,而Frame Enhancer可以提高整个画面的细节。当我们同时勾选这两个选项时,可以看到从脸部到其他部分的细节都得到了改善。接着,我们将源照片也上传了上来,并勾选了三个选项:Face Enhancer、Frame Enhancer和TensorRT。通过这种方式,我们不仅实现了图片换脸,还提高了图片的细节质量。如果是第一次使用这些工具,还需要下载相应的模型,等待的时间可能会稍微长一些。但是,这些增强模型都不大,通常只有几十兆。在这里,我们可以选择控制将模型运行在什么设备上,例如CUDA代表运行在英伟达显卡上。如果你的电脑有N卡,当然选择这个选项,这样可以大大提高模型计算的速度。TensorRT是英伟达推出的在自家显卡上进一步加速模型推理速度的工具。简单来说,就是在N卡GPU上计算时,通过模型剪枝、模型量化等方式进一步提高一些模型推理速度。如果你不想选择TensorRT,也可以只选择CUDA,这样同样可以达到很快的运行效果。接下来的两个选项是控制线程使用个数和最大查询数量的。这两个选项的值越大,处理速度就越快。如果你的电脑性能较好,可以适当调整这些选项的值。临时帧格式代表帧图片在存储时使用的编码方式。一般来说,选择JPG格式就可以了。相比于PNG格式,选择JPG格式可以节省存储空间,并且不会影响计算精度。最后一个选项是视频帧质量,我们可以选择拉满,这会影响最终换脸的效果。最左侧的三个选择框都是和视频换脸相关的参数。第一个选项代表是否保持原始视频的视频帧率参数。如果勾选了这个选项,换脸后的视频会保持同样的帧率,视频帧率越大看起来就会越流畅。第二个选项代表视频换脸是否保存一些中间结果。如果勾选了这个选项,会占用更多的存储空间。好处是当你需要对同一个视频的换脸效果进行微调时,可以加快一些计算速度。第三个选项代表是否跳过视频中的声音。如果勾选了这个选项,换脸后的视频会不带声音。好处是会提高换脸计算的速度,减少等待时间。现在,让我们上传一段韩国小姐姐跳舞的视频,再上传一张泰勒斯威夫特的照片作为源照片。我们先看一段视频,希望把泰勒的脸换成跳舞的韩国小姐姐。在左边的参数中,我们选择CUDA和加速计算,同时保持视频的帧率并保存中间处理结果,以便进行微调。由于我们希望换脸后的视频仍然有声音,所以略过声音这个选项。输出视频编码器的参数,如果没有特殊需求,选择默认即可。输出视频质量也可以拉满。

接下来是右边的参数,最上面是视频帧预览,可以选择任意帧提前查看换脸效果。下面的两个参数代表换脸的起始帧和结束帧。默认情况下会对整个视频进行换脸,起始帧为0,结束帧为视频的最大帧。如果想从视频中间进行换脸,可以调整换脸起始帧。我们选择对整个视频进行换脸,所以还是把起始帧拉回到0。接下来的参数后面再讲。

设置好后,点击开始模型开始运算。需要等待一段时间,具体时间取决于视频长度。视频生成后,我们来看看效果。可以看到虽然跳舞时头部动作很大,但是基本所有帧都能达到比较好的换脸效果。最后,我们看一下剩下的参数的作用。

首先上传一段新的视频,其中包括成年人和孩子,性别男女都有。可以看到右边的区域显示出了由算法识别出的视频中的全部4张人脸。可以通过最下面的选项卡控制人脸识别算法,从而筛选出特定的人。

→第一个下拉框控制人脸识别的顺序。比如第一个就代表对于视频每一帧从左到右去检测人脸;第二个下拉框代表需要识别什么年龄段的人脸;第三个下拉框代表需要识别男人还是女人。比如我们选择识别男性,可以看到两个男性的面部被识别了出来。如果选择女性,两个女性的面部就被识别了出来。进一步可以通过点击识别出的照片来控制针对哪个人脸进行替换。

现在我们把泰勒斯威夫特的照片传递上来,可以看到此时会对视频中的这个妈妈进行替换。如果选择这个小女孩则会对她的人脸进行替换。这个下拉框代表换脸针对的是全部脸。还是筛选出的特定脸。如果选择many就会对所有识别出的人脸进行替换,我们试一下效果。换脸完成了。

我们看下替换全部脸的效果。可以看到全部4张脸都被替换了。进一步,如果只想替换视频里具体的某一张脸,可以这样操作。首先,我们把这里从many改成reference,然后按之前介绍的方法筛选出视频中的全部女性。再从中点击妈妈的脸,点击这里的clear清除视频。接着让我们重新生成一遍。可以看到,这次只有视频中妈妈的脸被替换了。

·最后介绍一下facedistance这个参数。这是控制目标脸和源头脸相似程度的参数。你可以简单理解为,当换脸的对象和你期望的不相符时可以通过调节这个参数来改善。比如把这个参数拉到很小,你会发现视频中所有的脸都不会被替换了。

而把这个参数拉大时视频中的妈妈和女儿都会被换脸。只有将这个参数控制在中间的一个范围,才和我们期望的。只将妈妈进行换脸相符。

FaceFusion以上就是关于FaceFusion的全部内容了,这个项目才刚刚发布,目前看起来还比较简单,但由ROOP的原班大佬维护和发展,相信未来肯定不会差,目测会成为ROOP之后的主流换脸项目。值得一提的是作者选择从ROOP项目另起炉灶,也是为了能让换脸这项AI技术,在效果更好的同时也能更加符合人类伦理,所以在这里也提醒大家换脸虽好,请莫滥用。

以上就是本期视频的全部内容了,如果喜欢的话不要忘了点一个关注,也可以长按点赞一键三连。我是Medal,下期再见。AI Makes World Better

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表