MGD算力营

使用MassGrid虚拟机实现faceswap换脸

2019-04-16  本文已影响811人  MassGrid客服

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

效果如下

  1. 默认convert 参数效果

    默认参数转换效果
    (PS: 由于无法添加视频,查看视频请移步 单击此处查看视频...)
  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

    高斯模糊转换效果
    (单击此处查看视频)
  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虚拟机使用心得请联系微信号MassGrid01加入MassGrid虚拟机测试群或访问我们官网https://www.massgrid.com.
业务合作请联系bd@massgrid.com

上一篇 下一篇

猜你喜欢

热点阅读