AI换脸:faceswap操作教程
https://github.com/deepfakes/faceswap
FaceSwap是一种利用深度学习来识别和交换图片和视频中的人脸的工具。
1.安装
1.1 安装前提
该过程所进行的计算类型非常适合图形卡,而不是常规处理器。你需要在桌面或支持服务器的GPU上运行训练过程。在你的CPU上运行它意味着训练你的模型可能需要数周时间,而在GPU上则需要数小时。
1.1.1 硬件要求
您至少需要满足以下一项:
- 性能较好的CPU
- 强大的GPU:
- 目前,Nvidia GPU完全受支持。AMD图形卡部分通过plaidML支持。
- 如果使用Nvidia GPU,则至少需要支持CUDA计算能力3.5。要查看您的GPU支持的版本,请参考以下列表:https://developer.nvidia.com/cuda-gpus。
- 足够的耐心。
1.1.2 支持的操作系统
Windows 10 Windows 7和8。Windows有一个安装程序见:https://github.com/deepfakes/faceswap/releases
Linux大多数基于Ubuntu/Debian或CentOS的Linux发行版都可以使用。有一个Linux安装脚本见:https://github.com/deepfakes/faceswap/releases
macOS对GPU加速的原生 Apple Silicon处理的实验支持(例如苹果M1芯片)。基于Intel的macOS系统应该可以工作,但您需要遵循手动安装说明。
所有操作系统必须为64位才能运行Tensorflow。
1.2 安装包安装
https://github.com/deepfakes/faceswap/releases
1.3 手动安装
安装前提
Anaconda:
从以下位置下载并安装最新的Python 3 Anaconda:
https://anaconda.com/download/
Git:
下载并安装Git for Windows:
https://git-scm.com/download/win
设置anaconda虚拟环境
命令行方式安装anaconda虚拟环境:
condacreate-nfaceswappython=3.8.3
激活:
condaactivatefaceswap
下载代码:git clone --depth 1https://github.com/deepfakes/faceswap.git
安装tkinter(GUI所需):conda install tk
安装requirements:
- 对于Nvidia GPU用户:pip3 install -r requirements_nvidia.txt
- 对于AMD GPU用户:pip3 install -r requirements_amd.txt
- 对于CPU用户:pip3 install -r requirements_cpu.txt
运行:
cd faceswap
运行命令 python faceswap.py -h或 python faceswap.py gui 启动gui
1.4 macOS (Apple Silicon) 安装指南
OS
macOS 12.0+
XCode工具
xcode-select --install
XQuartz
下载并安装:https://xquartz.org/
Conda
下载并安装最新的conda env,网址为:https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
$ chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
$ sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
$ source ~/miniforge3/bin/activate
环境设置
下载代码 git clone --depth 1https://github.com/deepfakes/faceswap.git
cd faceswap
$ conda deactivate
$ conda env create -f conda-environment-apple-silicon.yml
$ conda activate faceswap
运行
python faceswap.py gui
2. 架构
使用faceswap AI换脸有如下即可步骤:
- 收集照片和/或视频
- 从原始照片中提取人脸
- 在从照片/视频中提取的人脸上训练模型
- 使用模型转换源
2.1 抽取
2.1.1 命令行抽取
运行 python3 faceswap.py extract
这将从src文件夹中抽取照片,并将人脸提取到extract文件夹中。
To extract trump from photos in a folder:python faceswap.py extract -i ~/faceswap/src/trump -o ~/faceswap/faces/trumpTo extract trump from a video file:python faceswap.py extract -i ~/faceswap/src/trump.mp4 -o ~/faceswap/faces/trumpTo extract cage from photos in a folder:python faceswap.py extract -i ~/faceswap/src/cage -o ~/faceswap/faces/cageTo extract cage from a video file:python faceswap.py extract -i ~/faceswap/src/cage.mp4 -o ~/faceswap/faces/cage
2.1.2 GUI 方式抽取
python3 faceswap.py gui
2.2 训练
2.2.1 命令行方式训练
运行 python faceswap.py train
这将从包含两个人脸的照片的两个文件夹中提取照片,并训练模型,然后保存在models文件夹中。
python3 faceswap.py train -A ~/faceswap/faces/trump -B ~/faceswap/faces/cage -m ~/faceswap/trump_cage_model/
or -p to show a preview
python3 faceswap.py train -A ~/faceswap/faces/trump -B ~/faceswap/faces/cage -m ~/faceswap/trump_cage_model/ -p
2.2.2 GUI 方式训练
2.3 转换
2.3.1 命令行方式转换
这将从original文件夹中提取照片,并将新面孔应用到modified的文件夹中。
python faceswap.py convert -i ~/faceswap/src/trump/ -o ~/faceswap/converted/ -m ~/faceswap/trump_cage_model/
2.3.2 GUI方式转换
2.4 ffmpeg方式处理视频、图像
可以使用ffmpeg将视频分割为单独的帧。下面是一个将视频处理为独立帧的示例命令。
ffmpeg -i /path/to/my/video.mp4 /path/to/output/video-frame-%d.png
如果使用ffmpeg分割视频,并将其用作交换人脸的目标,则可以再次合并这些帧。下面的命令再次将png帧缝合回单个视频。
ffmpeg -i video-frame-%0d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4