本来想直接使用已有的换脸软件,但各个换脸程序都要求VS2015和CUDA9.0,自己的电脑显卡驱动最低支持CUDA9.1(怀疑是电脑的问题,显卡驱动只能安装更高版本的)。经过一天的挣扎后,最终放弃了给自己的电脑安装CUDA9.0的努力,转而看能不能直接在CUDA10.0运行。事实证明,CUDA10也是可以的。
第一步,从github把源代码克隆到本地,但通过git克隆速度才10k/s,最终是从deepfakes 中文站下载到的源代码。
第二步,根据说明配置环境
官方推荐VS2015+CUDA9.0的配置,事实上,只要能配置好正确的python环境,理论上都是可以运行的。运行中缺少哪个模块安装哪个,模块版本不对的话,就卸掉重新安装对应版本的模块。
- 安装合适的VS和CUDA,cuDNN,我的是VS2017(也安装了VS2015且没有卸载,这里并不确定只有VS2017的话能否正确运行),CUDA10.0,以及对应的cuDNN。
- 安装模块,下面是官方要求的环境
pathlib==1.0.1
scandir==1.6
h5py==2.7.1
Keras==2.1.2
opencv-python==3.3.0.10
tensorflow-gpu==1.5.0
scikit-image
dlib
face_recognition
tqdm
matplotlib
其中tensorflow-gpu模块需要换成对应CUDA10.0的版本,我的是tensorflow-gpu 1.12.0。在安装dlib的时候卡了良久,需要安装CMake和boost,参考的这个网站解决的问题:https://my.oschina.net/quicker/blog/2876068
接下来就可以愉快的在cmd或者PowShell中运行程序了。
第三步,运行程序
-
视频转图片
.\ffmpeg -i workspace1/data_dst.mp4 workspace1/_01photo/dst/%5d.png
.\ffmpeg -i workspace1/data_src.mp4 workspace1/_01photo/src/%5d.png -
提取大头照
python faceswap.py extract -i workspace1/_01photo/dst -o workspace1/_02data/dst
python faceswap.py extract -i workspace1/_01photo/src -o workspace1/_02data/src -
训练模型
python faceswap.py train -A workspace1/_02data/dst -B workspace1/_02data/src -m workspace1/_03models/ -p -
换脸
python faceswap.py convert -i workspace1/_01photo/dst -o workspace1/_04output/ -m workspace1/_03models/ -
图片合成视频
.\ffmpeg -i workspace1/_04output/%5d.png -c:v libx264 -vf “fps=25,format=yuv420p” workspace1/out.mp4
在训练模型那里是最花费时间的,跑了12个小时后:
saved model weights loss_A: 0.01127, loss_B: 0.01857
最后的结果还算差强人意。接下来试试能不能给程序加个皮,每次手动敲命令行太难受了,然后跑些有意思的视频。