前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenAI提出能合成高清逼真图像的模型:“我们和GAN不一样!”

OpenAI提出能合成高清逼真图像的模型:“我们和GAN不一样!”

作者头像
崔庆才
发布2019-09-04 15:42:26
6980
发布2019-09-04 15:42:26
举报
文章被收录于专栏:进击的Coder

编者按:风格迁移变装模型这些改变图像属性的任务之前都是GAN的热门话题。现在,OpenAI的研究者们提出了一种新的生成模型,能快速输出高清、真实的图像。以下是论智对OpenAI博客的编译。

这篇文章介绍了我们的新成果——Glow,这是一个可逆的生成模型,其中使用了可反复的1×1卷积网络。2015年,我们曾推出过NICE,它是一种针对复杂高维进行建模的深度学习框架。在可逆模型的基础上,研究人员简化了NICE的网络结构,使模型能生成更加真实的高分辨率图像,并支持高效的采样,能发现可以用来控制数据属性的特征。下面让我们看看这个模型到底怎么玩:

这是年轻貌美的瑟曦。

黑化之后:

沧桑的瑟曦:

除此之外,你还能改变人物头发的颜色、眼睛大小和胡子。接下来,还有另一种玩法,即混合两张图:

碧昂斯和小李子Mix一下,长这样。

这是Glow模型的一个交互式Demo,感兴趣的读者可以移步官网体验试试,支持上传自己的照片调整脸部属性和合成两张图片。

动机

以上是研究者Prafulla Dhariwal和Durk Kingma的面部表情特征变化图。模型在训练时并没有被给予属性标签,但是它学会了一种隐藏空间,在其中特定的方向对应不同特征的变化,例如胡子的茂密程度、年龄、发色等等

生成模型与数据的观察有关,就像面对许多人脸图片,从中学习一种模型,了解数据是如何生成的。学习估计数据生成的过程需要学习数据中所有的结构,并且成功的模型可以合成和数据很相似的输出结果。精确的生成模型可应用的场景非常广泛,例如语音识别、文本分析合成、半监督学习和基于模型的控制。

Glow是一种可逆的生成模型,也可以称作“流式”生成模型,是NICE和RealNVP技术的扩展。目前,流式生成模型的关注度并不如GAN和VAE。

流式生成模型的几个优点有:

  • 确切的隐藏变量推断和对数相似度评估。在VAE中,模型智能大致推断与数据点相对应的隐藏变量的值,而GAN根本就没有能推测隐藏变量的编码器。但是在可逆生成模型中,这一过程能精确地推算出来。这不但能输出一个精确的结果,还能对数据的对数相似度进行优化,而不是之前对数据的下限值优化。
  • 高效的推理和合成。自回归的模型,例如PixelCNN同样是可逆的,但是这种模型的合成结果很难平行化,通常在平行硬件上很低效。而类似Glow的流式生成模型不论在推理还是合成方面都很高效。
  • 为下游任务提供了有用的隐藏空间。自回归模型的隐藏层有着位置的边缘分布,使其更难对数据进行正确操作。在GAN中,数据点经常不能直接表现在隐藏空间中,因为它们没有编码器,可能无法支持数据分布。在可逆生成模型和VAE上就没有这种情况。
  • 对节省内存有重大意义。可逆神经网络的计算梯度应该是恒定的内存量,而不是线性的。

结果

利用这种技术,我们在标准上比较了RealNVP和我们的Glow,RealNVP是在这之前表现最佳的流式生成模型。结果如下:

在含有30000张照片的数据集上训练之后,模型生成的样本

Glow模型能生成非常逼真的高分辨率图像,并且非常高效。模型在NVIDIA 1080 Ti GPU上只用130毫秒(0.13秒)就生成了一张256×256的照片。

在隐藏空间插值

我们还可以在两个随机面孔之间进行插值,利用编码器在两个图片之间进行编码,并从中间点中取样。注意,输入的是随机面孔,并不是模型中的样本,所以这也证明了模型可以支持完全的目标分布。

变脸过程十分流畅

在隐藏空间中处理

无需标签,我们就可以训练一个流式模型,然后利用学习到的隐藏表示进行下游任务。这些语义分布可以改变头发的颜色、图片风格、音调高低或者文本情感。由于流式模型拥有完美的编码器,你可以编码输入并且计算输入的平均隐藏向量。二者间向量的方向可以用来将输入向该方向改变。

这一过程只需要少量的标记数据,并且模型一训练完就能完成。在此之前,用GAN做这些需要训练一个单独的编码器,而VAE需要保证解码器和编码器适用于分布数据。其他类似CycleGAN直接学习表示变化的函数,也需要重新训练每一个变化。

代码语言:javascript
复制
# Train flow model on large, unlabelled dataset X

m = train(X_unlabelled)

# Split labelled dataset based on attribute, say blonde hair

X_positive, X_negative = split(X_labelled)

# Obtain average encodings of positive and negative inputs

z_positive = average([m.encode(x) for x in X_positive])

z_negative = average([m.encode(x) for x in X_negative])

# Get manipulation vector by taking difference

z_manipulate = z_positive - z_negative

# Manipulate new x_input along z_manipulate, by a scalar alpha \in [-1,1]

z_input = m.encode(x_input)

x_manipulated = m.decode(z_input + alpha * z_manipulate)

用流式模型改变属性的简单代码

进步之外

相比之前的RealNVP,我们的进步之处主要是一个可逆的1×1卷积,以及删减掉其他元素,简化了模型。

RealNVP架构由两种图层组成:具有棋盘蒙版的图层和通道蒙版的图层。我们去除了棋盘样的图层,简化了结构。剩下的通道类型的蒙版起到以下作用:

  • 在通道维度中改变输入的顺序
  • 将输入分成A和B两部分,从特征维度的中部开始
  • 将A输入到一个较浅的卷积神经网络。根据神经网络的输出线性地对B进行转换
  • 连接A和B

可以看到我们的1×1卷积在性能上有大大的提升

除此之外,我们取消了批归一化,将它替换成激活归一图层。该图层利用基于数据的初始化,简单地转换并缩放激活,该初始化在给定初始小批量数据的情况下将激活规范化。

训练规模

我们的结构结合了多种优化,例如梯度检查点,可以让我们在较大规模上训练流式生成模型。我们使用Horovod轻松地将模型在多个机器上进行了训练;文章开头的Demo用了8个GPU。

未来方向

这篇研究表明,训练流式模型生成真实的高清图像是很有潜力的,并且经过学习的隐藏表示可以很容易用于下流任务。我们对未来工作的方向有以下计划:

1. 在可能性上比其他模型更有竞争力

在对数相似度上,自适应模型和VAE的表现比流式模型要好,但是他们在采样和精确推理上不如流式模型。未来我们会尝试结合这几种模型,以弥补不足。

2. 改进结构,提高计算和参数效率

为了生成逼真的高分辨率图像,人脸生成模型利用大约200M的参数和将近600个卷积层,训练起来成本很高。但是更浅的网络表现得又不好。使用自注意力结构或者进行渐进式训练可能会让训练成本更便宜。

最后欲知更多细节,请查看原论文:d4mucfpksywv.cloudfront.net/research-covers/glow/paper/glow.pdf

来源:OpenAI

编译:Bing

原文地址:blog.openai.com/glow/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击的Coder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 动机
  • 结果
  • 在隐藏空间插值
  • 在隐藏空间中处理
    • 无需标签,我们就可以训练一个流式模型,然后利用学习到的隐藏表示进行下游任务。这些语义分布可以改变头发的颜色、图片风格、音调高低或者文本情感。由于流式模型拥有完美的编码器,你可以编码输入并且计算输入的平均隐藏向量。二者间向量的方向可以用来将输入向该方向改变。
    • 进步之外
    • 训练规模
    • 未来方向
    相关产品与服务
    语音识别
    腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档