这肌肉换脸视频,怎么实现的?
共 1683字,需浏览 4分钟
·
2021-06-15 21:51
最近有 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,这样就可以得到换脸后的视频了:
流程就是这么个流程,希望对你有帮助。
最后,下面这个是我的小号,进来听我吹牛皮,别忘了关注一波,以防失联。
那么我们下回见,peace!