使用MassGrid虚拟机实现faceswap换脸
faceswap 换脸教程
项目地址: github
GPU 实现 faceswap 人脸替换教程.
前言
首先申请 一台 MassGrid 虚拟机,具体申请过程请参考...传送门
镜像选择带有cuda以及 cudnn 环境的 10.0-cudnn7-devel-ubuntu16.04.
本次实验实际使用 一张 GTX 1080 TI GPU,总共 训练了十五个小时左右
1. 安装基础环境
apt-get update
apt-get install python3 vim
apt-get install python3-pip
apt-get install cmake git unzip ffmpeg
# opencv 依赖
apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev cmake libswscale-dev libjasper-dev
下载源码,安装依赖
git clone https://github.com/deepfakes/faceswap
cd faceswap
这里安装 软件需要 添加 -i 参数,制定其他源,官方默认的源会非常慢
#手动安装 face_recognition
# -i 更改安装源
pip3 install face_recognition -i https://pypi.douban.com/simple
pip3 install tensorflow-gpu==1.13.1 -i https://pypi.douban.com/simple
pip3 install -r requirements.txt -i https://pypi.douban.com/simple
环境依赖检测
python setup.py
是否启用docker 选择no
是否启用cuda 选择yes
#如果提示找不到cudnn
cp /usr/include/cudnn.h /usr/local/cuda/include/
检测完成后就可以进行训练
2. 下载数据集
数据素材不要太接近,最好是各种条件下的都有
input_A, 即DST 就是原版的视频素材,就是身体和背景不换,要被换掉脸的视频
input_B, 即SRC 就是要替换的脸的素材
换脸的操作是通过SRC脸图集,运算出MDOEL,然后放到DST序列图上,最后把DST序列图连接为视频
该模型可以互换方向,即将A的脸换到B上面
#其他数据集
wget http://39.108.104.247/data.zip
unzip data.zip
# input 目录下,两个文件
将 解压后的 data目录 放到 faceswap目录下
3. 开始训练
python3 faceswap.py train -A data/input_a -B /data/input_b
# 也可以通过 python3 faceswap.py train --help 查看帮助
4. 获取转换目标视频(和input_a一致)
将目标视频转换为图片
# 下载目标视频
wget http://39.108.104.247/target.mp4
# 截取
# -s 视频开始时间
# -d 截取时长
# -i 输入源视频
# -o 输出路径
# -ef 截取图片后缀
# -pfs 每秒截取帧数
python3 tools.py effmpeg -i ./target.mp4 -o target -s 00:00:45 -d 00:01:45 -ef .png -fps 25
使用训练好的模型对目标图片进行换脸
# -s 模型反转(B->A ,变为 A->B)
python3 faceswap.py convert -i target/ -o output/ -m models/ -M facehull
将换好的图片转为视频
ffmpeg -i ./output/target.mp4_0%04d.png -c:v libx264 -vf "fps=25,format=yuv420p" output.mp4
效果如下
-
默认convert 参数效果
默认参数转换效果
(PS: 由于无法添加视频,查看视频请移步 单击此处查看视频...) -
添加 高斯模糊参数 --smooth-box
(注: Perform a Gaussian blur on the edges of the face box received from the model. Helps reduce pronounced edges of the swap area )
即执行:
python3 faceswap.py convert -i target/ -o output/ -m models/ -M facehull -s -sb
高斯模糊转换效果
(单击此处查看视频) -
获取更多参数,请使用
python3 faceswap.py convert --help
5. 其他问题
pip3 install 出错
一般出现在pip 升级之后,解决方案
#原来
from pip import main
if __name__ == '__main__':
sys.exit(main())
#修改为
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())
GPU 训练出错
tensorflow.python.framework.errors_impl.InternalError: Dst tensor is not initialized
显存不足,调小gpu个数
结语
以上就是我们教程的全部内容,交流MassGrid虚拟机使用心得请联系微信号MassGrid01加入MassGrid虚拟机测试群或访问我们官网https://www.massgrid.com.
业务合作请联系bd@massgrid.com