背景
最近和朋友聊天,突然聊到了视频编辑的换脸功能,对此功能进行了调研,通过分析,最终选择Paddle飞浆的PaddleGAN的 "First Order Motion" 进行视频换脸功能。
环境配置
废话不多说,直接写出来对应的命令,如下所示
python -m pip install paddlepaddle-gpu==2.1.3.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
## https://pypi.tuna.tsinghua.edu.cn/simple/opencv-python/ 在这里选择合适的版本进行 whl 安装
pip install opencv_python-4.6.0.66
python3 -m pip install --upgrade ppgan==2.0.0
pip install 'protobuf~=3.19.0'
环境配置解释
GPU环境
本人租用了一台云服务器:GPU NVIDIA RTX A2000 显卡内存12 GB,预装:Python 3.7, CUDA 11.2, cuDNN 8.0.5, Ubuntu 18.04, VNC, Numba
PaddleGAN
最开始选择 ppgan 的最新2.1版本,但是遇到了 init() got an unexpected keyword argument 'slice_size' 问题,所以最终切换到 ppgan==2.0.0 版本。
PaddlePaddle
根据PaddleGAN官方的安装文档,环境依赖中 PaddlePaddle >= 2.1.0,这里直接选择最低的 2.1.0 版本, 并根据PaddlePaddle的官方安装文档进行安装,注意这里 需要先查看GPU的环境配置,执行命令 nvidia-smi 后选择合适的 CUDA 版本对应的 PaddlePaddle 安装命令。
opencv_python
本人在安装PaddleGAN的过程中,发现 opencv-python 执行时间会很长,所以直接在清华镜像选择对应的 whl 进行单独下载安装。
Downgrade the protobuf package to 3.20.x or lower.
在执行 tools/first-order-demo.py 命令的过程中,会提示 protobuf 的版本问题,所以对 protobuf 进行版本降级,命令如上所示。
截图
1、 云服务器GPU环境nvidia-smi,图片无法正常查看的话, 访问
2、 protobuf 错误提示,访问
3、 first-order-demo.py 执行,访问
总结
命令执行完毕后,视频文件将存储至 /PaddleGAN-release-2.0/applications/output/result.mp4 ,可以对生成的视频进行查看。
参考链接
- https://github.com/PaddlePaddle/PaddleGAN/issues/788
- https://github.com/PaddlePaddle/PaddleGAN/blob/release/2.0/docs/zh_CN/tutorials/motion_driving.md
- https://www.paddlepaddle.org.cn/install/old?docurl=/documentation/docs/zh/install/pip/linux-pip.html#old-version-anchor-33-Linux 安装
- https://pap-docs.pap.net.cn/