美文网首页MGD算力营
使用MassGrid虚拟机实现faceswap换脸

使用MassGrid虚拟机实现faceswap换脸

作者: MassGrid客服 | 来源:发表于2019-04-16 20:09 被阅读811次

    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

    相关文章

      网友评论

        本文标题:使用MassGrid虚拟机实现faceswap换脸

        本文链接:https://www.haomeiwen.com/subject/gbyiwqtx.html