环境准备
- 安装tensorflow 1.2或者1.3以上的版本,带GPU支持,本次实验使用virtualenv环境
- 下载faceswap的的源代码
git clone https://github.com/deepfakes/faceswap.git - 使用步骤说明:https://github.com/deepfakes/faceswap/blob/master/USAGE.md
- 准备视频,通过腾讯或者爱奇艺播放器录两段视频,一段是郭大爷的坑王驾到,一段是马爸爸的开学啦
换脸步骤
1. 从视频中提取图片
输入是视频,输出是每一帧图片
$ python tools.py effmpeg -a extract -i video/guodegang.mov -o video/guodegang/
$ python tools.py effmpeg -a extract -i video/mayun.mov -o video/mayun/
2. 扣人脸,并清洗
从每一帧图片中把人脸扣出来
$ python faceswap.py extract -i video/guodegang/ -o data/guodegang
$ python faceswap.py extract -i video/mayun/ -o data/mayun
清洗人脸图片,把一些不是人脸或者质量不高的人脸图片删掉,否则影响后面的训练
3. 训练
输入是两个抠出来的人脸,输出是一个模型,可以用展示中间训练图片变化的细节,1080的显卡大概要训练个一天多
$ python faceswap.py train -A data/mayun/ -B data/guodegang/ -m data/models/
4. 换脸
注意input为ffmpeg extract出来的原图
$ python faceswap.py convert -i ./video/mayun/ -o ./output/ -m ./data/models -M facehullandrect
5. 复原
把替换人脸后的图片打包成视频
$ ffmpeg -i ./output/mayun.mov_%5d.png -c:v libx264 -vf "fps=25,format=yuv420p" ./mayun.mp4
效果如下动图,贴合度都还可以,主要选的两个主角的肤色差距较大,显得不太自然
图片转gif动图
convert -delay 15 *.png output.gif
网友评论