【干货】用反卷积网络合成超逼真人脸:理解深度学习如何思考

【新智元导读】本文中介绍的深度学习架构能够基于选定的人的身份、情绪和方位,生成真实的脸部图像。你只要给网络提供你希望描绘的东西的原始参数,模型就能完成,但是生成的结果却是十分有趣的。

网络本身看起来能学习3D空间的概念,以及它所描绘的物体结构。并且,由于它生成的是图像而不是数字,所以它也让我们更好地理解了这一网络是如何“思考”的。真正让人惊讶的是,它似乎在根据嘴部张开或者关闭来学习脸部特征,你能看到脸颊的移动、眼球的移动等等。未来,你可以使用这一模型来模拟复杂的表情和变化。

Flynn Michael:我最受欢迎的关于深度学习的一篇论文是《利用卷积网络合成椅子、桌子和汽车》(Learningto Generate Chairs, Tables, and Cars with Convolutional Networks)。它的概念非常简单——输入想让它合成的东西的参数,它就会照做——出来的结果非常有趣。这个网络看起来是它能自己学习有关3D空间的概念以及它要画的物体的结构,由于它要生成的是图像而不是数字,它能让我们对网络如何“思考”有一个更直观的理解。 合成椅子的视频

不久前我偶然发现了Radboud人脸数据库,于是想知道类似的技术能不能用于人脸的合成和修改。

结果相当的激动人心!

网络架构

我采用了椅子论文中“1s-S-deep”模块的一个版本。在这个网络中,输入有关椅子“风格”的重要编码和方向、相机位置等参数,经过几个全连接层,在交给反卷积网络前得到要画什么的表征,最后画出图像并预测分割掩膜。在合成人脸时,我们所做的事情相似,不过我们完全省略了分割网络(因为我们没有那些的人工标志),我们输入的是人的身份、情绪和方向参数。

图表:用于合成椅子的模型(来源:Dosovitskiy et al.)

这里的反卷积网络和其它语义分割或合成模块类似。它本质上是用于分类网络的典型运算的反转。通常卷积网络包含一些卷积层,跟着是用于减少输入维度的池化层(pooling layer)。对反卷积网络来说,我们要做反向操作——先是对输入进行反池化(a.k.a. unpooling),然后应用卷积运算。

为了说明这点,下图是Noh et al的论文中有关语义分割的反卷积网络的图示:

从本质上来说,当我们反池化时,就在画布网格上打上了一些点,然后利用卷积核当做画笔涂开这些点。

我基本上能够最大化地直接应用论文上的架构,但为了得到更高分辨率的图像,同时不耗尽CPU内存,我得用每层的卷积核数量,并使用 batch normalization,以确保 Leaky ReLU 的激活。该模型在建于Theano和TensorFlow的高层深度学习框架Keras上实现。

变脸

如你所见,这个网络能根据身份和情绪参数流畅、平滑地改变脸的形态。

这种变脸相当逼真,而且也不需要依赖人为的方法例如在每个例子间进行淡化。但真正令我惊奇的是,它似乎能以某种方式“学习”脸的特征——例如,嘴巴张开和闭合时,你会看到颧骨也在移动,同时眉毛也上下变化,等等。

我们也可以把它拆解开来,看看分别改变身份和情绪时,脸会怎样变动。

到目前为止,我放弃了研究“方向”参数对变脸的影响。很不幸,这个网络还没法学会根据方向变脸。这可能是因为数据集中可得的方向参数还不足以让网络形成对3D空间的理解(数据集里只有间隔45°的方向数据),不过它选了简单些的路径,学会了根据不同的方向画脸。

这个网络所做的非常有趣而且可视化,尤其是当它尝试画下它没见过的东西,例如人的后脑勺时。也许存在其它的方法能让这个网络创造出新的、完全不对头的,但仍然是非常有趣的图像。

使用“非法”输入

到目前为止,我们输入给网络的参数多少都算是“合法”的。使用的身份和情绪矢量都使用单位长度(即:身份/情绪的一致性混合的表征),方向也一直用有效的角度来表征。那么,假如我们打破这些规则,向网络里输入一些随机值,会有怎样的结果呢?

结果相当可怕:

由于不知道怎样解码无效的方向数值,以及要同时处理很多的身份和情绪数据,网络开始以离奇的方式把脸伸长、扭曲。

通过随机改变框架参数,我们也制作了这样一个动画:

很恐怖。

用部分训练的网络合成图像

最近,我们也能利用部分训练网络创作更有趣的图像。例如,下面是一些使用AdaGrad的部分训练网络制作的随机图像:

我非常感兴趣的是,不同优化器会画出怎样不同的图像,尤其是在训练的早期阶段。例如,使用随机倾斜度的部分训练网络所合成的图像,更像是一些抽象画,而非人脸。

我想用这些网络做更多测试,看看它们是如何学习合成图像,以及不同优化器的影响(以及为什么会如此),不过我会把这些留到以后的文章中。

本文的代码可以在这里得到:https://github.com/zo7/facegen

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2016-10-02

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

【AI 技术精选】神经网络结构深入分析和比较

作者 | Eugenio Culurciello 翻译 | AI科技大本营(rgznai100) 深度神经网络和深度学习是既强大又受欢迎的算法。这两种算法取得的...

36460
来自专栏机器之心

业界 | 腾讯 AI Lab 正式开源PocketFlow,让深度学习放入手机!

项目访问地址:https://github.com/Tencent/PocketFlow

15230
来自专栏大数据文摘

我在谷歌大脑见习机器学习的一年:Node.js创始人的尝试笔记

18430
来自专栏人工智能

如何提高深度学习的性能

您可以使用这20个提示,技巧和技术来解决过度拟合问题并获得更好的通用性

71470
来自专栏机器之心

深度神经网络全面概述:从基本概念到实际模型和硬件基础

选自arxiv 作者:Joel Emer等 机器之心编译 深度神经网络(DNN)所代表的人工智能技术被认为是这一次技术变革的基石(之一)。近日,由 IEEE F...

562190

自然语言处理指南(第3部分)

在阅读之前,请一定要查看第 1 部分和第 2 部分!

40760
来自专栏AI研习社

智能手机哪家强?实时人像分割大比拼!

近年来,各种图像效果越来越受到人们的关注。散景一个很受欢迎的例子是在图像的非聚焦范围进行虚化。这个效果由快速镜头大光圈实现。不幸的是,手机摄像头很难实现这种效果...

25520
来自专栏机器之心

观点 | AutoML、AutoKeras......这四个「Auto」的自动机器学习方法你分得清吗?

让我们先来看一个简短的童话故事… 从前,有一个魔法师,他使用一种无人再使用的编程语言,在一种无人再使用的框架下训练模型。一天,一位老人找到他,让他为一个神秘的...

18140
来自专栏AI研习社

股票跌跌不休,不如用神经网络来预测一下未来走势

机器学习和深度学习已经成为量化对冲基金常用最大化其利润的常用的新的有效策略。 作为一名人工智能和金融爱好者,这是令人振奋的消息,因为它结合了我感兴趣的两个领域。...

12720
来自专栏机器学习算法工程师

数据挖掘中的利器--XGBoost理论篇

XGBoost是各种数据挖掘或机器学习算法类比赛中每个团队都会使用且精度相对最好的算法之一(Deep Learning算法除外)。也就是说,对于刚转向机器学习领...

52290

扫码关注云+社区

领取腾讯云代金券