Github官方文档
下面来记录一下我安装和运行faceswap的流程
首先需要downland源代码 Github
配置相关的环境参考INSTALL.md 提取配置好tensorflow cuda 等等
比如最基本的就是Python3,并且这个可以调用Opencv(如果有错误,请参考另一篇记录)
python setup.py
#
INFO The tool provides tips for installation
and installs required python packages
INFO Setup in Linux 4.14.39-1-MANJARO
INFO Installed Python: 3.6.5 64bit
INFO Installed PIP: 10.0.1
Enable Docker? [Y/n]
INFO Docker Enabled
Enable CUDA? [Y/n]
INFO CUDA Enabled
INFO 1. Install Docker
https://www.docker.com/community-edition
2. Install latest CUDA
CUDA: https://developer.nvidia.com/cuda-downloads
3. Install Nvidia-Docker & Restart Docker Service
https://github.com/NVIDIA/nvidia-docker
4. Build Docker Image For Faceswap
docker build -t deepfakes-gpu -f Dockerfile.gpu .
5. Mount faceswap volume and Run it
# without gui. tools.py gui not working.
docker run -p 8888:8888 \
--hostname faceswap-gpu --name faceswap-gpu \
-v /opt/faceswap:/srv \
faceswap-gpu
# with gui. tools.py gui working.
## enable local access to X11 server
xhost +local:
## enable nvidia device if working under bumblebee
echo ON > /proc/acpi/bbswitch
## create container
nvidia-docker run -p 8888:8888 \
--hostname faceswap-gpu --name faceswap-gpu \
-v /opt/faceswap:/srv \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
-e AUDIO_GID=`getent group audio | cut -d: -f3` \
-e VIDEO_GID=`getent group video | cut -d: -f3` \
-e GID=`id -g` \
-e UID=`id -u` \
faceswap-gpu
6. Open a new terminal to interact with the project
docker exec faceswap-gpu python /srv/tools.py gui
# A successful setup log, without docker.
# 这个是官方文档给出的一个没有配置Docker之后成功的输出,我的跟这个差不多但是当时没有截图
INFO The tool provides tips for installation
and installs required python packages
INFO Setup in Linux 4.14.39-1-MANJARO
INFO Installed Python: 3.6.5 64bit
INFO Installed PIP: 10.0.1
Enable Docker? [Y/n] n
INFO Docker Disabled
Enable CUDA? [Y/n]
INFO CUDA Enabled
INFO CUDA version: 9.1
INFO cuDNN version: 7
WARNING Tensorflow has no official prebuild for CUDA 9.1 currently.
To continue, You have to build your own tensorflow-gpu.
Help: https://www.tensorflow.org/install/install_sources
Are System Dependencies met? [y/N] y
INFO Installing Missing Python Packages...
INFO Installing tensorflow-gpu
INFO Installing pathlib==1.0.1
......
INFO Installing tqdm
INFO Installing matplotlib
INFO All python3 dependencies are met.
You are good to go.
下载图片集faceswap-playground,这个链接中给出了一个图片集300MB多,我没有选择下载而是自己寻找一些图片集
文件结构如上图所示,其中photo
文件夹里边存放原始图片,data
文件夹里边存放extract
的图片,models
文件夹存放训练的模型
运行代码
代码分为三个部分
# 我找的是特朗普和谢霆锋的照片 使用 exteact 命令将其提取转换成框架所需要的大头照,因为收集来的图片可能有半身全身的图片,统一处理成大头照
# To convert trump:
python3 faceswap.py extract -i ./photo/trump -o ./data/trump
# To convert cage:
python3 faceswap.py extract -i ./photo/xie -o ./data/xie
原始图片 | extract之后的图片 |
---|---|
建议在extract
之后,看一下data文件夹下的照片,有的照片相关度很差,根本不是特朗普的照片,浏览一下,删除即可
python faceswap.py train -A ./data/trump -B ./data/xie -m ./models/Changer
# or -p to show a preview
python3 faceswap.py train -A ./data/trump -B ./data/xie -m ./models/Changer -p
# 使用 train 参数来指定 A,B 目标目录 A-输入目标人物 B-输出的效果人物
# -m 代表最后生成的模型路径 ./models/Changer
有一点比较好的是,模型你可以先训练到一个精度(建议0.04-0.06 这个精度看的还可以接受 如果机子比较好,可能直接就0.01),下次训练的时候是可以继续的
替换 convert
本来想在模型训练的同时运行替换的代码,但是我试了一下,提示我显卡内存不足
python3 faceswap.py convert -i ./photo/trump -o ./output/ -m ./models/Changer
-i 指定输入的图片目录路径,-o 指定输出的替换图片路径, -m 指定训练好的模型路径
convert 里面有很多参数,具体可以到目录下的 /scripts/convert.py 查看
parser.add_argument('-M', '--mask-type',
type=str.lower, #lowercase this, because its just a string later on.
dest="mask_type",
choices=["rect", "facehull", "facehullandrect"],
default="facehullandrect",
help="Mask to use to replace faces. (Masked converter only)")
像上面的这个传参,指定了替换遮罩的类型,例如最后加上 -M facehullandrect
python3 faceswap.py convert -i ./photo/trump -o ./output/ -m ./models/Changer -M facehullandrect
# 然后我有尝试了一下用模型去替换xie自己本来的照片会是什么效果
python3 faceswap.py convert -i ./photo/xie -o ./output2/ -m ./models/Changer
当然还有优化的地方比如替换后的效果可以使用opencv让其面部和原图更切合,完全看不出是遮罩
查看显卡情况
watch -n 10 nvidia-smi
# -10 是每隔10s更新一次