刷爆朋友圈的 deepfakes 视频人物换脸是怎样炼成的?

最近,一个名叫deepfakes的技术火了,这是一个可以给视频人物换脸的技术。

这张图片源自雷神三预告片索尔大战浩克的片段,将索尔的脸替换为了Trump的,这个表情实在是......

当然,最令人害怕的是,这个技术火的原因不是恶搞,竟然是有人把明星的脸换到了某些不可描述的小电影的主角上:)而且推出了一个桌面应用,使得使用门槛进一步下降。

不过这不是我们今天讨论的话题(正经脸),我们在RussellCloud上复现了一个换脸的实例——尼古拉斯-凯奇和特朗普的换脸人生。这里我们会阅读一些项目的代码让增进对这个项目的技术了解。

模型部分

模型部分在model.py中,使用keras框架,这是一个类Auto-Encoder模型。具体的Encoder和Decoder设计代码如下:

def Encoder():
    input_ = Input( shape=IMAGE_SHAPE )
    x = input_
    x = conv( 128)(x)
    x = conv( 256)(x)
    x = conv( 512)(x)
    x = conv(1024)(x)
    x = Dense( ENCODER_DIM )( Flatten()(x) )
    x = Dense(4*4*1024)(x)
    x = Reshape((4,4,1024))(x)
    x = upscale(512)(x)
    return Model( input_, x )def Decoder():
    input_ = Input( shape=(8,8,512) )
    x = input_
    x = upscale(256)(x)
    x = upscale(128)(x)
    x = upscale( 64)(x)
    x = Conv2D( 3, kernel_size=5, padding='same', activation='sigmoid' )(x)
    return Model( input_, x )其定义的卷积(conv)层使用LeakyReLU函数激活:
def conv( filters ):
    def block(x):
        x = Conv2D( filters, kernel_size=5, strides=2, padding='same' )(x)
        x = LeakyReLU(0.1)(x)
        return x
    return block

还使用了一个低分辨率特征映射(upscale)层,这是一种类似解决超分辨率问题的亚像素卷积层(sub-pixel convolution layer)的层。这里一个upscal层包括子像素卷积层用LeakyReLU函数激活,再通过一层「像素洗牌」(pixel shuffle)。

def upscale( filters ):
    def block(x):
        x = Conv2D( filters*4, kernel_size=3, padding='same' )(x)
        x = LeakyReLU(0.1)(x)
        x = PixelShuffler()(x)
        return x
    return block

总体的大概模型图如下:

Auto Encoder模型

RussellCloud复现

复现前准备:

  • 注册 RussellCloud 账号(http://russellcloud.com/#register)

如果你没有邀请码,可以到RussellCloud社区发帖,每位注册的用户也有5枚邀请码。

RussellCloud社区:本站新帖 - RussellCloud - Powered by phpwind

(http://forum.russellcloud.com/)

  • 安装 russell-cli 终端工具
  • Clone 项目文件,Git地址RussellCloud/deepfakes_faceswap (https://github.com/RussellCloud/deepfakes_faceswap)
# clone代码$ git clone https://github.com/RussellCloud/deepfakes_faceswap

使用命令行登录:

# 使用russell login命令$ russell login

输入y,网页登录后在网页端拷贝账户的Token,粘贴进终端,回车。如果你使用Windows的命令行,可能会出现粘贴不进的情况,请右键窗口粘贴。

成功登录输出:

Login Successful as XXX

新建项目:

来到RussellCloud主页,进入控制台,新建一个项目。项目名随便起一个,默认容器环境一定要选择:tensorflow-1.4 。

网页创建项目

初始化项目:

项目创建完成后记得在项目主页复制概览ID,用于项目初始化。

# 绑定远程项目,此处<project_id>是在网页上复制的项目概览 ID$ russell init --id <project_id>

初始化成功输出:

Project "XXX" initialized in current directory

运行项目:

# 一句命令挂载我们准备好的数据集,运行此项目$ russell run --data f3fadfadf6ac417e9f20813603187344:data "python run.py"

成功运行提示

一分钟以后就可以在该项目的网页端检查输出啦!

网页任务页查看输出

小记

最后我们可以看到很多经过转化的图像:

三个效果还不错的输出例子

不过可能会有人觉得:你这个图片中间为啥这么模糊呢,感觉很影响效果。如果你看代码的话可以知道我们的AutoEncoder是采集64*64的像素,我们的图片是256*256。我们训练及生成的时候都做了一个截取,把最中间的160*160的区域认定为脸部,将其压缩为64*64。

最终在生成的时候,我们生成的也是64*64的数据。为了显示出来,我们使用opencv变换为160*160替换原图中间的图像。低分辨率转换得来,所以中间的图像有些模糊。

换脸对比

换脸技术是有很多实现方法的,也许AutoEncoder并不是一个效果很好的方案。但我们看到我们实验的效果中的川普脸部还是比较显著的换上了凯奇的一些特征:眉毛变得颜色深一些,眼睛也睁的更大一点显得眼神比较柔和,还有鼻子和笑容都有所改变。

闲谈

换脸的应用早早就有,例如在速度与激情7拍摄中,保罗沃克遭遇车祸使得未完成的拍摄无法由他本人完成。所以最后是替换替身演员的脸部图像最终完成的拍摄(据说渲染所花费的美金高达5000万)。在国内比较知名的还有:

真是难为后期了~

而深度学习使得我们用这些技术的门槛大大下降——相比于5000万美金,你可能只需要一台有可以计算深度学习的显卡的工作站以及足够的时间就可以完成。

但是科技的进步还是会给我们带来一些担忧。在换脸技术上,如果人人能够使用,那就可以低成本制作各种假视频。

我们都知道视频在当前社交媒体下极快的传播速度,“朋友圈”流通的各种小视频非常火爆。如果利用这个技术低门槛地制作低成本假视频,这可能会带来巨大的社会信任危机。你怎么看?

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-02-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏日常学python

爬取《悲伤逆流成河》猫眼信息 | 郭敬明五年电影最动人之作

知道《悲伤逆流成河》上映还是在qq空间看见学弟发了说说,突然想起初中追小四的书,每天看到晚上10点多,昨天看了枪版的《悲伤逆流成河》,整个故事情节几乎和小说一模...

23720
来自专栏人工智能头条

深度 | 图计算系统进展和展望

62140
来自专栏生信宝典

高颜值可定制在线绘图工具-第三版

生信宝典推出之前推出了一系列画图相关文章,包括多种形式的热图、线图、柱状图、箱线图、泡泡图、韦恩图、进化树、火山图、生存分析、共表达分析聚类如等,都是基于R代码...

41350
来自专栏Albert陈凯

OLAP(On-Line Analysis Processing)在线分析处理引擎

OLAP(On-Line Analysis Processing)在线分析处理是一种共享多维信息的快速分析技术;OLAP利用多维数据库技术使用户从不同角度观察数...

41270
来自专栏生信技能树

Bioconductor的质谱蛋白组学数据分析

50850
来自专栏量子位

少年,这有套《街霸2》AI速成心法,想传授于你……

千平 发自 LZYY 量子位 出品 | 公众号 QbitAI ? “ 少年,我看你骨骼精奇,是万中无一的武学奇才。我这有套《街霸2》心法,见与你有缘,就十块钱卖...

43260
来自专栏PPV课数据科学社区

手把手教你学习R语言

随着分析数据的方式在近两年发生了翻天覆地的变化,随着互联网在人们的生活中广泛的普及,人手一部智能机的时代,人们的衣食住行都接上的互联网,这使得数据的获取量得以指...

1.3K80
来自专栏AI科技评论

开发 | 使用 Rodeo 分析总统候选人的推特内容

AI 科技评论按 :本文作者Datartisan,载于其知乎专栏——Datartisan数据工匠。AI 科技评论转载已获得原作者授权。 介绍 选举季已经到来,对...

389100
来自专栏大数据文摘

如何利用机器学习和分布式计算来对用户事件进行聚类

21960
来自专栏AI科技评论

开发 | 一文详解英伟达刚发布的 Tesla V100 究竟牛在哪?

AI科技评论按:很多读者在思考,“我和AI科技评论的距离在哪里?”答案就是:一封求职信。 5 月 11 日,在加州圣何塞举办的的 2017 年度 GPU 技术大...

333130

扫码关注云+社区

领取腾讯云代金券