博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
faceswap深度学习AI实现视频换脸详解
阅读量:5067 次
发布时间:2019-06-12

本文共 2506 字,大约阅读时间需要 8 分钟。

给大家介绍最近超级火的黑科技应用deepfake,这是一个实现图片和视频换脸的app。前段时间神奇女侠加尔盖朵的脸被换到了爱情动作片上,233333。我们这里将会从github项目faceswap开始一步一步实现一个视频换脸的教程。

注意:

本技术存在一定的使用风险,本教程仅做技术交流,请不要用在其他不应该被使用的地方。

技术分析

faceswap 项目是一个学习重建脸部特征的深度学习算法。你给它一堆的图片,它学习几个小时后,通过分辨哪些是合成的图片最终。但是它并不是仅仅把相似的图片替换,而是通过对不同的表情进行学习分析,最后可以对给出的图片进行模型替换达到以假乱真的效果。详细分析可参考。

假设你可以连续12小时盯着一个人看,观察他的表情并记在大脑里面。然后他跟你说画个我微笑的样子,悲伤的样子,你瞬间就可以完成这个要求并且能够达到高清的图片效果。这就是深度学习的威力。

 

换脸针对训练的是脸部特征,因此对于输入的图片应该也是只有脸部的图片,所以如果是非脸部的图片需要提取脸部再来进行替换,这也是后面一开始出错的原因。

 

AI换脸详细步骤

拷贝项目到本地并开始训练模型

首先需要安装git,使用git clone拷贝faceswap项目到本地。从本站上传的文件下载测试数据,faceswap项目地址

 

git clone https://github.com/deepfakes/faceswapcd faceswappip install -r requirements.txtwget https://www.bobobk.com/wp-content/uploads/2019/01/input.zipunzip input.zip

 

解压后可以看到目录下有了input_A和input_B训练数据文件夹。

由于训练耗时较长,如果GPU不强的话会更久,建议使用screen运行,本教程训练使用GTX1080ti训练。代码如下:

screen -S faceswappython faceswap.py train

模型将会保存在model文件夹下。这里我运行到损失函数小于0.03就没有继续训练了。

 

输入文件准备

模型训练好了就是大家喜闻乐见的换脸环节了,由于我们的测试数据是川普和尼古拉斯凯奇,所以首先我们找一张最新的一小段视频。视频来源,由于模型只是用来进行图片替换的,这里需要首先将视频转换为图片,项目文件中toos.py可以进行此项工作,用法:

 

mkdir input mkdir outputpython tools.py effmpeg  -i cage.mp4 -o input -s 00:0148 -e 00:0156####视频1分48秒可以到1分56秒结束。

 

运行失败,为什么,因为没有安装FFmpeg,其中一个功能就是将视频里面的图片提取出来,图片合成会视频。安装可看,这里直接给出centos7安装代码

yum install -y vimyum install -y epel-releaserpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7yum repolistrpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.rorpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpmyum repolistyum update -yyum install -y ffmpegffmpeg -version

 

安装后就可以了,切割后的图片存在于input文件夹中,接下来就是转换了。

运行报错  

python faceswap.py convert -i original -o modified

 

 

 

 

原因是没有比对的文件,想想也是,我们的输入是一张人脸图片,给的确实一整个电影的一帧,比对就是先把脸部给提取出来以用来替换,所以这里需要先做脸部比对。这在项目里就是使用extract命令(一开始我以为extract是解压文件呢,233333)

把前面从视频中提取的图片文件进行脸部提取,使用方法

python faceswap.py extract -i original -o input

 

运行训练好的模型换脸

继续运行convert命令

python faceswap.py convert -i input -o output

可以看到已经在逐步输出换脸后的图片,想想还有点小激动呢。

 

 

将换脸后的图片重新合成回视频

代码:

python tools.py effmpeg  -i output -r input/cage.mp4 -o modified/cage.mp4 -a gen-vid

生成的mp4在modified文件夹下,下载播放即可。播放时还真的是乐趣多多。

应用

该技术自开发一来就有各种声音,恐惧其威力,想想别人使用你的样子发表一段根本不是你自己录制的视频是什么情景。

个人认为这是一个非常好玩的东西,你可以把自己换到自己喜欢的角色身上,比如哈利波特什么的啊。想想就很有意思。像作者把妻子换到节目主持人身上,他妻子得多激动,啊哈哈哈。

总结

本文一步一步地从模型训练,到视频文件的处理,再到图片换脸并重新根据原始视频合成生成的视频。是一个完整的使用faceswap 深度学习AI实现视频换脸教程,理论上可以运用于任何的视频和想替换的人脸,只需要给与足够的目标模型和训练模型的图片即可,这也是很多明星被换到小电影上的原因。

这项换脸技术相信会在未来产生大量好玩的视频,应用,敬请期待!!!

另:由于使用的是深度学习,在训练模型上需要耗费大量的计算资源,因此最好使用GU或者TPU训练较好。

 

转载地址:

转载于:https://www.cnblogs.com/taohuaya/p/10809217.html

你可能感兴趣的文章
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
java对象的深浅克隆
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
Python 3.X 练习集100题 05
查看>>
设计器 和后台代码的转换 快捷键
查看>>
Monkey测试结果分析
查看>>
STL——配接器、常用算法使用
查看>>
STL容器之vector
查看>>
无法向会话状态服务器发出会话状态请求
查看>>
数据中心虚拟化技术
查看>>
01入门
查看>>