出处:
https://www.cnblogs.com/zackstang/p/9011753.html
1.依赖包:
activate python36
pip install tqdm
pip3 install opencv-python
conda install -c conda-forge dlib
pip install opencv-contrib-python
pip install keras
pip install tensorflow
pip install face_recognition
其中安装dlib的过程中,出现错误:
pip install dlib
(python36) C:\Users\Administrator>pip install dlib
Collecting dlib
Using cached https://files.pythonhosted.org/packages/05/57/e8a8caa3c89a27f80bc78da39c423e2553f482a3705adc619176a3a24b36/dlib-19.17.0.tar.gz
Building wheels for collected packages: dlib
Building wheel for dlib (setup.py) ... error
ERROR: Complete output from command 'c:\program files\anaconda3\envs\python36\python.exe' -u -c 'import setuptools, tokenize;__file__='"'"'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-install-gqe63n28\\dlib\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\ADMINI~1\AppData\Local\Temp\pip-wheel-wc6gqtg_' --python-tag cp36:
ERROR: running bdist_wheel
running build
running build_py
package init file 'dlib\__init__.py' not found (or not a regular file)
running build_ext
Building extension for Python 3.6.2 |Continuum Analytics, Inc.| (default, Jul 20 2017, 12:30:02) [MSC v.1900 64 bit (AMD64)]
Invoking CMake setup: 'cmake C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-gqe63n28\dlib\tools\python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-gqe63n28\dlib\build\lib.win-amd64-3.6 -DPYTHON_EXECUTABLE=c:\program files\anaconda3\envs\python36\python.exe -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-gqe63n28\dlib\build\lib.win-amd64-3.6 -A x64'
-- Building for: NMake Makefiles
CMake Error in CMakeLists.txt:
Generator
NMake Makefiles
does not support platform specification, but platform
x64
was specified.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
解决方法:
去官网下载对应的文件
https://pypi.org/simple/dlib/
找到3.6 64位对应的版本
dlib-19.7.0-cp36-cp36m-win_amd64.whl
然后 pip install dlib-19.7.0-cp36-cp36m-win_amd64.whl即安装成功
2.代码:
git clone https://github.com/deepfakes/faceswap.git
git clone https://github.com/joshua-wu/deepfakes_faceswap
代码下载完后,安装需要的依赖包:
pip install -r requirements.txt
pip install numpy-1.16.2-cp36-cp36m-win_amd64.whl
3.实际过程
3.1 面部抓取
在收集完样本后,使用 ./faceswap.py extract –i input_folder/ –o output_folder/ 命令对样本图片进行面部抓取。
做这个的原因是因为我们主要关注的是换脸,所以只需要获取脸部的特征,其他环境因素对换脸的影响并不大。
在面部抓取的过程完成后,我们可以得到所有脸部图片。在此,我们可以人工筛选一下不合适的样本,将之去除。
3.2 开始训练
在提取两个人脸的面部信息后,直接使用下面命令开始进行模型的训练:
./faceswap.py train -A faceA_folder/ -B faceB_folder -m models/
其中 -m 指定被保存的models所在的文件夹。也可以在命令里加上-p 参数开启preview模式。
在训练过程中,可以随时键入Enter停止训练,模型会保存在目标文件夹。
训练使用的深度学习框架是tensorflow,它提供了保存checkpoint 的机制(当然代码里必须用上)。
在停止训练后,以后也可以随时使用上面的命令读取之前训练得出的权重参数,并继续训练。
3.3 转换人脸
在训练完模型后(损失值较低),可以使用以下命令对目标图进行换脸:
./faceswap.py –i input_images_folder/ -o output_images_folder/ -m models/
此处的例子是找的一个视频,所以我们可以先用下面的命令将一个视频以一个固定频率转化为图片:
ffmpeg.exe -i a1.mp4 output/video-frame-%d.png
(备注:ffmpeg的安装需要到官网下载相关的windows版本,然后解压,把路径加入到path即可)
然后执行转换人脸操作。最后将转换后的人脸图片集合,合成一个视频:
ffmpeg –i video-frame-%0d.png -c:v libx264 -vf “fps=25, format=yuv420p” out.mp4