这肌肉换脸视频,怎么实现的?

学习python的正确姿势

共 1683字,需浏览 4分钟

 · 2021-06-15


最近有 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!

浏览 9
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报