肌肉金轮 Python 换脸教程

​最近有 b 友给我推了个 b 站的视频:肌肉金轮,问我如何实现这种视频里面换脸的?


我说网上有相关教程,你去搜一下,他说看的云里雾里,能不能让我用小帅b的风格,出一期通熟易懂的,让人看完就会操作的那种。


我回了句:这…是要干嘛?得不到女神就要自己创造么?
他说:绝无可能!


嗯,我信了!

那么,如何实现将视频中的脸蛋换成自己希望的样子呢?
接下来就是,学习 Python 的正确姿势:

假设现在你想把老罗的脸,换到视频中肌肉男的身上,流程应该是这样的:

1、拿到很多老罗的脸部照片,拿到很多肌肉男脸部的照片
2、让机器学习它们各自的特征将它们训练成一个模型
3、将训练后的模型合成到肌肉男视频中
完事~

问题来了,怎么拿到他们很多的脸部照片呢?
一种比较好的方式是,通过视频来提取照片。


可以搜一下老罗的采访视频:

找一个合适的视频,然后使用 you-get 将视频下载到本地:

安装一下 faceswap 库,用来提取照片,训练,视频合成。


使用 git 把它 clone 下来:
git clone –depth 1 https://github.com/deepfakes/faceswap.git

接着进入 faceswap 中,使用 pip 安装必要的库,这里可以使用 CPU 和 GPU 的模式安装:


有 amd 的 GPU 这样安装:
pip install -r requirements_amd.txt

有 N 卡这样安装:
pip install -r requirements_nvidia.txt


只有 CPU 这样安装:
pip install -r requirements_cpu.txt

完事之后,先来将视频中的脸部提取成照片:

python faceswap.py extract -i ~/video/lyh/lyh.mp4 -o ~/faces/lyh/

这里将老罗的视频提取脸部照片到 faces/lyh 目录下。

提取完成,打开目录可以看到好多的老罗:

接着使用同样的方式,把肌肉男的脸部照片也提取出来:

好了,第一步搞定!


脸部照片都有了,接下来训练一波:
python faceswap.py train -A ~/faces/muscle -B ~/faces/lyh -m ~/models/muscle_lyh_model/ -p

-A 指定刚刚提取的肌肉男脸部照片目录, -B 指定刚刚提取的老罗脸部照片目录,训练的模型输出到 models 下。


这样就让它一直跑着就行了。

机器学习训练需要一段时间,根据你的不同因素训练时长不同,比如使用 CPU 的话会贼慢,GPU 会快一些,我这里演示使用的是 AMD:

更好的方式是去购买云 GPU 服务器,在上面使用 GPU 搭建训练,比如阿里云就不错。

在训练过程中,可以看到预览效果:

训练的差不多,得到模型之后,就可以合成视频了,使用 conver 命令,像这样:

python faceswap.py convert -i ~/videos/muscle.mp4 -al ~/videos/muscle_alignments.fsa -o ~/Desktop/hahha -m ~/models/muscle_lyh_model -w ffmpeg

这里 -i 指的是我们想要合成的视频, fsa 文件是在将视频提取过程获取的, -o 指的是将换脸后的视频放到指定的目录, -m 就是你训练好的模型, -w 使用 ffmpeg。

ok,这样就可以得到换脸后的视频了:

流程就是这么个流程,希望对你有帮助。


最后,下面这个是我的小号,进来听我吹牛皮,别忘了关注一波,以防失联。
公众号:小帅b和他的朋友们,别轻易关注,容易爱上我!
那么我们下回见,peace!

发表回复