我也是第一次玩,第一次玩好不好

  我也是第一次玩,第一次玩好不好

  00-1010

python视频教程栏目介绍DeepFakes。

之前没接触过DeepFakes,突然想发个哔哩哔哩的视频散散心。试起来还是挺麻烦的。这里,记录下你踩过的坑。

  这篇文章的目标是把唱川普的视频换成我们的川建国同志。

  最终效果:

  视频链接:https://www.bilibili.com/video/BV12p4y1k7E8/

  

目标

本文尝试的环境是linux服务器环境,因为它运行得更快。

  Python环境:Anoconda python3.7版本3.7

  Gpu: k80,12g显存

  DeepFake版本:2.0

  其他工具:ffmpeg

  00-1010首先,你需要准备一个或多个演唱川普的视频和川建国同志的视频。用作变脸材料。

  00-1010首先用ffmpeg把视频素材切割成多张图片。

  mkdir输出

  MPEG-I你的视频。MP4-r 2 output/video-frame-t-% d . png把代码复制到这里。视频不一定要MP4,其他格式也可以,然后-R2是指2帧,也就是每秒采集两张图片。可以根据自己的视频试试。最后输出到输出文件夹。随便定义前缀就行了,名字不是关键。

  最好在这里多找几个视频,因为deepfake会提示最好保证人脸数量大于200。我这里准备了3个视频,一共6个视频。

  ffmpeg-I sing _ trump 1 . MP4-r 2 sing _ trump _ output/st1-% d . png

  ffmpeg-I sing _ trump 2 . flv-r 2 sing _ trump _ output/st2-% d . png

  mpeg-I sing _ trump 3 . MP4-R2 sing _ trump _ output/st3-% d . png复制代码ffmpeg-I trump 1 . webm-R2 trump _ output/t1-% d . png。

  ffmpeg-I trump2.mp4-r 2 trump _ output/T2-% d . png

  MPEG-I trump 3 . MP4-r 2 trump _ output/T3-% d . png复制的代码相当大,加起来有3.7 G。

  00-1010这里没什么好说的,从github上下代码。

  git clone https://github.com/deepfakes/faceswap.git复制代码,然后根据自己的实际情况安装环境。在这里,我现在在PC上安装cpu,然后在服务器上安装nvidia。

  00-1010接下来,把所有的面都拉出来。

  python3 faceswap.py提取-I trump _ output-o trump _ output _ face

  python 3 face swap . py extract-I sing _ trump _ output-o sing _ trump _ output _ face在这里复制代码。就是这样。

  接下来,我们需要手工删除我们不想要的面孔。

  00-1010当我们调用extract生成人脸时,会自动生成一个校对文件,将人脸的信息保存在原图上。删除人脸后,需要将人脸与原图对齐。

  您可以在这里打开gui工具。

  3 python faceswap.pygui复制代码,然后选择工具下的对齐。

  接下来,选择“删除-面”,然后输入对齐文件路径、面路径和原始图像路径。

  然后点击绿色按钮开始运行。

  那么sing_trump_out也会这么做。

  

环境说明

  h2>接下来就可以开始训练了,-m参数为保存模型的位置。

  

python3 ./faceswap.py train -A sing_trump_output_face -ala sing_trump_output/alignments.fsa -B trump_output_face -alb trump_output/alignments.fsa -m model复制代码

小问题

这里如果用gpu的话,我发现tensorflow2.2开始要用cuda10.1以上,但我这边儿没法装,所以需要用tensorflow1.14或者tensorflow1.15,这就需要deepfake的1.0版本才能用。

  github.com/deepfakes/f…

  

训练截图

我发现faceswap1.0和master分支的操作是一样的,没太大变化。

  我这里的速度大概是2分钟100个step。

  

转换视频

准备视频帧

首先要准备我们要转换的视频,然后把视频切分,这里就不是按照之前的帧数了。

  

ffmpeg –i sing_trump2.flv input_frames/video-frame-%d.png 

  复制代码

这里我的视频是1分41秒。

  转换完了大概有3050张图片,也就是差不多30帧的,然后一共7.1G(mac就256G真的有点儿遭不住)

  

再次对齐一遍

接下来,需要对我们要转换的视频图片再来一遍人脸对齐,首先抽脸。

  

python3 faceswap.py extract -i input_frames -o input_frames_face复制代码
然后再把多余的脸删掉,像前面的步骤一样的操作用gui工具选择Remove-Faces,然后进行对齐。

  

对每一帧进行AI换脸

通过convert命令进行转换

  

python3 faceswap.py convert -i input_frames/ -o output_frames -m model/复制代码
我这里的速度大概是每秒1张图片,不过真正的脸只有600多张,如果脸比较密集的话我估计可能没有那么快,所有的图片转换完大概是5分多钟(这个gpu当时有别的程序在跑真实可能会更快一点儿)。

  

效果

训练20分钟后

在训练了1200step之后,大概是这个样子,效果看着还不是很好哈,不过已经有点儿意思了。

  

训练一个小时后

  

训练一天以后

  

把图片合成视频

最后通过ffmpeg把图片合成一个视频。

  

ffmpeg -i output_frames/video-frame-%d.png -vcodec libx264 -r 30 out.mp4复制代码
这里合并完了我发现是2分钟,不过影响也不大,毕竟后面还要进行剪辑,用PR等软件再编辑一下就好了。

  

总结

看视频可以发现当脸比较小的时候,faceswap并没有识别出来脸,所以也就没有做替换,还是有点儿遗憾。

  个人感觉整个deepfake的最费时间的流程其实就是在删掉多余的脸上面。

  

相关免费学习推荐:python视频教程

  

以上就是都是第一次玩DeepFakes的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: