Abstract
Results:We present a new method for synthesizing high-resolution photo-realistic images from semantic label maps using conditional generative adversarial networks (conditional GANs). Aims:Conditional GANs have enabled a variety of applications, but the results are often limited to low-resolution and still far from realistic. Results:In this work, we generate 2048 × 1024 visually appealing results with a novel adversarial loss, as well as new multi-scale generator and discriminator architectures. Furthermore, we extend our framework to interactive visual manipulation with two additional features. Method:First, we incorporate object instance segmentation information, which enables object manipulations such as removing/adding objects and changing the object category. Second, we propose a method to generate diverse results given the same input, allowing users to edit the object appearance interactively. Conclusions:Human opinion studies demonstrate that our method significantly outperforms existing methods, advancing both the quality and the resolution of deep image synthesis and editing.
介绍:
由于几何体、材料和光传输必须显式模拟,因此使用标准图形技术对具有照片真实感的图像进行渲染是必要的。尽管现有的图形算法在这项任务上表现出 色,但构建和编辑虚拟环境既昂贵又耗时。这是因为我们必须明确地模拟世界 的方方面面。如果我们能够使用从数据中学习到的模型来绘制具有照片真实感的图像,我们就可以将图形绘制过程转化为一个模型学习和推理问题。然后, 我们可以通过在新数据集上训练模型来简化创建新虚拟世界的过程。我们甚至可以通过允许用户简单地指定整体语义结构而不是对几何体、材质或照明进行建模,来更容易地定制环境。
在本文中,我们讨论了一种从语义标签图生成高分辨率图像的新方法。这种方法有着广泛的应用。例如,
- 我们可以使用它来创建用于训练视觉识别算法的合成训练数据,因为为所需场景创建语义标签比生成训练图像容易得多。
- 利用语义分割的方法,我们可以将图像转换成语义标签域,编辑标签域中的对象,然后再将其转换回图像域。这种方法还为更高层次的图像编辑提供了新的工具, 例如:在图像中添加对象或更改现有对象的外观。
为了从语义标签合成图像,可以使用 pix2pix 方法,它利用了有条件设置的生成性对抗网络(CGAN)。最近,Chen 和 Koltun[5]提出,对抗训练对于高分辨率图像生成任务来说可能是不稳定的,并且容易失败。取而代之的是,他们采用了一种改进的感知损失 [11,13,22]来合成图像,这些图像虽然分辨率很高,但往往缺乏精细的细节和 逼真的纹理。
在这里,我们解决了上述最先进方法的两个主要问题:(1)用 GAN 生成高分辨率图像的困难性[21];以及(2)在之前的高分辨率结果中缺少细节和真实感纹理[5]。我们证明,通过一个新的、健壮的对抗性学习目标,以及新的多尺度生成器和鉴别器架构,我们可以合成 2048x1024 分辨率、具有照片真实感的图像,这比以前的方法计算的图像更具视觉吸引力[5,21]。我们首先只通过对抗性训练获得结果,而不依赖于任何手工制作的损失[44]或目标是感知损失 [11,22](图 9c、10b)的预训练网络(例如 VGGNet[48])。然后我们证明,如果有预训练网络可用,在某些情况下,添加来自预训练网络的感知损失可以稍微改善结果(图 9d,10c)。两个结果在图像质量方面都大大超过了之前的工 作。
此外,为了支持交互式语义操控,我们在两个方向上延展了我们的方法。
首先,我们使用实例级(instance-level )的对象分割信息,它可以将同一类别中的不同对象实例分开。这样可以进行灵活的对象操作,例如:添加/删除对象与更改对象类型。
其次,我们提出了一种在相同的输入标签图上生成不同结果的方法,允许用户交互式地编辑同一对象的外观。
我们与最先进的视觉合成系统[5,21]进行了比较,结果表明我们的方法在定量 评估和人类感知研究方面都优于这些方法。我们还对训练目标和实例级分割信 息的重要性进行了消融研究。除了语义操控之外,我们在 edge2photo 应用程序 上测试我们的方法(图 2,13),这表明了我们方法的普遍适用性。
(2)相关工作
生成性对抗网络
我们提出了一种新的粗到精的生成器和多尺度鉴别器结构,适用于更高分辨率的有条件图像生成。
图像到图像的翻译
许多研究者利用对抗性学习进行图像到图像的翻译[21],其目标是将输入图像 从一个域转换到另一个域,并将输入-输出图像对作为训练数据。与 L1 损失函 数(通常会导致图像模糊)[21,22]相比,对抗性损失函数[16]已成为许多图像 到图像任务的流行选择[10,24,25,32,41,46,55,60,66]。这是因为鉴别器可以学习一个可训练的损失函数,并自动适应目标域中生成图像与真实图像之间的 差异。例如,最近的 pix2pix 框架[21]将有条件的图像 GAN[39]用于不同的应 用,例如:将 Google 地图转换为卫星视图,以及从用户草图生成猫。在没有训 练对的情况下,已经提出了各种方法来学习图像到图像的翻译 [2,34,35,47,50,52,56,65]。
最近,Chen 和 Koltun[5]提出,由于训练的不稳定性和优化问题,有条件 GAN 可能很难生成高分辨率图像。为了避免这一困难,他们使用了基于感知损失的直接回归目标[11,13,22],并产生了第一个可以合成 2048×1024 幅图像的模 型。生成的结果是高分辨率的,但通常缺少精细的细节和逼真的纹理。基于他 们的成功,我们证明了使用我们的新颖的目标函数以及新的多尺度生成器和鉴别器,我们不仅在高分辨率图像上稳定了条件 GAN 的训练,而且取得了比 Chen 和 Koltun 更好的结果[5]。并列比较清楚地显示了我们的优势(图 1、9、8、 10)。
深度视觉操作
最近,深度神经网络在各种图像处理任务中取得了令人满意的结果,例如:风格迁移[13]、修复[41]、着色[58]和恢复[14]。然而,这些工作大多缺乏一个 界面,供用户调整当前结果或探索输出空间。为了解决这个问题,朱等[64]基 于 GAN 学习的先验知识,开发了一种编辑对象外观的优化方法。最近的工作 [21,46,59]还提供了用户界面,用于根据颜色和草图等低级线索创建新颖的 图像。所有先前的工作都报告了低分辨率图像的结果。我们的系统与过去的工 作有着相同的精神,但是我们专注于对象级语义编辑,允许用户与整个场景交互并操纵图像中的单个对象。因此,用户可以用最少的努力快速创建一个新场 景。我们的界面灵感来自于以前的数据驱动图形系统[6,23,29]。但我们的系统 允许更灵活的操作,并产生高分辨率的实时结果。
(3)实例级图像合成
我们提出了一个有条件的对抗性框架来从语义标签图生成高分辨率的、具有照片真实性的图像。我们首先回顾一下我们的基准模型 pix2pix(见 3.1)。然 后,我们描述了我们如何使用改进的目标函数和网络设计(见 3.2)。接下 来,我们使用额外的实例级对象语义信息来进一步提高图像质量(见 3.3)。 最后,我们介绍了一个实例级的特征嵌入方案,以更好地处理图像合成的多模态特性,使交互式对象编辑成为可能(见 3.4)。
(3.1)pix2pix 基线
pix2pix 方法[21]是用于图像到图像转换的有条件 GAN 框架。它由一个生成器 G 和一个鉴别器 D 组成。在我们的任务中,生成器 G 的目标是将语义标签图翻译成具有真实感的图像,而鉴别器 D 的目标是区分真实图像和翻译图像。该框架 在有监督的环境中运行。换句话说,训练数据集被作为一组对应的图像{(si, xi)},其中 si 是语义标签映射,xi 是对应的自然照片。条件 GAN 的目标是通 过以下 minimax 博弈,在给定输入语义标签映射的情况下,对真实图像的条件分布进行建模:
其中目标函数 LGAN(G,D)由下式给出:
pix2pix 方法采用 U-Net[43]作为生成器,基于补丁的全卷积网络[36]作为鉴别器。鉴别器的输入是语义标签图和相应图像的信道连接(channel-wise concatenation)。然而,在 Cityscapes[7]上生成的图像的分辨率高达 256x256。我们尝试直接应用 pix2pix 框架生成高分辨率图像,但发现训练不稳 定,生成的图像质量不理想。因此,我们将在下一小节中描述如何改进 pix2pix 框架。
(3.2)改善图像真实性和分辨率
我们改进了 pix2pix 框架,使用了一个从粗到精(coarse-to-fine)生成器, 一个多尺度的鉴别器结构和一个健壮的对抗性学习目标函数。 Figure3:从粗到精的生成器
我们将生成器分解为两个子网络:G1 和 G2。我们称 G1 为全局生成网络,G2 为 局部增强网络。然后由元组 G={G1,G2}给出生成器,如图 3 所示。全局生成器 网络以 1024x512 的分辨率工作,并且本地增强器网络输出分辨率为上一个输出 尺寸的 4x 的图像(沿每个图像维度 2x)。为了合成更高分辨率的图像,可以 使用额外的局部增强网络。例如,发生器 G={G1,G2}的输出图像分辨率为 2048x1024,G={G1,G2,G3}的输出图像分辨率为 4096x2048。
我们的全局生成器是建立在约翰逊等人提出的架构上[22],这已经被证明在高 达 512x512 的图像上进行神经网络风格迁移是成功的。它由 3 个部分组成:卷积前端 G1(F)、残差块 G1(R)和转置卷积后端 G1(B)。将分辨率为 1024x512 的语义标签图依次传递到 3 个组件,以输出分辨率为 1024x512 的图像。
局部增强子网络也包括 3 个部分:卷积前端 G2(F)、残差块集 G2(R)和转置卷积后端 G2(B)。送给 G2 的输入标签图的分辨率为 2048x1024。与全局生成网络不 同,残差块 G2(R)的输入是两个特征图的元素和:G2(F)的输出特征图和全局生成网络 G1(B)后端的最后一个特征图。这有助于整合 G1 到 G2 的全局信息。
- 在训练过程中,我们首先训练全局生成器,
- 接着,按照分辨率顺序训练局部增强器。
- 然后我们一起微调所有网络。
我们使用此生成器设计来有效地整合整体与局部信息,以完成图像合成任务。我们注意到,这样的多分辨率流水线在计算机视觉中是一种成熟的实践[4],两个尺度通常就足够了[3]。在最近的无条 件 GAN[9,19]和有条件图像生成[5,57]中可以找到类似的想法,但架构有所不 同。
多尺度鉴别器 Multi-scale discriminators
高分辨率图像合成对 GAN 鉴别器的设计提出了很大的挑战。为了区分高分辨率的真实图像和合成图像,鉴别器需要有大的接收野。这将需要一个更深的网络或更大的卷积核,这两者都会增加网络容量并可能导致过度拟合。而且,这两 种选择都需要更大的内存占用来进行训练,而这已经是生成高分辨率图像的稀缺资源。
为了解决这个问题,我们建议使用多尺度鉴别器。我们使用 3 个具有相同网络结构但在不同图像尺度下工作的鉴别器。我们将其称为 D1、D2 和 D3。具体地说,我们将真实和合成的高分辨率图像降低 2 倍和 4 倍,以创建 3 个比例的图像金字塔。然后训练鉴别器 D1、D2 和 D3 分别在 3 个不同的尺度上区分真实图像和合成图像。虽然鉴别器具有相同的结构,但在最粗尺度下工作的鉴别器具有最大的感受野。它具有更全局的图像视图,并且可以引导生成器生成全局一 致的图像。另一方面,最精细尺度的鉴别器鼓励生成器生成更精细的细节。这也使得训练粗到精生成器变得更容易,因为将低分辨率模型扩展到更高分辨率只需要在最精细的级别添加鉴别器,而不是从头开始重新训练。在没有多尺度鉴别器的情况下,我们观察到在生成的图像中经常会出现许多重复的图案。
有了鉴别器,等式(1)中的学习问题就变成了一个多任务学习问题:
在无条件 GANs 中,已经提出了在同一图像尺度下使用多个 GAN 鉴别器[12]。 Iizuka 等人[20] 在有条件 GANs 中加入一个全局图像分类器来合成全局一致的内容用于图像修复。在这里,我们将设计扩展到不同图像尺度的多个鉴别器, 以建立高分辨率图像的模型。
改善的对抗性损失函数
我们在等式(2)中通过加入基于鉴别器的特征匹配损失函数来改善 GAN 损失函数。这种损失函数稳定了训练,因为生成器必须在多个尺度上产生自然统计。 具体地说,我们从鉴别器的多个层中提取特征,并学习对这些来自真实图像和合成图像的中间表达进行匹配。为了便于表示,我们将鉴别器 Dk 的第 i 层特征提取器表示为 Dk(i)(从输入到 Dk 的第 i 层)。特征匹配损失 LFM(G,Dk)计算如下
式中,T 是总层数,Ni 表示每层中的元素数。我们的 GAN 鉴别器特征匹配损失与感知损失有关[11,13,22],这已被证明对图像超分辨率[32]和风格迁移 [22]有用。在我们的实验中,我们讨论了如何将判别特征匹配损失和感知损失结合起来,以进一步提高性能。我们注意到 VAE-GANs[30]中也使用了类似的损失
我们的全部目标是将 GAN 损失和特征匹配损失结合为:
其中,λ控制这两项的重要性(权重)。注意,对于特征匹配损失 LFM,Dk 只是作为特征提取器,并没有使损失 LFM最大化。
(3.3)使用实例图 Using Instance Maps
现有的图像合成方法只利用语义标签图[5,21,25],其中每个像素值代表像素的对象类。此图不区分同一类别的(不同)对象。另一方面,实例级语义标签图包含每个单独对象的唯一对象 ID。要合并实例图,可以直接将其传递到网络中,或将其编码为一个 one-hot 向量。然而,这两种方法在实践中都很难实现,因为不同的图像可能包含相同类别的不同数量的对象。或者,可以为每个类预先分配固定数量的信道(例如,10 个),但是当信道数目设置得太小时, 这种方法就失败了,而当信道数太大时则浪费内存。
相反,我们认为实例图提供的最关键的信息(在语义标签图中不可用)是对象边界。例如,当同一类的对象彼此相邻时,单看语义标签图就无法将它们区分开来。这对于街道场景尤其如此,因为许多停放的汽车或步行的行人经常是相邻的,如图 4a 所示。然而,使用实例图,分离这些对象变得更容易。
因此,为了提取这些信息,我们首先计算实例边界图(图 4b)。在我们的实现中,如果实例边界图中的一个像素的对象 ID 与它的 4 个邻居中的任何一个不同,那么该像素为 1,否则为 0。实例边界图然后与语义标签图的 one-hot 向量表示相连接,并输入到生成器网络中。类似地,鉴别器的输入是实例边界图、 语义标签图和真实/合成图像的信道级连接。图 5b 显示了一个使用对象边界来演示改进的示例。我们在第四部分中的用户研究还显示了使用实例边界图训练的模型渲染出更具有照片真实性的对象边界。
(3.4)学习实例级特性嵌入 Learning an Instance-level Feature Embedding
从语义标签图合成图像是一个简单的映射问题。一个理想的图像合成算法应该能够使用相同的语义标签图生成不同的、真实的图像。最近,有几项工作学习在给定相同输入[5,15]的情况下产生固定数量的离散输出,或者合成由编码整个图像的潜码控制的不同模式[66]。虽然这些方法解决了多模态图像合成问题,但它们不适合我们的图像处理任务,主要有两个原因。首先,用户无法直观地控制模型将生成哪些类型的图像[5,15]。其次,这些方法关注全局颜色和纹理的变化,不允许对生成的内容进行对象级控制。
为了生成不同的图像并允许实例级控制,我们建议添加额外的低维特征通道作为生成器网络的输入。我们证明,通过处理这些特征,我们可以灵活地控制图像合成过程。此外,请注意,由于特征通道是连续的量,我们的模型原则上能够生成无限多个图像。
为了生成低维特征,我们训练一个编码器网络 E,以找到对应于图像中每个实例的地面真实目标的低维特征向量。我们的特征编码器架构是一个标准的编码 - 解码器网络。为了确保每个实例中的特性是一致的,我们在编码器的输出中添加一个实例级平均池层,以计算对象实例的平均特性。然后将平均特性广播到实例的所有像素位置。图 6 显示了编码特性的一个示例。
我们用公式(5)中的 G(s, E(x))代替 G(s)并与生成器和鉴别器一起训练编码器。在训练完编码器后,我们在训练图像中的所有实例上运行它,并记录得到的特征。然后我们对每个语义类别的这些特征进行 K-均值聚类。因此, 每个簇对特定样式的特征进行编码,例如,道路的沥青或鹅卵石纹理。在推理时,我们随机选取一个聚类中心作为编码特征。这些特性与标签映射相连接, 并用作生成器的输入。我们试图在特征空间上实施 Kullback-Leibler 损失 [28],以便在最近的工作[66]中使用更好的测试时间采样,但发现用户直接调整每个对象的潜在向量非常麻烦。相反,对于每个对象实例,我们提供 K 个模式供用户选择。