- 地址:
- 海南省海口市
- 邮箱:
- admin@youweb.com
- 电话:
- 0898-08980898
- 传真:
- 1234-0000-5678
这两天研究了一下视频换脸技术的实现,原因是B站的视频《肌肉金轮》突然火了,觉得挺有意思,于是各种搜索教程,发现这个技术的教程基本都停留在2019年,最近好像没有新的教程出现,视频教程也没有,换脸原软件的中文官网也打不开了,不知道什么原因,咱也不敢问。
但程序员的基本修养就是能独立解决问题,靠别人不如靠自己,通过一天的折腾,终于搞定了整套流程与实现,现在分享出来,希望能对后来者有所帮助。
首先换脸软件有很多,像DeepFaceLab、Faceswap、OpenFaceSwap等都可以实现,但我之所以选择OpenFaceSwap是因为其足够简单,界面化操作,成片率高,出现错误还算比较容易解决....
当然如果你对自己的技术足够自信,又是个python高手,完全可以使用一些开源的py包,或者自己写一套,因为这些软件的技术实现也都是基于python的。
一、硬件支持
首先AI换脸技术是需要大量算力才能完成的,这要求你电脑硬件与驱动的支持,确认你的CPU和GPU不是什么老古董,这很重要,官方说明的显卡2G显存就足够,显然是安慰你,你的显卡决定了换脸的速度,所以不想一个视频等上十天半个月的,最好还是有一套好硬件。
你的系统最好不是xp,出问题也不好解决,我的是win10最新版。
确认你的显卡驱动也已经更新到了最新版。
二、软件支持
系统需要VS2015 c++支持(不一定)
安装CUDA 9.0
安装CuDnn 7.0.5(注意不是最新版)
1.CUDA下载
CUDA Toolkit 10.1 original Archive
2. cudnn-7.0.5+Openfaceswap
链接:https://pan.baidu.com/s/1tAa9-aNobtJFZmQq0GXQKw
提取码:6666
1、CUDA在官网下载安装。
下载后一路下一步安装即可,如果你的显卡驱动是安装在C盘,这个最好也装在C盘,以免出问题,不要擅自改动安装位置!
CUDA安装后一般会自己添加环境变量,如果没有可能会出问题,所以打开命令行输入:nvcc -V,如果不报错就安装成功了。
如果你不确定,也去看看你的环境变量是否跟我一样
Path的变量值
如果不一样,缺哪个自己去C盘找到cuda路径添加上就行。
2、CuDnn 7.0.5这个需要老版本支持,所以软件我传到网盘上了(注意,一定要7.0.5版本,别下载新版)
下载后打开压缩包,将里边的所有内容直接粘贴到CUDA的安装目录覆盖
拖拽不出来可以用winrar解压后粘贴试试。
3、VS2015这个好像现在没有了,网上说WIN10不需要这个的支持,简单的方法大家可以打开windows设置
搜索2015
如果有应该就可以,至少我的是这样,这里我没办法提供vs2015的下载,因为官网也没有这东西,找不到合适的,大家可以先跳过,看后面会不会出问题。
三、安装OpenFaceSwap
这个没啥好说的,下载解压,双击一路下一步安装,最后选择运行软件即可。
四、OpenFaceSwap的使用
打开软件,我们看到以下界面,我来简单标注下
为了方便说明与操作,我会将工作区分为A/B/C,这时你要准备好一个文件夹方便你的换脸工作,文件夹结构如下图:
1、截取人脸
我们将被换脸的视频放在A文件夹中,命名为FBB.mp4
点击软件面板A区的VIDEO A按钮,选择这个视频:
为了快速操作,我们将Fbb文件夹与face文件夹都填好,注意,点击后面的文件夹图标才是选择文件夹,不要点击前面的按钮
三个框全部填好后,我们点击IMAGES A按钮,进行视频截图:
这时出现命令窗口,等待执行完毕,按任意键退出即可!
这步完成后我们的work\\A\\Fbb文件夹中会出现大量视频截图,如果命令行报错,或不能截图,请回到软件安装部分看看是否哪步没有搞好。
接下来点击FACES A按钮进行人脸截取,点击后会出现命令窗口,并出现进度条:
最后显示截取的人脸图片数,在你的work\\A\\face文件夹会出现很多人脸图片:
网上大部分都是在这一步卡住出错的,截取不到人脸或者不出现进度条,如果你也出现这问题那么需要回到软件安装部分,因为这大概率是CUDA和CuDnn 7.0.5没有装好造成,你需要检查这两个东西以及你的环境变量是否都没问题,祝你好运。
如果你成功截取到了人脸,恭喜你过了一个大坑,现在我们重复A区的操作,在B区截取另一个视频的人脸,聪明如你一定不需要我的演示了。
2、训练模型
这是一个相当消耗时间的过程,模型训练时长取决于你的电脑配置,它需要持续保持开启并进行计算。
为C区的MODEL选择文件夹\\work\\Model用来存放模型,并点击MODEL按钮开始训练,你的屏幕出现一个黑框和一个人脸窗口,命令窗口会不断训练并显示当前进度。
在训练过程中,命令窗口的loss_A与loss_B的数值会越来越小,这说明人脸融合度越来越高。
网上是说loss_A与loss_B的数值达到0.02以下时就可以,但我试了试,以数值来判断并不能做出完美的换脸视频,最简单的方法是看下方人脸的窗口,注意第三列的人脸,当它变得不再模糊时就可以了。
当然,这是一个缓慢的过程,趁这段时间你可以去做一些其他事,比如写个BUG什么的,如果你训练一段时间后想看看效果,可以在命令窗口按下Ctrl+c来结束训练。
我这里为了演示训练几分钟就结束了,平常训练的话一般都是以天为单位。
接下来SWAPS选择一个文件夹之后,点击按钮开始贴脸,这里的作用是将视频A截图中的脸全部替换成刚刚训练的模型,点击后出现命令行,等待进度条结束,Result文件夹会出现一堆换脸后的截图。
最后一项工作,就是将这些截图合成视频,还是C区操作,为即将生成的视频选择一个文件夹,并取一个名字后保存
点击MOVIE按钮合成视频即可。
最后合成的视频就是换脸后的A视频。
这个脸部没有五官,就是因为我只训练了几分钟的缘故,所以大家要做好不关机的准备~
最后软件后方的齿轮按钮点开是一些相应设置,大家可以用翻译工具看看是什么意思,这里我懒得讲了,累了,大家自行摸索吧~