使用MassGrid虚拟机实现Faceswap换脸


使用MassGrid虚拟机实现Faceswap换脸

在这里插入图片描述
项目地址: Github

GPU 实现 Faceswap 人脸替换教程.

前言

首先申请 一台 MassGrid 虚拟机,具体申请过程请参考…
传送门:github.com/MassGrid/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

效果如下
1)默认convert 参数效果

在这里插入图片描述

下面看下视频效果👇
https://www.massgrid.com/doc/drawtextone.mp4

2)添加 高斯模糊参数 --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

在这里插入图片描述

接下来,看下视频的效果,大家可以对比一下

https://www.massgrid.com/doc/drawtext.mp4

3)获取更多参数,请使用

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虚拟机测试群

一起交流MassGrid虚拟机使用心得

或访问我们官网 https://www.massgrid.com.
业务合作请联系📮:bd@massgrid.com

关于MassGrid虚拟机网络

MassGrid虚拟机网络通过使用docker swarm 集群管理工具,将若干台docker主机抽象为一个整体,将离散的物理资源虚拟化并接入MassGrid主节点网络,并且通过MasterNode 统一管理这些docker主机上的资源,使用户自由调度分布在世界各地的物理计算资源并进行相关的计算任务。

在这里插入图片描述

文末互动
在虚拟机测试网络中,我们鼓励用户使用除了挖矿以外的其他计算,如果有其他类似Faceswap之类有趣的训练,请在留言区通知我们。

展开阅读全文

没有更多推荐了,返回首页