亚马逊AWS官方博客

结合深度学习网络 (GAN 和 Siamese) 生成逼真的高品质图像

由于深度学习依靠用于训练它的数据的数量和质量,因此公司花费了大量资金来获得良好的图像数据。通常,公司会使用昂贵的人工注释或其他劳动密集型任务,如拍摄大量产品或人员照片。这种方法的成本高昂且不能扩展。训练计算机以生成高品质图像可大大降低成本并推动业务增长。

在这篇文章中,我用简单的术语解释由我的一些 Amazon 同事共同撰写的标题为“从语义上分解生成式对抗网络的潜在空间”的学术论文中介绍的概念。本文介绍了生成式对抗网络 (GAN)、Siamese 网络 (SN) 的实际应用,以便能够从语义上分解 GAN (SD-GAN)。

GAN 和 SN 是相对高级的深度学习符号,您可以单独使用 GAN 和 SN,也可以将其与其他深度学习符号结合使用来解决实际问题。通过将这些符号结合使用,AI 应用程序能够解决更多的难度更大且更复杂的业务问题。例如,面向 AI 的主要难题之一是缺少带注释或标记的数据。高品质的、带注释的数据的成本非常高,因此仅大型公司或资金充足的公司能够获得此类数据。通过使用深度学习方法 (如本文中介绍的那些方法),可让更多的公司从几个示例生成高品质数据。

我将说明作者如何使用 GAN、SN 和 SD-GAN 分析实际图像,并使用它们生成带同一人员或对象的受控变体的“假”图像。根据您设置的参数或“观察属性”,这些假图像可能看起来像是从不同的视角拍摄的、使用了不同的光照或具有更高的分辨率或其他类似变体。通过使用本文中介绍的图像分析方法,您可以创建出非常真实的图像,这些图像看起来像已使用 Photoshop 专门处理过或是使用 3D 模型创建的。

图 1:使用本文中介绍的方法生成的示例。每行均显示同一面部的变体。每列均使用相同的观察属性。

什么是生成式对抗网络?

生成式对抗网络 (GAN) 是适用于神经网络的相对较新的深度学习架构。它们是由蒙特利尔大学的 Ian Goodfellow 与其同事在 2014 年共同开发的。一个 GAN 训练两个不同的网络,二者彼此针对,因此它们具有对抗性。一个网络通过拍摄一个实际图像并尽可能多地修改该图像来生成图像 (或任何其他示例,如文本或语音)。另一个网络尝试预测图像是“假”还是“真”。第一个网络 (称为“G 网络”) 学会生成 更佳的图像。第二个网络 (称为“D 网络”) 学会辨别 真假图像。其辨别能力随时间的推移不断增强。

例如,G 网络可能向人脸添加太阳镜。D 网络获得一组图像,其中一些是戴着太阳镜的真实的人,一些是 G 网络向其添加太阳镜的人。如果 D 网络能够辨别假图像和真图像,则 G 网络会更新其参数以生成更好的假太阳镜。如果 D 网络被假图像所欺骗,则它会更新其参数以更好地判别真假太阳镜。竞争改善了这两个网络。

就我们的目的而言,我们主要关注 G 网络。生成可欺骗人或其他 AI 应用程序的“假”图像的能力是一个巨大的商业胜利。

什么是 Siamese 网络?

Siamese 网络 (SN) 也是协同工作的两个网络。但与 GAN 不同的是,这两个网络在竞争时是等同的且彼此工作。它们比较这两个网络在两个不同输入上的输出并衡量其相似性。

例如,一个 SN 可以验证两个签名是否由同一人书写。或者,一个 SN 可以检查两个提出问题的句子是否问的是同一问题。“几点了?”“现在几点钟了?”是同一个意思,但“你愿意嫁给我吗?”“你可以背我吗?” 是不同的意思。SN 采用第一个输入 X1(在我们的示例中为一个句子) 并将其转换为数字的向量,然后使用该向量测量与第二个输入 X2 的输出的距离。

您可以输入文本或其他类型的数据,如图像。在本文中,研究员使用 SN 架构来确定两个图像是否描述具有变体的同一个人 (或对象)。

什么是从语义上分解的 GAN?

如果您想使用对象或人员的特定图像,并且只想更改图像的某些方面 (如角度或光照),该怎么办?换言之,您不希望生成假图像,但想更改原始图像的某些方面。标准 GAN 可以生成一张假鞋图片,此图片似乎是从与原始图片不同的角度拍摄的。从语义上分解的 GAN (SD-GAN) 可以从其他受控角度生成一张原鞋图片。SD-GAN 可以学会跨无限数目的类 (例如,身份、对象或人员) 以及跨许多变体 (例如,角度、光照条件、彩色与黑白色或附件) 生成图像。只要您在数据集中包含许多这样的类和变体,SD-GAN 就会学会生成原始图像的逼真变体。例如,在本文中,作者使用一个包含 100 万个名人图像的数据集,其中包括多个带每个名人的不同变体的图像。


图 2:依次将具有相同个人 (Zi) 和不同环境观察结果 (Zo) 的 SD-GAN 架构提供给 Siamese 生成器 (G) 和 Siamese 辨别器 (De)。其输出将转换为二进制结果,这将指示这些图像是否为同一个人。

如何开始使用这些架构?

除非您之前有使用基本深度学习网络的经验,否则可能难以立即开始使用这些高级网络架构。但不要被吓住。要开始使用,您可以先熟悉在较新的 GAN 架构中使用的多个基本深度学习符号。首先,运行笔记本教程,如 Apache MXNet GitHub 存储库中的那些教程。GAN 教程特别有用。如果您更喜欢视频,请观看在线课程,如 fast.aitwitch 上的实时编码

补充阅读

了解如何使用 Apache MXNet 和 Apple Core ML 将机器学习引入 iOS 应用

作者简介

Guy Ernest 是 Amazon AI 的首席解决方案架构师。 他有一个令人非常兴奋的机会来帮助塑造和践行策略,以构建思想共享并广泛使用适用于 AI、机器学习和深度学习使用案例的 Amazon 云计算平台。在空闲时间,他喜欢与妻子和家人呆在一起,收集一些令人尴尬的故事,然后在谈论 Amazon 和 AI 的未来时进行分享。