AI 换脸技术——DeepFakes 概述(一)

编者按:本文由图普科技编译自 Exploring DeepFakes。

2017年12月,一个名为“DeepFakes”的用户在Reddit上发布了一个“假视频”,视频中的艺人其实是后期加上的,但是看起来几乎毫无破绽。他利用了深度学习和AI新技术,在成人电影中把演员的脸替换成某个艺人的脸,从而制作成了这个看上去以假乱真的视频。

从视频发布以后的好几个星期,网络上不断有人发表文章和报道,抨击这一“换脸”技术,称这种技术将会对社会产生很多负面的影响。比如说,这个“换脸”技术会给很多无辜清白的人(像那些无故出现在成人电影中的艺人)造成困扰;“假视频”会加剧虚假新闻的散播,进而将大大损坏视频作为证据的可信度。

确实,心怀不轨的人会利用这项技术做危害社会的事情。但是我们不能够因此完全否定这项技术的价值,我们应该好好思考,如何把它用上正道,发挥它的积极作用。

所以,在这篇文章中,我将会介绍这项AI换脸技术的功能和原理,并且阐述其有发展前途的应用领域。

首先我们要先清楚什么是DeepFakes?它能够做什么?

什么是DeepFakes?

DeepFakes实际上是一种人脸交换技术,顾名思义,也就是在图像或视频中把一张脸替换成另一张脸。事实上,人脸交换技术在电影制作领域已经不是个新鲜词了,但是之前电影视频中的人脸交换非常复杂,专业的视频剪辑师和CGI专家需要花费大量时间和精力才能完成视频中的人脸交换。

DeepFakes的出现可以说是人脸交换技术的一个突破。利用DeepFakes技术,你只需要一个GPU和一些训练数据,就能够制作出以假乱真的换脸视频。

这可以说是一个非常了不起的突破了,因为你只需要把上百张人物的样图输入至一个算法,就能完成人脸交换,制作出非常逼真的视频效果。就算你是个对视频剪辑一窍不通的外行,也能做到这样。

DeepFakes的出现还意味着我们可以在视频中进行大规模的“换脸”。我们大多数人都曾经把自己的照片上传到网络上,因此,我们大多数人的脸都能够轻易地被替换到一些视频中,成为视频的“主角”。不得不说,这是件非常可怕的事情,但这也并不那么值得恐慌,毕竟我们大家早已接受了“照骗”(照片造假)。

“面部定制”已经不是什么新鲜事了:在《星球大战》中,CGI(计算机图像生成)技术根据一名女演员的脸塑造了年轻时期的Carrie Fisher的形象。女演员脸上的点是用来进行精准的面部绘制的。,

DeepFakes能够让你在没有任何技巧的情况下完成这样的“面部定制”,但DeepFakes可不是“面部定制”。

DeepFakes究竟能做些什么?

在讨论如何使用DeepFakes之前,我想先解决这样的问题:DeepFakes究竟能够做些什么?它的技术原理是什么?

为了了解其工作原理,我选了Jimmy Fallon和John Oliver主持的节目视频作为分析案例。Jimmy Fallon和John Oliver是两位非常受欢迎的晚间节目主持人,网络上有大量他们的节目视频。这些视频的亮度变化差不多,主持人在视频中的动作和姿势也很相似,这些相似性有利于降低分析的受干扰程度。但视频同时又存在大量的变化(例如主持人嘴唇的变化),这样又能够保证分析的趣味性。

很幸运,我找到了一个包含了原始DeepFakes编码和很多DeepFakes改进版编码的GitHub。这个GitHub使用起来相当简单,但是目前还处于训练数据收集和准备的阶段。

为了让我们的分析实验更简单,我写了一个能够直接在YouTube视频上运行的脚本,这样一来,数据的收集和预处理工作就变得轻松多了,视频转换也只需一步就能完成。点击此处查看我的GitHub报告,看看我是如何轻松地制作下面这个视频的(我还分享了我的模型数据)。

简单来说,这个脚本需要你给需要进行人脸交换的人各自准备一个YouTube视频集,然后运行命令来对视频进行预处理(从YouTube下载视频、提取各个视频的帧、找出视频中的人脸)和训练,并将其转换为音频和可调整大小的选项等。

从Jimmy Fallon到John Oliver的“换脸”结果

下面的视频是经过了大约30000张(Jimmy和Oliver每人各约15000张)图片的模型训练制作完成的,我从6-8个时长分别在3-5分钟的YouTube视频中过滤掉了那些不含Jimmy和Oliver的脸的帧,留下了含有他们的脸的一些帧——每个视频每秒大约20帧。以上这些操作全部都是自动完成的,我只是提供了一个YouTube视频集。

在NVIDIA GTX 1080 TI的GPU上训练的总时长大约是72小时。训练时间主要与训练的GPU有关,而下载视频并将其划分成帧的时间与I/O相关,这两步是可以同时进行的。

尽管我截取到的Jimmy和Oliver的人脸图片有几万张,但是达成完美的人脸交换大概只需300张图片。我选择“视频截人脸”的方式是因为,视频中出现的人脸很多,从视频中截取人脸图片非常方便,但如果在网上找这么多人脸图片可就麻烦得多了。

为了避免GIF动画的文件过大,下面的这张图片被设置成了低分辨率。下面的YouTube视频分辨率更高、声音更大。

https://giphy.com/gifs/fo23NLu9hCqAZYi4Eh?utm_source=iframe&utm_medium=embed&utm_campaign=Embeds&utm_term=https%3A%2F%2Fwww.kdnuggets.com%2F2018%2F03%2Fexploring-deepfakes.html

视频中的Oliver正在演唱Iggy Azalea的《fancy》,视频中虽然有麦克风的干扰,但算法最后呈现的效果还算不错。

https://giphy.com/gifs/3JNJb4qjDaCeMDvrlZ?utm_source=iframe&utm_medium=embed&utm_campaign=Embeds&utm_term=https%3A%2F%2Fwww.kdnuggets.com%2F2018%2F03%2Fexploring-deepfakes.html

这个视频是Oliver正在主持“吉米秀”(Jimmy主持的晚间节目)。我们发现视频中Oliver的脸上多了一副眼镜,但他的头发和脸型基本没有影响,整个视频看上去非常自然和谐,几乎看不出换脸的痕迹。

到目前为止,DeepFakes还没到完美的程度,但其呈现出的效果已经相当令人满意了。关键是我事先并没有对视频做过任何改动,全是算法的功劳——算法通过观察大量的图片数据,学会制作出这样以假乱真的换脸视频。你一定也觉得非常神奇吧?那么接下来,让我们一起看看DeepFakes究竟是怎么做到的。

DeepFakes的技术原理

DeepFakes的核心是一个“自动编码器”,这个“自动编码器”实际上是一个深度神经网络,它能够接收数据输入,并将其压缩成一个小的编码,然后从这个编码中重新生成原始的输入数据。

在这个标准的自动编码器设置中,网络将尝试学习创建一个编码,从中网络能够重新生成输入的原始图片。只要有足够多的图像数据,网络就能学会创建这种编码。

DeepFakes让一个编码器把一个人脸压缩成一个代码和两个解码器,一个将其还原成人物A(Fallon),另一个还原成人物B(Oliver)。下面的图能够帮助你理解:

在这个案例中,使用的编码器是一样的,但是Fallon和Oliver的解码器是不同的。在训练的过程中,输入的人脸会被扭曲,从而模拟一个“我们希望得到这样的人脸”的概念。

下面我将介绍算法训练的三个步骤:

1. 首先,我们给编码器输入了一张Jimmy扭曲脸的图片,并尝试用解码器A来重新还原他的脸,这就使得解码器A必须要学会在纷繁复杂的图片中识别并且还原出Jimmy的脸。

2. 然后,把Oliver扭曲脸的图片输入至同一个编码器,并用解码器B来还原Oliver的脸。

3. 我们不断重复上面的操作,直到两个解码器能够分别还原出两个人的脸,同时编码器也能够学会通过抓取人脸关键信息,从而分辨出Jimmy和Oliver的脸。

等到以上的训练步骤都完成以后,我们就能把一张Jimmy的照片输入至编码器,然后直接把代码传输至解码器B,将Jimmy的脸换成Oliver的脸。

这就是我们通过训练模型完成换脸的全过程。解码器获取了Jimmy的脸部信息,然后把信息交给解码器B,这时候解码器B会作出这样的反应:“这又是一条干扰信息,这不是Oliver的脸,那么我就把你换成Oliver吧。”

一条算法仅通过观察许多图片就能够再次生成、还原这些图片,这听起来挺不可思议的,但DeepFakes确确实实做到了,而且效果还相当不错。




AI 换脸技术——DeepFakes 概述(二)

2018-04-08 11:45

尽管DeepFakes所呈现出的结果让人很惊讶,但就现在来说,它的局限性还是很明显的:

首先,DeepFakes算法只有在拥有大量目标图片作为数据的情况下才能达到相对较好的效果。如果要用另外一个人的脸替换视频中的脸,那么你需要300到2000张这个人的人脸图片。所需图片的数量取决于人脸的变化程度,以及它们与原始视频的匹配程度。因此视频换脸比较适用于艺人,或者是那些在网上有大量照片的人。所以很明显,并不是任何人的人脸交换都是这么简单的。

其次,训练的数据必须要选择非常有代表性的图片。上述案例中的DeepFakes算法虽然能够还原出Oliver的照片,但并不能还原出Oliver的证件照,因为它所接收的数据中缺少Oliver各个角度的照片。因此,训练数据需要非常贴近你希望达到的目标。举例来说,如果你希望生成的某种面部表情,那么你的数据图片中就必须要有大量这种表情的图片。所以,如果你想要开发一个针对大众的人脸交换软件,那么你最后合成的视频主要是人脸的正面朝前的,因为网上的人脸图片大多都是正面朝前的,像Instagram上的人物自拍。而如果是针对一个名人的人脸交换,生成的视频会相对更自然、逼真,因为你能比较轻松地获取这个名人各个角度的照片。

由于没有足够多Oliver的侧面照,所以网络无法通过观察学习,生成Oliver证件照。

DeepFakes的另一局限性在于,建立一个换脸模型会消耗大量的时间和金钱。一般的换脸效果大概需要48小时的训练,而一个相对不错的换脸则需要大约72小时的训练才能达到。一个GPU小时大约花费0.5美元,所以仅仅是把人物A和人物B进行人脸交换就会花费36美元,这还不包括数据训练所需的宽带费用以及数据预处理的CPU和I/O费用。最大的问题是,一对进行人脸交换的人物需要一个模型,所以在一个模型上的所有投资不能够解决其他的人脸交换。模型开发的高成本意味着人脸交换的App也不会便宜到哪儿去,更不可能是免费的。当然了,如果消费者愿意花钱投资开发这一模型的话,这些就都不是问题了。

另外,模型的运行费用虽然比开发模型要低,但也还是要收费的。在一个GPU上完成一个人脸交换所需的时间大约是输出视频时长的5到20倍,比如生成一个时长为一分钟的1080P的视频大概需要18分钟。GPU不仅能够加速核心模型的运行,还能加速人脸代码的识别(比如识别出这一帧中有没有需要交换的人脸)。我还没有尝试过仅在一个CPU上进行人脸交换,但我敢说仅在CPU上进行的速度肯定要慢得多。在现在的人脸交换过程中仍然存在着很多低效的因素,比如视频帧不是成批地传至GPU的;视频的操作没有同步运行,等等。如果这些因素能够被克服,那么人脸交换就会更加高效;这样一来,CPU实现人脸交换也可能会成为不错的选择

重复使用模型能够缩短训练的时间,从而减少花销。如果你使用Jimmy和Oliver人脸训练得到的模型,尝试将Kimmel的脸换成Oliver的脸,结果通常都是不乐观的。然而,如果你先从Jimmy和Oliver的训练模型开始,用Kimmel和Oliver的图片训练一个新模型,那么算法学会人脸交换的时间只需要原本训练时间的20%到50%,也就是说完成人脸转换的时间可以从72小时以上缩短至12到36小时。

人脸交换工具能够用于收集一些在线渠道的图像;当训练数据不足或不匹配时,DeepFakes算法能够帮助标记;使用优化的模型,或重复使用已经训练好的模型能够缩短训练的时间;一个设计良好的系统能够让整个人脸交换的过程都自动化进行。

好莱坞在电影制作时其实已经使用了这种技术,但是使用的成本并不是这么低的。如果好莱坞能够用这一技术制作出非常不错的电影或者视频,那么随着时间的推移,他们对专业视频剪辑师的需求一定会慢慢减少的。

这一技术同样能带来新的机遇,例如,让一些不知名的演员来拍电影,然后用大牌演员的脸来替换他们的脸。这可以用于制作YouTube视频或是普通民众拍摄的新闻节目。

在更多情况下,电影公司可以根据目标市场的需求来更换演员,Netflix能在拍摄前让观众自行选择演员。更有可能的是,这一技术能够让那些长时间没有动态的演员重新回到观众的视线。

YouTube上一些关于DeepFakes视频的评论帖子都在讨论这个技术会打造出一个怎样的恶搞图片软件。Jib Jab是一家销售视频贺卡的公司,多年来一直都在使用简单的人脸交换;但现在,它迎来了一个巨大的机遇。照片滤镜已经为Instagram和Snapchat吸引了大量的用户,而人脸交换App也已经有了很大的发展,Jib Jab有望引领下一个人脸交换的潮流。

这样的社交软件将会非常有趣,所以人脸交换的App完全有可能兴起一个潮流,前提是开发这些模型的成本足够低。

StarGAN这篇调研论文介绍了如何使用一个算法生成不同发色、性别、年龄甚至是表情。我敢打赌,一款能够让你拥有精致小脸的App绝对会火。

想象一下,有了这项技术以后,Target只需要给艺人支付一笔费用,使用该艺人的一些大头照,再简单地点击一个按钮,就能让这名艺人连续一个月展示他们家的衣服。这不仅可以为艺人、网红和社交网络上任何有影响力的人创造一个新的收入来源,还能为商家企业提供了一种品牌推广的新途径。但同时,这也引发了一些有趣的法律问题,比如所有权的归属问题,以及关于如何分割和使用其价格权利的商业问题。

Loolet会让成衣公司在人体模特上拍摄他们的服装,选择配套的衣服,挑选一张模特的脸和一个姿势,然后就能制作出一张可以投放市场的照片了。更重要的是,他们可以在没有模特或摄影师的情况下随意改变照片的风格。

总结

DeepFakes的原始用户像是开启了一个“潘多拉的盒子”,他们首先引起了人们关于假视频制作对社会的影响的讨论。现在,大多数人都已经接受了照片造假的现象,所以我希望在将来,我们也能够以同样的方式适应视频的虚假和不确定性。

DeepFakes还让人们真正地了解了这项技术的有趣之处。“深度生成模型”(比如DeepFakes使用的自动编码器)仅仅给算法输入了大量的数据案例,就能够帮我们创建一些看起来非常逼真的合成数据(包括图像和视频)。这意味着,一旦这些算法被转化成实际的产品,这个强大的工具将进一步激发普通人的创造力。

现在,这项技术已经有了很多有趣的应用,比如那些照片风格转换的App,只需简单的步骤就能让你的照片看起来像一幅名画。但是目前,这一领域的研究尚未成熟,技术的应用还有很大的潜力。

DeepFake技术--DeepFakes 概述(一)(二)相关推荐

  1. 『中级篇』容器的技术概述(二)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』容器的技术概述(二) 容器的前世今生 物理机 部署非常慢 购买服务器服务,放在IDC机房,各种走流程,很多流程不可控 ...

  2. Deepfake技术实现秒速换脸!!!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 想变就变,近日一款基于Deepfake技术的新应用Doublicat可在几秒钟实现 ...

  3. SQL Server 内存中OLTP内部机制概述(二)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  4. 图像视频伪造检测,针对DeepFake技术检测效果不佳

    随着Deepfake技术的发展,互联网上充斥着大量包含伪造人脸的虚假视频,Deepfakes类技术的滥用带来巨大的负面影响,本文给出一些典型检测思路及方案.很多情况下,Deepfake"以假 ...

  5. CV之Face Change:基于人工智能实现国内众多一线美女明星换脸(基于Face++输出4*106个特征点定位+融合代码、deepfake技术)

    CV之Face Change:基于人工智能实现国内众多一线美女明星换脸(基于Face++输出4*106个特征点定位+融合代码.deepfake技术) 目录 视频实时换脸明星动画-最新案例 1.演示视频 ...

  6. storm显微镜成像原理_超分辨率显微镜技术原理概述

    原标题:超分辨率显微镜技术原理概述 如今,科学家们已经研发了多种超分辨率技术,远远超出了衍射J限,能够观察到分子尺度的细节.SRM技术可以将细胞结构解析为亚细胞水平,从而获取有关细胞组分的3D结构的信 ...

  7. 蓝牙核心技术概述(二):蓝牙使用场景

    关键词:蓝牙核心技术协议  A2DP AVDTP  HF HCP BIP BPP---- 作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!) 欢迎指正错误,共同学习.共同进步!! ...

  8. STL技术——STL概述和入门

    文章目录 STL技术--STL概述和入门 1.STL简介 2.入门案例 2.1.vecto存放内置数据类型 2.2.vecto存放自定义数据类型 2.3.容器嵌套 STL技术--STL概述和入门 1. ...

  9. 【RDMA】技术详解(二):Send Receive操作

    原文:RDMA技术详解(二):RDMA Send Receive操作_Master-TJ的个人博客-CSDN博客 英文:Quick Concepts Part 1 – Introduction to ...

  10. 计算机语言有许多种其中与硬件直接相关的是,16春季福师《计算机原理与接口技术》在线作业二...

    福师<计算机原理与接口技术>在线作业二 一.单选题(共 30 道试题,共 60 分.) 1. M数据传送控制的周期挪用方式主要适用的情况是( ) . I/O设备周期大于内存存储周期 . I ...

最新文章

  1. 用python画太阳系_用 Python 动态模拟太阳系运转
  2. 深度丨霍金的去世让我想起了微软提出的人工智能十大原则
  3. 虚拟化模板新建虚拟机后 wsus控制台无法看到所有客户端计算机
  4. Entity Framework Core 之数据库迁移
  5. DM8168芯片级资源
  6. C语言1094题目,基于visual Studio2013解决C语言竞赛题之1094纵横图
  7. C语言关系运算符介绍和示例
  8. springboot整合sentinel
  9. 巴特沃斯低通滤波器 matlab,利用matlab设计巴特沃斯低通滤波器
  10. Android 10.0 PackageManagerService(四)APK安装流程-[Android取经之路]
  11. 学计算机专业需要买电脑吗高中,麻麻 上大学专业需要用 | 买笔记本电脑_笔记本新闻-中关村在线...
  12. 家用台式电脑计算机上的硬磁盘,台式电脑如何连接硬盘
  13. Revel框架搭建的后台管理系统脚手架
  14. The Derivation About CNN and Antoencoder
  15. win2008服务器系统升级,Windows Server 安装和升级
  16. openGL 纹理使用
  17. 用C语言程序算交税,用C语言编写函数InComeTax计算七级累进税率的税后收入
  18. python java php c#_Python和Java、PHP、C、C#、C++等其他语言的对比?
  19. PubMed数据下载
  20. MySQL之表的创建

热门文章

  1. Practical Lessons from Predicting Clicks on Ads at Facebook
  2. C++--第7课 - 面向对象基本概念
  3. oracle数据库学习相关笔记-相关约束
  4. 第27课 数组的本质分析
  5. FreeMarker中获取Map内容
  6. java 包之 BeanUtils包的使用
  7. EntityFramework 连接数据库出错
  8. web文件操作常见安全漏洞(目录、文件名检测漏洞)
  9. VirtualBox开发环境的搭建详解
  10. (转)区别不同浏览器,CSS hack写法